Roki Opublikowano 12 Listopada 2010 Udostępnij Opublikowano 12 Listopada 2010 Mam zamiar zrobić jakąś fajną platformówkę online i tak nie wyjdzie no ale... Jest problem, otóż nie wiem jak można zoptymalizować te grę ;/ Jak mam wysyłać pozycję, co by nie było lagów? Na pewno nie będe wysyłał pozycji co stepa, nawet jeśli gracz trzyma klawisz. Aktualnie wysyłam co 2 stepy, jednak wtedy u innego gracza postać "skacze" z miejsca na miejsce. Co myślicie o odbieraniu pozycji którą dopiero ma zająć, a klient sam sobie wyliczy jak tam może dojść? Może jakieś inne sposoby? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 12 Listopada 2010 Udostępnij Opublikowano 12 Listopada 2010 Co do skakania to ja bym zrobił takie coś: GML (draw) var dir, len; dir = point_direction( x,y, xprevious, yprevious ); len = point_distance( x,y, xprevious, yprevious ); motion_blur( len, dir ); draw_sprite_ext( sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha ); pobierz: skrypt motion_blur Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 12 Listopada 2010 Autor Udostępnij Opublikowano 12 Listopada 2010 Nie chodzi mi o sam skok, chodzi mi ogólnie o całe chodzenie. Z tym skryptem co podałeś, to próbowałem coś podobnego, tylko wtedy są wahania pozycji czasem ;/ Przy 2 stepach są małe, ale przy np. 8 duże ;/ Jakieś inne sposoby? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 12 Listopada 2010 Udostępnij Opublikowano 12 Listopada 2010 Ruch wysyłaj przez UDP nie TCP UDP jest szybsze i może gubić pakiety ale o to się nie musisz martwić bo server i tak nie musi wiedzieć tego że zgubił pozycję ponieważ w następnej klatce gry i tak ta pozycja się zmieni. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 12 Listopada 2010 Autor Udostępnij Opublikowano 12 Listopada 2010 Hmmm, spróbuję z tym UDP, tylko najpierw wykminię jak działa :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
bluks Opublikowano 12 Listopada 2010 Udostępnij Opublikowano 12 Listopada 2010 A co myślisz o tym aby program sprawdzał czy klawisz jest wciśnięty czy nie, dopóki jest robi to bez końca a jak ktoś puści przestaje. Przykład: wciskam prawy przycisk myszy i u wszystkich pokazuje się ta informacja. (Jeżeli nadal będzie to robił żadna informacja nie będzie wysyłana bo poco skoro wiadomo co robić) A gdy puści znowu pokazuje się u wszystkich info i przestaje to robić. I zamiast wysyłać 1800 liczb na minutę wyślesz około 20 (przy stałej wolnej grze [trzeba tylko to jeszcze pomnożyć przez ilość klawiszy]) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 12 Listopada 2010 Autor Udostępnij Opublikowano 12 Listopada 2010 Ale tak czy siak, jak klikam klawisz to wiadomość idzie co stepa, prawda? Co do UDP -> Musi być inny port jak TCP? @EDIT: Sry, źle cię zrozumiałem, pomyślę nad tym, tyle że przy tym to dopiero mogą być wahania pozycji. Jak jakiś pakiet nie dojdzie, to będzie źle, a zależy mi na w miarę dokładnych pozycjach ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 12 Listopada 2010 Udostępnij Opublikowano 12 Listopada 2010 @2xup O ciekawe rozwiązanie to by trzeba było już przez TCP bo w tym momencie jest ważne by wiadomość doszła. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 12 Listopada 2010 Autor Udostępnij Opublikowano 12 Listopada 2010 A co jeśli komuś padnie net na chwilę i się poruszy? :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 12 Listopada 2010 Udostępnij Opublikowano 12 Listopada 2010 Prawdopodobnie będzie tylko duży skok. Warto było by to przetestować. edit: bo wysyłasz pozycję absolutną a nie relatywną. Jak byś wysyłał relatywnie to gracz w cliencie był by przesunięty o jakiś wektor względem servera. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 12 Listopada 2010 Autor Udostępnij Opublikowano 12 Listopada 2010 Dobra, zrobię w ten sposób, co mówił bluks, tylko muszę jeszcze trochę poprawić ogólny system ruchu i się za to biorę :) Jak skończe, to napiszę jak wyszło xD @EDIT: Chodzi mi o wysyłanie który klawisz kliknął :P Co to pozycja absolutna, a co to relatywna, bo nie kminię? D: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 12 Listopada 2010 Udostępnij Opublikowano 12 Listopada 2010 absolutna x = 34; y = 344; relatywna x += 1 y += 3 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 12 Listopada 2010 Autor Udostępnij Opublikowano 12 Listopada 2010 No czyli wysyłając który klawisz klika, będe wysyłał jakby pozycję relatywną, co nie? No bo jak odbierze klawisz w prawo, to go ruszy te x+=2? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 12 Listopada 2010 Udostępnij Opublikowano 12 Listopada 2010 Nie sprawdzaj, który klawisz wcisnął tylko czy wcisnął. Wtedy pozycjonuj x i y absolutnie oba naraz. A co myślisz o tym aby program sprawdzał czy klawisz jest wciśnięty czy nie EDIT: ale shit to i tak wyjdzie na to samo jak byś wysłyłał co stepa x i y hmm to już sam nie wiem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 12 Listopada 2010 Autor Udostępnij Opublikowano 12 Listopada 2010 No właśnie. Aktualnie mam tak że: GML if xprevious != x or yprevious != y if alarm[0]=-1 alarm[0]=2 A alarm[0] wysyła pozycję. Czyli że zostaje UDP? @EDIT: E.w. mogę podzielić pakiet co wysyła X i Y, na 2 pojedyncze, jeden wysyła X, drugi Y, ale czy to coś da? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 12 Listopada 2010 Udostępnij Opublikowano 12 Listopada 2010 No chyba że przesuwasz relatywnie sposobem bluksa ale co jakąś sekundę albo więcej czasu resetujesz pozycje absolutnie żeby pozbyć się przesunięcia o wektor względem cilienta a servera. EDIT: tylko pytanie czy to będzie optymalniejsze od zwykłego x i y post #4 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 12 Listopada 2010 Autor Udostępnij Opublikowano 12 Listopada 2010 Dobra, to zrobię tak, że będe wysyłał pozycję przez UPD :) Dzięki za pomoc ;) 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ę