Czy aby pisać gry RMSBG trzeba korzystać z serwera? Dowiedz się!
Po latach pisania gier online postanowiłem podzielić się moimi doświadczeniami na ten temat. Dlatego też napiszę serię wpisów omawiających główne związane z tym zagadnienia.
Dzisiaj przyjrzymy się problemowi serwer / brak serwera w rozwiązaniach RMSBG (Realtime Multiplayer Social Brower Games).
Aby móc zacząć pisać taką grę należy posiadać odpowiedni serwer mogący utrzymać ruch generowany przez graczy. Ale zacznijmy od tego dlaczego w ogóle jest potrzebny serwer.
Otóż podczas gry w czasie rzeczywistym gracze wysyłają między sobą komunikaty np. informację o gotowości do przejścia do następnej rundy, czy też wykonania akcji, na którą czeka reszta graczy.
Teoretycznie można by zrezygnować z istnienia serwera gry. Wtedy komunikacja odbywać by musiała się bezpośrednio pomiędzy graczami. Jednak z wielu względów nie jest to takie proste.
W przypadku programowania gier “desktopowych” czy też “mobilnych”, a więc instalowanych na komputerach czy urządzeniach przenośnych mamy więcej możliwości. Każdy gracz może de facto uruchomić swój serwer komunikacji, który łączy się z innymi np. przez IP metodą peer to peer.
Jednak w przypadku aplikacji “przeglądarkowych” sytuacja jest trudniejsza. Jesteśmy bowiem ograniczeni do funkcji jakie oferuje nam przeglądarka i platforma programistyczna (język JavaScript, Java, czy też ActionScript + Flash, ale też inne).
Jeśli interesuje nas rozwiązanie z użyciem JS to możliwości jeszcze bardziej maleją. Otóż obecnie przeglądarki nie oferują standardowej możliwości tworzenia z poziomu JS serwera komunikacji. Oczywiście trwają prace np. nad WebRTC, jednak na obecnym etapie RTC stack, STUN ICE i zarządzanie sesją nie są na tyle dopracowane i ustandaryzowane, aby mogły służyć w rozwiązaniach produkcyjnych.
W związku z tym jeśli chcemy pisać aplikacje przeglądarkowe, społecznościowe w JS musimy mieć serwer, który będzie pośredniczył w komunikacji między graczami. Ale to nie tylko wymóg. Serwer taki przyda się również do zapisywania danych diagnostycznych, które ułatwią znajdowanie błędów w grze, czy też najważniejszych danych o wynikach poszczególnych gier, a więc do budowania rankingów, profilu uczestnika czy listy aktualnie otwartych “stołów” gry.
