#konkursnanajbardziejgownianymemznosaczem #wirsprawiedliwosci #grysprawiedliwe #gamedev #gry #rpg #programowanie #unrealengine #cpp
Dobra, wyrzuciłem wszystkie binarki, assety itd do gitignora i wrzuciłem kod do repo https://github.com/WKogut98/WirSprawiedliwosci
Ugułem problem wygląda tak, że czasem odpala się tura dla dwóch sojuszników naraz - np. Halyna leczy janusza i jednocześnie Śwagier go bije bo ma atak na tym samym miejscu co ona leczenie albo dwie postacie używają tego samego itemka naraz. Druga rzecz to, że czasem pojawia się sojusznik, który był poprzednio usunięty z druzyny, np. gdy zamieniliśmy ich z menu - tzn. sprajt zostaje tam gdzie był ale widzimy jego portret, imię i skille i jak wybierzemy jakąś umiejetność to wykona ją inna postać (nwm czy dobrze tłumaczę).
Walka u mnie działa tak, że jest aktor FightEncounter, który albo spawnuje przeciwnika, który nas goni i słucha eventu gdy znajdziemy się w jego kuli kolizji, żeby odpalic walkę, albo dziedziczączy z tej klasy AutoStartFightEncounter ma wskaźnik do triggera cutscenki i reaguje na event przy zakończeniu jej oddtwarzania, żeby zacząć walkę i zespawnować przeciwników - naszą drużynę bierze z aktora DefaultGameMode a przeciwników randomowo spawnuje z klas podanych w edytorze i wsadza do drugiej tablicy.
Jak startuje walka to encounter tworzy obiekt Fight, który zarządza wszystkim co sie dzieje podczas walki, on sobie tworzy na początku trzecia tablicę, sortuje ją po narwaności no i wtedy sobie wyciąga postać z 0 elementu (miałem to wcześniej jako queue, ale próbując naprawić tego buga to wywaliłem). Tę tablicę budujemy tylko na początku i jak któraś postać zginie. Fight słucha sobie eventów jak wciśniemy przyciski skilli, wtedy uruchamia timer, żeby odpalić animację sprajta postaci, jak się timer skończy to kończę turę. Jeśli to tura przeciwnika to jest mnóstwo pogmatwanego kodu, żeby wybrac skilla, którego ma uzyć - tu dałem kolejny timer, bo wrogowie potrafili się zawiesić nie potrafiąc wybrać skilla.
No i ogólnie to jak odpalamy za pierwszym razem albo wczytujemy z sejwa to wszytko działa raczej ok, problem się pojawia kiedy albo gracz podmienił postać albo po tym jak nowa postać dołącza do drużyny, więc podejrzewam, że tablica jakoś magicznie zamienia ten element w tablicy na wskażnik na starego sojusznika - to co widziałem w debugu to potwierdza, ale to tłumaczy chyba tylko ten drugi problem a nie "podwójne tury". A i czasem gra wywala okienko game over jak zginie jedna postać (chyba też ta podmieniona, ale nie jestem pewien) a nie cała drużyna xd.
game mode mam w folderze GameMechanics a Fight i FightEncounter są w GameMechanics/Combat.
Jak ktos chce poszukać błędów w moim paskudnym kodzie to zapraszam
5

Komentarze (5)

Dodaj readme, a znane błędy jako issues i będziesz miał już takie pro-elo repozytorium

@macgajster w sumie zrobiłem tak, dzięks

@MrGerwant próbowałeś tam wcisnąć copilota do IDE? Podobno jest nieźle zintegrowany i czasami znajduje błędy w kodzie jeśli się z nim pogada.

@wiatraczeg próbowałem używać claude'a bo jest ponoć lepszy w programowaniu niż gpt, ale nic przydatnego mi nie podsunął

@MrGerwant czyli sprzedają gruszki na wierzbie

Zaloguj się aby komentować