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  Lepiej użyć Facebook Markup Language

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  Przygotowanie profesjonalnego środowiska do programowania w PHP

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ż

Najlepsza książka do Pythona Nie wiesz, z jakiej książki/ebooka uczyć się programowania w języku Python? Postanowiłem zrobić zestawienie 10 książek z Heliona na ten temat, abyś mó...
Komplet 28 ebooków i kursów, aby zostać programist... Od jakiegoś czasu dostaję zapytania na temat tego jakie książki, kursy i ebooki polecam. W związku z tym postanowiłem przygotować dzisiaj zestaw, któr...
120 tapet programistycznych za darmo do pobrania Trochę mi się nudziło, więc przygotowałem zestaw 120 tapet dla programistów. Możesz go pobrać. Tapety są w rozdzielczości 1366x768. Podzielone ...
10 fiszek do nauki programowania w Pythonie Uczysz się programowania w Pythonie? Pobierz te 10 fiszek, które ułatwią Ci zapamiętanie funkcji wbudowanych* w Pythona! Programowanie potrafi ...
Napisano w Kolumna Tagi: , , , , , ,

Menu