Przeciwnik komputerowy w grze 2d

0

Piszę w Javie w LibGDX parkera samochodowego 2d z góry. Auto to prostokąt z teksturą i offsetami kół. Liczę przemieszczenie pojazdu i rotację na podstawie wiadomo szybkości, skrętu kół (trochę trygonometrii, linie, okręgi ale realistycznie jak na oczekiwania parkera 2d).
Teraz chciałbym zrobić jakiś przeciwników komputerowych którzy by sobie jeździli po drodze, po wyznaczonej trasie przeze mnie. Jak to napisać tak ogólnie, jak to ugryźć żeby komputerowy przeciwnik też jeździł realistycznie? Jazda po prostej spoko, chodzi o zakręty i przyszłościowo może też dłuższy pojazd jak autobus.
Właściwie jak to piszę mam 3 pomysły:

  • sam będę jechał i nagrywał ruch a potem tylko bot będzie odtwarzał mój ruch - nie mam pojęcia jak to zrobić i wydaje mi się raczej głupie
  • bot będzie miał wyznaczoną linię/krzywą i będzie metodą prób i błędów korygował skręt kół by trzymać podążaną linię na środku przodu auta
  • hmm chyba najprościej po prostu policzyć nową pozycję, nową rotację z wykorzystaniem tego co dla zwykłego gracza by samochód jeździł po okręgu. Nawet bardziej ogólnie, miałbym opis dróg, połączeń. Bot miałby powiedzane że ma jechać po drodze X, skręcić w Y i odpowiednio by liczył kiedy skręcić i o ile. Tylko znów mało realistyczne że przy wchodzeniu w zakręt koła ze skrętu 0 stopni nagle dostaną 30 (ale w sumie to nie będzie zauważalne w 2d, niskiej prędkości i tym że kół fizycznie nie ma). Warto dodać że prędkość tu nie gra roli bo w tej mojej symulacji możliwe jest jeździć w kółko 200km/h bo jestem laikiem w gamedev. Ale prędkość dam stała dla bota w granicy powiedzmy 30km/h więc to nie jest istotne.

Czy ktoś ma jakiś pomysł jaką drogą pójść?

1

Tylko znów mało realistyczne że przy wchodzeniu w zakręt koła ze skrętu 0 stopni nagle dostaną 30

Możesz skręt przecież stopniowo zwiększać.

Kłaniają się równania różniczkowe.

A jak już policzysz idealną trasę, to komputer nie może być za dobry - bo będzie nie do pokonania - musisz dodawać losowo wyznaczony błąd (zależny od stopnia trudności).

0

Nie umiem równań różniczkowych, dopiero wybieram się na studia (może). Dużo zabawy z tymi równaniami jest? Słyszałem tylko że one mocno skracają obliczenia więc chyba mało obliczeń.

W sumie mam pomysł jak to tymi okręgami zrobić. Skrzyżowanie dróg to przecinające się proste i okrąg musiałby być styczny do tych dwóch prostych i odcinek koła to byłby właśnie ten ruch. Wielkość koła to wielkość skrętu.

PS: Poziom trudności nie, źle się wyraziłem, to nie przeciwnik tylko bot, ai, komputer, ma tylko jeździć, nie obchodzi go że na drodze np stoi gracz, albo może i obchodzi... ale to już proste do sprawdzenia :P

Edit:
Takim prostym sposobem chyba to zrobię. Drogi, punkt przecięcia, w zależności od skrętu kół wielkie lub małe koło. Po takim łuku by bot jechał.
user image

1 użytkowników online, w tym zalogowanych: 0, gości: 1