Jestem nowy w tej zmianie stosu gamedev, ale wcześniej korzystałem ze stron matematyki i cs.
Tak więc biorę udział w konkursie na stworzenie sztucznej inteligencji dla węża, który będzie konkurował z czterema innymi wężami w 5-minutowych rundach, w których zasady są bardzo podobne do tradycyjnej gry w węża Nokia, z tym wyjątkiem, że jest pięć węży, plansza ma wymiary 30 x 30 i są wiele małych przeszkód na polu.
Podobnie jak gra Nokia, twój wąż rośnie, gdy dojdziesz do owocu, a jeśli wpadniesz na siebie, kolejnego węża lub ścianę, umrzesz. Gra działa z 30 ms opóźnieniem między ruchami, a serwer wysyła nowy stan gry co 50 ms, który kod musi przeanalizować, a co nie, i wyprowadzić następny ruch.
Zwycięzcą zostaje wąż, który miał najdłuższą długość w dowolnym momencie gry. Przerwanie remisu zależy od zabójstw.
Do tej pory zaimplementowałem wyszukiwanie wykresów A * z każdego węża, aby ustalić, czy mój wąż jest najbliżej jabłka, a jeśli tak, to idzie po jabłko. W przeciwnym razie stworzyłem drobny algorytm, aby określić najbardziej opróżniony obszar planszy, do którego dąży mój wąż, aby przewidzieć następne jabłko.
Poza tym mam kilka drobnych testów przeżycia, aby upewnić się, że mój wąż nie wpadnie w pułapkę, której nie może wydostać się, a jeśli utknie, mam coś, co da mu większą szansę na wydostanie się.
...
W każdym razie przetestowałem mojego węża na serwerze testowym i robi to całkiem dobrze. Ogólnie rzecz biorąc, moja strategia polegająca na szukaniu jabłka tylko wtedy, gdy jest to pewne i znajdowaniu przestrzeni, gdy nie jest, sprawia, że rośnie szybciej niż jakiekolwiek inne węże (niektóre węże robią coś podobnego, ale często po prostu przechodzą do środka lub rogu), czasami wygrywa te gry próbne, ale częściej niż ten sam wąż, który wydaje się mieć przewagę nad przeżywalnością (mój wąż rośnie szybciej, ale potem umiera, a ten inny wąż powoli miota i wygrywa z konsekwencją.
Zastanawiałem się więc nad pomysłami, które ktoś mógłby spróbować ulepszyć mojego węża. A może pomysły na nowe podejście. Moje funkcje i klasy są dobre, więc zmiany, które mogą wydawać się drastyczne, nie powinny być takie złe. Zachęcam do wszystkich pomysłów.
jakieś pomysły?
Wąż powinien dostosować swoją strategię do obecnej długości.
Bardzo długi wąż może wykorzystywać swoje ciało do ogrodzenia przeciwników. Oznacza to, że powinien wykonać pieczęć ze ścianą.
Jeśli wąż podróżuje na wschód, z jabłkiem na północny wschód od niego, powinien jechać aż do ściany, zanim skręci na północ, więc możliwe trasy dla innych węży są poważnie ograniczone.
Ten wąż z głową C powinien skręcić na północ na e9, a nie na e8, aby każdy przeciwnik pod nim został uwięziony i nie był w stanie zjeść żadnych jabłek, które pojawią się powyżej linii „e”.
Im większy obszar, który można odciąć i im dłużej można go trzymać, tym lepiej.
źródło