JerryJohn Opublikowano 2 Lipca 2013 Udostępnij Opublikowano 2 Lipca 2013 Witam ponownie, Piszę prostą grę multiplayer używając 39dll i napotkałem "problem" dotyczący uaktualniania pozycji graczy w kliencie. Mianowicie nie potrafię znaleźć optymalnego sposobu na poruszanie graczy, aby ich pozycje u innych klientow były jak najbardziej adekwatne do ich rzeczywistej pozycji. Wiem na pewno że nie mogę wysyłać ich pozycji zbyt często, co na pewno rozwiązałoby problem, ale zalagowało serwer. Staram się wysyłać co 1 sekundę z klienta, a następnie po odebraniu na serwerze rozsysłam do innych klientów. Następnie na kliencie poruszam obiekt gracza w kierunku odebranej pozycji. Jednakże metoda ta z góry zakłada opóźnienie na kliencie 1sek + czas przemieszczenia gracza do nowej pozycji. Czy istnieje jakiś inny sposób? Wiem że można od razu umieszczać gracza na odebranej pozycji, a następnie poruszac go na ślepo w tym samym kierunku, co gwarantuje brak opóźnienia, ale za to przekłamania w jego aktualnej pozycji, a jeżeli gracz się zatrzyma to prawdopodobne "skoki" w tył ;) Pozdrawiam i z góry dzięki za zainteresowanie problemem :sleep1: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 2 Lipca 2013 Udostępnij Opublikowano 2 Lipca 2013 Możesz wysyłać z klienta informację o tym że wcisnąłeś klawisz i dopóki jest wciśnięty to serwer cię porusza. Klient powinien być tylko graficznym przedstawieniem tego co się dzieje na serwerze. Nie powinien decydować np. o szybkości ruchu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Trzynasty Opublikowano 2 Lipca 2013 Udostępnij Opublikowano 2 Lipca 2013 Nie słyszałem żeby ktoś tak ważne pozycje wysyłał co sekunde, musisz częściej. Np statyczne dane prawie nie musisz wysyłać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
JerryJohn Opublikowano 2 Lipca 2013 Autor Udostępnij Opublikowano 2 Lipca 2013 Zastanawiam się na ile optymalnym rozwiązaniem byłoby np. wysyłanie jedynie kierunku, ale cześciej (np. co 10ms) oraz wiadomości o rozpoczęciu i zatrzymaniu ruchu. Klient od momentu otrzymania wiadomości o starcie poruszałby gracza cały czas zmieniając jedynie kerunek do momentu otrzymania wiadomości o zatrzymaniu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Trzynasty Opublikowano 2 Lipca 2013 Udostępnij Opublikowano 2 Lipca 2013 Zastanawiam się na ile optymalnym rozwiązaniem byłoby np. wysyłanie jedynie kierunku, ale cześciej (np. co 10ms) oraz wiadomości o rozpoczęciu i zatrzymaniu ruchu. Klient od momentu otrzymania wiadomości o starcie poruszałby gracza cały czas zmieniając jedynie kerunek do momentu otrzymania wiadomości o zatrzymaniu.Jeżeli dobrze zrozumiałem o co Ci chodzi, to raczej nie jest dobry pomysł. Jak złapie lag, to gracza wywali gdzieś np: w ścianie... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 2 Lipca 2013 Udostępnij Opublikowano 2 Lipca 2013 Trzynasty: To zależy co masz na myśli mówiąc("pisząc" właściwie) ważne dane, jeśli chodzi o pozycje to można przesłać tylko wciśnięcie klawisza, i co jakiś czas(np sekunde) wysyłać poprawkę, i dodatkowo przy puszczeniu klawisza wysłać pozycje. Utermiko: Ja bym się denerwował jak bym wciskał klawisz i czekał nie całą sekundę żeby się poruszyć :P( Jeśli dobrze zrozumiałem o co Tobie chodzi ). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Trzynasty Opublikowano 2 Lipca 2013 Udostępnij Opublikowano 2 Lipca 2013 Trzynasty: To zależy co masz na myśli mówiąc("pisząc" właściwie) ważne dane, jeśli chodzi o pozycje to można przesłać tylko wciśnięcie klawisza, i co jakiś czas(np sekunde) wysyłać poprawkę, i dodatkowo przy puszczeniu klawisza wysłać pozycje."jedynie kierunku" to chyba chodzi o brak poprawek ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 2 Lipca 2013 Udostępnij Opublikowano 2 Lipca 2013 Utermiko: Ja bym się denerwował jak bym wciskał klawisz i czekał nie całą sekundę żeby się poruszyć :P( Jeśli dobrze zrozumiałem o co Tobie chodzi ). Różnica ~100 ms chyba nie jest aż tak zauważalna. W sumie to zależy o jakiego typu grze mowa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 2 Lipca 2013 Udostępnij Opublikowano 2 Lipca 2013 Różnica ~100 ms chyba nie jest aż tak zauważalna. W sumie to zależy o jakiego typu grze mowa. Już sprawdzałem, i wyszło że nie jestem cierpliwym człowiekiem :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 2 Lipca 2013 Udostępnij Opublikowano 2 Lipca 2013 Ja wysyłam pozycje, kiedy klawisz jest wciśnięty i nie ma problemu. Pewnie tego pożałuje, ale macie: https://gmclan.org/up6497_4_lulamoon_people.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się