Projektuję sieciową turową strategię walki floty kosmicznej 3D-6DOF, która w dużej mierze opiera się na dostosowaniu statku. Pozwól, że wyjaśnię trochę grę, ponieważ musisz dowiedzieć się o niej trochę, aby postawić pytanie.
Moim celem jest możliwość stworzenia własnej floty statków o niestandardowych kształtach i dołączonych modułach (śmigła, belki ciągnika ...), które miałyby zalety i wady każdego statku, dzięki czemu masz wiele różnych rozkładów floty. Np. Długi statek z dwoma śmigłami z boku pozwoliłby mu swobodnie obracać się wokół tego samolotu, większe statki poruszałyby się powoli, chyba że umieścisz dużo śmigieł z tyłu (w związku z tym zużywając więcej punktów konstrukcyjnych i energii podczas ruchu, i to będzie poruszaj się tylko szybko w tym kierunku.) Planuję zrównoważyć całą grę wokół tej funkcji.
Gra toczy się wokół dwóch faz: rozkazów i fazy walki. Podczas fazy rozkazów dowodzisz różnymi statkami. Kiedy wszyscy gracze zakończą fazę rozkazu, rozpoczyna się faza walki, a rozkazy statków są rozpatrywane w czasie rzeczywistym przez pewien czas, a następnie akcja zostaje wstrzymana i rozpoczyna się nowa faza rozkazów.
Problem pojawia się, gdy myślę o wkładzie gracza. Aby przenieść statek, musisz włączyć lub wyłączyć różne śmigła, jeśli chcesz sterować, jechać do przodu, hamować, obracać się w miejscu ... Śmigła te nie muszą pracować z pełną mocą, abyś mógł uzyskać większy ruch kombinacje z mniejszą liczbą śmigieł.
Myślę, że to podejście jest trochę nudne. Gracz nie chce majstrować przy silnikach lub czymkolwiek, po prostu chcesz PRZESUWAĆ i ZABIĆ. Zamierzam graczowi wydawać rozkazy tym statkom według celu i obrotu , a wtedy AI obliczy prawidłową moc śmigła, aby osiągnąć ten ruch i obrót. Napęd nie musi być taki sam podczas całego obliczania tury (po wydaniu rozkazu), więc byłoby fajnie, gdyby statki reagowały podczas ruchu, dynamicznie dostosowując moc śmigieł do ich potrzeb, ale może być zbyt trudne do wdrożenia i nie jest tak naprawdę potrzebne do działania gry.
W obu przypadkach, w jaki sposób AI zdecyduje, które śmigła aktywować, aby uzyskać najlepszą (lub przynajmniej nie najgorszą) trajektorię do osiągnięcia?
Myślałem o niektórych podejściach:
- Uczenie się sztucznej inteligencji: typy statków będą uczyć się o swoim ruchu metodą prób i błędów, dostosowując swoje zachowanie do większej liczby zastosowań, a na koniec stając się „inteligentnymi”. Nie chcę się angażować TAK daleko w kodowanie AI i myślę, że może to być frustrujące dla gracza (nawet jeśli możesz pozwolić mu uczyć się bez grania).
- Wstępnie obliczony ruch czasowy: Po stworzeniu statku WSZYSTKIE możliwe ruchy są obliczane dla każdej konfiguracji śmigła i mocy dla danego czasu delta. Pamięć intensywna, brzydka, zła.
- Wstępnie obliczone trajektorie: To samo co powyżej, ale nie dla każdego czasu delta, ale dla całej trajektorii, która byłaby wówczas dopasowana w jak największym stopniu. Wymaga stałej konfiguracji śmigła dla całej fazy walki i nadal wymaga dużej ilości pamięci, jest brzydki i zły.
- Ciągłe brutalne wymuszanie: AI nieustannie sprawdza WSZYSTKIE możliwe konfiguracje śmigła podczas całej fazy walki, wstępnie oblicza kilka kroków czasowych i decyduje, który z nich jest najlepszy. Przeciw: to, co jest teraz dobre, może już nie być tak dobre później, i jest zbyt intensywne pod względem procesora, brzydkie i złe.
- Wymuszenie pojedynczego brutalnego: Tak samo jak powyżej, ale brutalne wymuszenie tylko na początku symulacji, więc wymaga stałej konfiguracji śmigła przez całą fazę walki.
- Ciągła kontrola kąta: nie jest to metoda pełnego ruchu, ale może sposób na odrzucenie „głupich” konfiguracji śmigieł. Biorąc pod uwagę normalny wektor obecnego śmigła i ostatni, możesz oszacować moc potrzebną do śmigła na podstawie kąta. Musisz to robić w sposób ciągły przez całą fazę walki. Ostatnio to wymyśliłem, więc nie zastanawiałem się zbyt długo. A priori ma też wadę „to, co jest dobre, może nie być tak dobre później” i nie przejmuje się innymi śmigłami, które mogą działać razem, tworząc lepszą konfigurację napędu.
Naprawdę utknąłem tutaj. Jakieś pomysły?