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 programistyczne do pisania gier online na Facebooka, zagadnienie komunikacji i typy komunikatów jakie będą krążyć w grze. Nie ustaliliśmy jednak jeszcze jak ta komunikacja ma przebiegać.

Otóż w grach w realu wszyscy na bieżąco uzgadniamy czyja jest kolej itd. W trakcie przerwy w grze można o tym zapomnieć, ktoś będzie pamiętał i gramy dalej. W przypadku gry online tak nie może być ponieważ powstałby chaos. Dlatego spośród bytów gry wyróżnia się jeden nazywany hostem gry. Jest to byt, który pilnuje porządku w grze, kolejności, notuje wyniki, dba o wymianę danych itd.

W niektórych grach hostem gry jest jeden z graczy. W innych grach hostem jest serwer. Różnica jest istotna. Ponieważ jeśli hostem gry jest jeden z graczy to co zrobić gdy odejdzie? Gra musi się zakończyć, bo nikt jej nie kontroluje. Jeśli natomiast hostem gry jest serwer, to każdy z graczy mógłby teoretycznie odejść od gry, a ta trwałaby nadal.

Host gracz czy host serwer?

Jakie rozwiązanie wybrać? Otóż na zwykłym hostingu nie da się odpalić wątku, który by działał nieprzerwanie. A taki musiałby istnieć, aby kontrolować przebieg gry. Nawet jeśli byśmy z kolei odpalili taki wątek w inny sposób, to trzeba go oprogramować po stronie serwera, co będzie zabierać jego zasoby. Ponadto są inne ciekawostki do rozwiązania np. co gdy wątek zostanie ubity, albo serwer będzie restartowany? Wtedy pojawia się problem z kontynuacją gry.

Czytaj podobne  Aplikacji ile jest nikt nie widzi - Facebook, Android i Apple

Z drugiej strony możemy wybrać jednego z graczy hostem gry. Np. może to być ten który zakłada “stół” gry. Wtedy nie trzeba programować hosta po stronie serwera, nie zużywamy jego zasobów i nie mamy wspomnianych wyżej problemów. Jedyny ważny problem to kwestia tego, że jak host odejdzie od stołu gry, gra nie może toczyć się dalej. Technicznie jest możliwe przekazanie “hostowania” innemu graczowi, jednak w praktyce nikt tego nie robi, ponieważ to dosyć skomplikowana i ryzykowna operacja.

Także w przypadku naszej gry planszowej możemy spokojnie założyć, że ten kto otwiera stół jest hostem i jest nim od początku do końca gry.

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. 4 – typ... Jakie typy komunikacji trzeba uwzględnić w pisaniu gry RMSBG? W poprzednich częściach założyliśmy, że robimy grę planszową RMSBG (Realtime Multipla...
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: , , ,