Programowanie RMSBG na Facebooka cz. 4 – typy komunikacji

Jakie typy komunikacji trzeba uwzględnić w pisaniu gry RMSBG?

W poprzednich częściach założyliśmy, że robimy grę planszową RMSBG (Realtime Multiplayer Social Browser Game). Wybraliśmy na serwer hosting z PHP i MySQL a klienta będziemy pisać w JS. Wiemy też jak wygląda komunikacja między klientem a serwerem. Ale co będziemy komunikować?

Zastanówmy się przez chwilę jak wygląda typowa gra. Na przykład gra w szachy. Chociaż to trudna gra jej zasady są dosyć proste. Gracze na zmianę ruszają figurami. Każda figura ma określony zakres ruchów. Gracze nawzajem pilnują się, aby nie oszukiwać. W przypadku gry online to oprogramowanie powinno zadbać o ograniczanie możliwości ruchów niedozwolonych. Ale tutaj nie jest potrzebna komunikacja klient-serwer. Wystarczy oprogramować to po stronie klienta (chyba, że chcemy zabezpieczyć się lepiej przed oszustwami, to po stronie serwera również).

Tak samo gracze pilnują swojej tury gry. Gracze przesuwają piony na zmianę. W przypadku gry online oprogramowanie musi pilnować, aby poinformować gracza gdy jest jego tura gry, oraz innych graczy, że teraz ich tura z kolei nie występuje, a więc nie mają prawa ruchu, czekają na ruch przeciwnika. No i tutaj już mamy pierwsze informacje, które muszą być przekazywane w komunikacji między serwerem a klientami.

Następna sprawa to rundy. Jeśli np. umawiamy się na kilka gier w szachy musimy wiedzieć ile gier już wykonaliśmy, aby wiedzieć czy jeszcze gramy czy podsumowujemy wyniki dotychczasowych gier. Każda runda to zbiór czynności które trzeba wykonać, aby “zresetować” grę np. ustawić piony na swoje pozycje.

Wspomniałem o wynikach. Również i one powinny być przekazywany między graczami a serwerem. W przypadku gry w szachy może być to liczba matów, patów i przegranych. Sposób liczenia może być bardziej złożony w zależności od zasad gry. Jednak jak widać ktoś musi te wyniki liczyć (klient, albo serwer) i oznajmiać innym, aby mogli je poznać.

Czytaj podobne  Śledzikowy (fal) start !?

W przypadku gry w szachy mamy do czynienia z tak samo wyglądającymi turami gry. Jednak są gry w których każda runda składa się z różnorodnych etapów. Np. grając w tysiąca mamy etap licytacji “musika”, później z kolei jest etap rozdawania po karcie pozostałym graczom, a ostatni etap to już normalna rozgrywka. Tutaj również pojawia się zadanie komunikowania innym graczom, że nastąpiło przejście do kolejnego etapu gry.

Na koniec trzeba pamiętać o paru rzeczach m.in. o wszystkich wyjątkach. Np. w grze w tysiąc gracz może ogłosić w pewnych warunkach bombę (np. raz na 500 punktów). Wtedy gra jest przerywana i nie toczy się dalej według standardowego scenariusza. Dodatkowo gracze pozostali dostają po 50 punktów, które trzeba im doliczyć, a graczowi zaznaczyć, że użył już jedną szansę poddania się.

Inny wyjątek charakterystyczny to koniec gry. Może on nastąpić po określonej liczbie rund albo gdy spełnione zostaną określone warunki np. w tysiącu gra kończy się, gdy jeden z graczy zdobędzie 1000 punktów. Ale nie zawsze skończy się w ten sposób.

Bowiem kolejna grupa wyjątków dotyczy sytuacji przerwania czy zagrożenia trwania gry. Np. gdy dwie osoby grają w szachy i jedna z nich odejdzie. Na jak długo odeszła? Czy jeszcze czekać aż wróci? Jeśli tak to jak długo? A jeśli nie wróciła w określonym czasie co zrobić? Gry dalej kontynuować przecież nie można. Są też sytuacje, gdy odejście jednego gracza nie przerywa gry. Ale i wtedy gra musi zostać zmodyfikowana, aby uwzględniać brak tego gracza. Trzeba też pilnować, żeby liczba graczy była odpowiednio duża, żeby gra mogła się dalej normalnie toczyć. Tutaj oprócz odejść z własnej woli trzeba wziąć pod uwagę w grach online różne przerwy w dostępie do sieci, awarie, błędy itd., które trzeba obsłużyć tak, aby gra w miarę płynnie przebiegała dla pozostałych uczestników.

Czytaj podobne  Gadu-Gadu.pl vs Facebook

No i na koniec mamy komunikaty dodatkowe np. komunikaty czatu, czy też innych funkcji, które dodamy do naszej gry online.

Podsumowując jak widać powyżej jest kilka typów sytuacji, które wymagają komunikacji między graczami (klientami) a serwerem.

Przeczytaj też

Programowanie gier społecznościowych na Facebooka ... W czym pisać kod gry? W PHP czy w JS? No i gdzie trzymać dane o rozgrywce i grach? Dowiedz się! W poprzednich częściach omówiłem kwestię wyboru ser...
Programowanie RMSBG na Facebooka cz. 5 – host gry... Kim jest host gry i czy powinien znajdować się na serwerze czy powinien nim być jeden z graczy? W poprzednich częściach ustaliliśmy środowiska prog...
Programowanie RMSBG na Facebooka cz. 3 – kom... Jak klient w JS może komunikować się z serwerem w PHP przez HTTP? W poprzednich częściach omówiłem rozwiązania klienckie i serwerowe dla gier RMSBG...
Programowanie RMSBG na Facebooka cz. 2 – Jęz... Jakie języki programowania trzeba znać, żeby pisać RMSBG na Facebooka? Dowiedz się. W poprzedniej części poruszyłem temat decyzji czy aby napisać R...
Programowanie gier społecznościowych czasu rzeczyw... Czy aby pisać gry RMSBG trzeba korzystać z serwera? Dowiedz się! Po latach pisania gier online postanowiłem podzielić się moimi doświadczeniami na ...
Napisano w Społecznościowe Tagi: , , , , , ,