Cytat(wizard144 @ 4.05.2009, 18:24:52 )

Cron tutaj to zły pomysł, za dużo połączeń do bazy danych. Już wystarczy że staminę(bo to ma być raczej RPG+RTS ) regeneruje Cronem

//To też można w AJAX-ie by zrobić...
Zaczałem wymieniać od Crona, bo sam w pierwszym poście o nim wspomniałeś, osobiście użyłbym SQLa albo PHPa - zależy jak masz realizowaną obsługę zdarzeń.
@ikssde, @wizard144
Przeliczanie wszystkiego (czyli kolejka budowy, budowanie budynków, jednostek itd) w momencie odświeżenia strony nie jest dobrym pomysłem. Dlaczego ?
Scenariusz 1: Gracz A atakuje gracza B 100 jednostek (nieistotne jakich). Gracz B ma w momencie zlecenia ataku 20 jednostek(nieistorne jakich, dla uproszczenia niech będą te same co atakujący). Z logicznych powodów atak nie dochodzi od razu, tylko aby zachować trochę realizmu armia musi maszerować. Czyli armia gracza A idze do gracza B przez 2h. W momencie kiedy gracz wysłał atak gracz B zleca budowę 200 jednostek, która potrwa 90 minut. Ale po godzinie musi wyjść z psem na spacer czy co tam innego - wraca po 2h(bo to duży pies i 10km potrzebuje:P). I co teraz? Gracz B przegrywa walkę, bo w danym momencie (czyli po zbudowaniu jednostek i równocześnie 30 minut przed dojściem armii gracza A i faktycznym odpaleniu algorytmu bitwy) nie odświeżył strony.
Scenariusz 2: Sytuacja podobna, tylko że gracz B zamiast budowania jednostek buduje sobie jakiś budunek/strukturę obronną która ma ogromny wpływ na wynik walki z racji swoich parametrów - ale gracz B znowu przegra, bo znowu nie odświeżył strony.
Zaznaczam, żę automatyczne odświeżanie strony w przeglądarce nie wchodzi w grę - nie tak się gra w MMO.
Podsumowując - silnik chodzący w czasie rzeczywistym, niekoniecznie co 1s, przy małym nawale zdarzeń do przerobienia może być rzadziej.
W tym momencie jest wskazówka co do kolejki - zapisujesz w liście zdarzeń: "Podnieś budynek X o jeden poziom". Czas pierwszego zdarzenia ustawiasz na X. Czas końca na Y = X + (czas budowy budynku). Czas poczatkowy drugiego zdarzenia związanego z budową drugiego budynku ustawiasz sobie na Y + 1s (dla pewności), czas końca jego budowy analogicznie jak przy pierwszym. I tak w kółko, Tyczy się nie tylko budynków, ale także jednostek czy co tam sobie wymyślisz. Nie musisz dodawać do tabeli tworzenia budynków poziomu budynku. No chyba że mówimy o tabeli "buildings" która trzyma unikalne ID danej struktury - wtedy poziom budynku jak najbardziej.
BTW. Wbrew pozorom, napisanie gry MMO to wcale nie jest taka prosta sprawa jak się większości wydaje