Cytat
Misieq masz rację, wszystko musi być non stop podliczane i sprawdzane za pomocą co minutowego crona.
Nie musi:
Kod
I. Gracz kupuje budynek, np. kopalnię która zwiększy mu wydobycie metalu o 20/h
II. Skrypt odejmuje surowce graczowi (koszty budowy kopalni) i oblicza, że budynek zostanie wybudowany za 3 godziny
III. Graczowi nie chce się czekać 3 godzin, więc wyłącza przeglądarkę i idzie z psem na spacer
IV. Gracz wraca do domu po 4 godzinach (1 godzina po wybudowaniu kopalni) i loguje się ponownie do gry
V. Skrypt sprawdza, czy zostały w danym czasie wybudowane jakieś budowle. Znajduje kopalnię, która została wybudowana godzinę temu. Data zakończenia budowy jest odczytywana z bazy, a rekord jest usuwany (bo kopalnia już została zbudowana)
VI. Skrypt przelicza teraz ilość metalu:
- Po zbudowaniu kopalni graczowi zostało 300 metalu,
- Poprzednia wydajność kopalni to 120/h,
- Po wybudowaniu kopalni 140/h.
- Kopalnia została zbudowana 3h po ostatniej wizycie gracza na stronie
- Od wybudowania kopalni do teraz minęła 1h
Wzór: 300 + (3h * 120) + (1h * 140)
Oczywiście wyzwolenie tej procedury nie może następować jedynie podczas zalogowania się gracza w grze. Trzeba przemyśleć wszystkie przypadki, np:
- atak wroga: Sam atak powinien być wyzwolony na takiej samej zasadzie, jak budowa kopalni, ale gdy gracz który cię zaatakował zaloguje się do gry wcześniej, niż ty wrócisz z psem ze spaceru, to ilość metalu w twoich magazynach trzeba będzie podliczyć
- wróg wysłał sondę szpiegowską: j/w, wrogi gracz loguje się do gry i dostaje raport z sondy, więc aktualna ilość metalu na twojej planecie musi zostać podliczone
- sojusznik przyleciał na twoją planetę i zwiedza twoje magazyny: j/w
- itd.