Jak rozwiązać lagi w multiplayer ?


#1

Prosta gierka 2D zarobkowa multiplayer w trakcie tworzenia i problem lagów przy grze z kimś z innego kontynentu.
Jakie rozwiązania zastosować ?

Oddzielne serwery np. w Europie USA itd. gdzie gracz wchodzi i wybiera serwer najbliższy jemu i ma dostęp do graczy którzy także wybrali ten serwer więc opóźnienia bardzo małe czy też coś takiego jak usługi pod multiplayer typu Photon

https://www.photonengine.com/en-US/Photon

Z tym że Photon płatne od liczby użytkowników
Serwery swoje bez ograniczeń.

Macie jakieś doświadczenia ?
Sugestie ?
Inne rozwiązania ?


#2

Lagi w czym? W poruszaniu się?

Rozwiązanie z siecią serwerów gdzie gracz zakłada konto na najbliższym to tylko połowiczne rozwiązanie. Jeśli dany gracz będzie miał problemy z siecią albo takie problemy będzie miała serwerownia to lagów i tak nie unikniesz. Photon to tylko pewne gotowe rozwiązanie umożliwiające łatwiejsze stworzenie gry multiplayer, ale samo w sobie nie załatwia takich problemów, ta ich kompensacja lagów jest na prawdę na bardzo podstawowym poziomie.
Jest cała masa technik, mniej lub bardziej zaawansowanych służących do zminimalizowania efektów lagów (bo samego opóźnienia się nie pozbędziesz, możesz je tylko zamaskować). Możesz zastosować jakąś predykcję, możesz przekazywać do serwera input a ruch jest liczony zarówno po stronie klienta jak i serwera a w odpowiednim momencie musisz zadbać o synchronizację (autorytatywny serwer synchronizuje klientów do swojego stanu).

To temat na książkę a nie na wpis na forum. Googlaj, szukaj rozwiązań praktycznych, jest sporo blogów na ten temat bo zagadnienie jest fajne i ciekawe. A jak nie czujesz się na siłach to daj sobie spokój i zacznij od czegoś prostszego. MMO to duży temat, gwarantuję ci, że za duży jak na początkującego programistę.

Btw, już teraz ci mogę powiedzieć, że na 99,99% nie zarobisz na tej grze nawet złotówki :slight_smile: Ot, doświadczenie i znajomość realiów :wink:


#3

Nie MMO , prosta zręcznościówka z elementami logiki.
Gra postawiona w Polsce ping 23ms i chula bez zacięcia.
Gra postawiona na serwerze w USA przycina, ping 110ms.
Więc wniosek że jeden serwer na kontynent minimum.

Jest jeszcze rozwiązanie od Amazon

Czy to się różni od Photona ?
Amazon też sporo płatne.

Czy nie lepiej samemu wykupić kilka serwerów dedykowanych w kluczowych lokalizacjach ?


#4

Skoro to prosta zręcznościówka i nie MMO (zakładam więc, ze nie jest to również MOBA) to co ty tam robisz na tej sieci? Po co ci te serwery? Bo mnie to wygląda na problem XY.

Jeśli ci przycina przy pingu 110ms to znaczy, że kompletnie nie rozumiesz w jaki sposób powinno się pisać gry sieciowe. Polski ping może ci w każdej chwili skoczyć na 50ms albo 70ms - bo gdzieś po drodze padnie router, ISP będzie miał problemy techniczne albo brat twojego docelowego gracza zacznie ciągnąć torrenty na pełnej prędkości. I wtedy co zrobisz?

Nie znam rozwiązania Amazona, ale z tego co tam czytałem robiąc research na potrzeby projektu przy którym pracuję, to jest to po prostu inny framework i zestaw usług. Możesz samemu pisać warstwę komunikacji sieciowej, składać bajty, które wypluje ci socket i stworzyć od podstaw wielowątkowy serwer, a możesz skorzystać (odpłatnie) z gotowego rozwiązania typu Photon lub AWS for gaming. Radzenie sobie z lagami to zupełnie inny temat i pisałem ci o tym. Ale jak tak bardzo chcesz płacić, to Photon ma specjalną bibliotekę, która została stworzona chyba specjalnie dla ludzi, którzy wolą wydawać pieniądze niż się douczyć :slight_smile:

Zanim jednak wykupisz sobie roczny abonament na Quantuma i opłacisz 6-letni pakiet na Photon Server to weź ty mi tu napisz dokładnie co to jest za gra, co ty tam robisz sieciowo, jak to robisz i co tak na prawdę jest ci potrzebne. Bo coś czuję, że ty sam sobie stworzyłeś ten problem.