Sposób poruszania w grze

avatar aureon Około 6 tygodni temu | Wybrano odpowiedź

+ 0 -

Ostatnio zastanawiam się nad sposobem poruszania się w mojej grze. Chodzi o to, że aktualny, ruch co kratke (32px), jest według mnie sztywny i ograniczony. Zasięg ataków musi opierać się na kratkach. Przy atakach dookoła siebie, zasięg jest albo mały (1 kratka, daje razem kwadrat 3x3=9) albo ogromny (2 kratki, czyli kwadrat 5x5=25).  Jest to duzy przeskok. Alternatywą jest poruszanie per pixel, gdzie te wszystkie problemy znikają. Jest całkowita dowolność w zasięgu ataku i samo chodzenie nie jest takie sztywne. Mam pytanie do Was. Co o tym sądzicie? 

Odpowiedzi

avatar Xandev Około 6 tygodni temu

+ 3 -

Jeśli  z jakiegoś powodu nie chcesz robić per pixel, to zawsze możesz zrobić to samo co było w pierwszym CE, czyli kratkę poruszania/kolizji podziel na 4. Zaś mapy dalej konstruuj z kafli 32x32.  Efekt był taki, że z takiego kafla 32x32 zrobiło się 16  mniejszych kafli 8x8. W ten czas poruszanie wyglądało jak per pixel.

W dzisiejszych czasach w grach real-time chodzenie po kaflach to przeżytek, dlatego i tak poleciłbym per pixel :x

avatar aureon Około 6 tygodni temu

Jeżeli zdecyduje się na per-pixel, to jak to najlepiej zrobić? Mój pomysł jest taki: W cliencie sprawdzam czy mogę się poruszyć, jeżeli tak to ruszam się. Jeżeli moja pozycja zmieniła się o cztery pixele wysyłam to do servera i sprawdzam czy wszystko się zgadza, jeśli tak, wysyłam pozycje do innych graczy. Inni gracze odbierają pozycje i zapisują ją jako nową. Jeżeli nowa pozycja jest różna od starej, porusza gracza tak aby zrównał się z nową pozycją. Nie wiem czy jest to najlepszy pomysł, nigdy nie robiłem per pixel i teraz jak patrzę na to, teoretycznie działa ale przy zmianie kierunku postać na innym kliencie (który obserwuje ruch) dziwnie skacze.

avatar Xandev Około 6 tygodni temu

To jest złe rozwiązanie. Pozwól, że odeślę Cię do klasyka: http://archive.gamedev.net/archive/reference/articles/article1370.html

avatar aureon Około 5 tygodni temu

Czyli: Client wysyla swoje X i Y oraz X i Y w ktorym powinien sie znalezc po obloczeniu opoznienia, a potem server wysyla te dane do innych, ktorzy tez doliczają opóznienie. Tak? Tylko w takim wypadku, kiedy aktualizowac ruch? Dac znac tylko kiedy rozpoczynam ruch i kończe?

avatar Xandev Około 5 tygodni temu

Mniej więcej tak. Kiedy: rozpoczynasz, kończysz oraz co jakiś określony czas (coś koło +- 250ms) w celu sprawdzania i korekty pozycji. Więcej praktycznego infa udzieli Ci Cyste, ale w każdym razie polecam poczytać o interpolacji.

Przeglądaj/Edytuj