Uaktualnianie danych w tzw. grach przeglądarkowych

0

Zastanawiam się w jaki sposób są uaktualniane dane w bazach danych w grach typu Ogame, TribalWars, Travian, żeby serwery wytrzymywały duża liczbę graczy. Jeżeli ktoś nie zna tych tytułów to gry tego typu miały na serwerach tysiące graczy, każdy z nich mógł rozbudowywać swoją bazę/wioskę przez co przyrost surowców wyrażony w ilości na sekundę był różny. Dodatkowym wyzwaniem dla programistów było to, że gry te cechują się tym, że mają w sobie element walki przez co duży wpływ na rozgrywkę miały budynki, surowce, jednostki wytworzone nawet parę sekund przed, przykładowo obroną twierdzy.
Może ktoś z Was kiedyś pracował nad projektem tego typu, albo interesował się tym tematem.

1

Liczbę surowców można zapisać jako poprzedni stan, datę i przyrost sekundowy, a stan aktualny wyliczać na bieżąco przy wejściu na stronę/wykonywaniu ataku itp. Podobnie z budynkami, w momencie ataku sprawdzasz, czy dla atakowanego gracza istnieją jakieś budowy o dacie zakończenia wcześniejszej niż aktualna i przed atakiem aktualizujesz stan budynków.
Poza tym można odpalać cronem jakieś sprawdzenie co 5 sekund, czy coś się nie skończyło robić i aktualizować stan.

1

Najprościej jest jak na moje zapisać to jako Event Log, czyli zapisujesz każdą akcję jaka się wydarzyła w grze. Co do samych surowców to możesz wtedy odpowiednio zareagować i najzwyczajniej policzyć ile użytkownik powinien mieć w danym momencie zamiast zapisywać co sekundę. Alternatywnie możesz robić dokładnie to, czyli co określony przedział czasu doliczać wszystkim użytkownikom odpowiednią ilość surowców, ale to się może słabo skalować.

1 użytkowników online, w tym zalogowanych: 0, gości: 1