Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zwiększanie wartości w bazie wg. czasu
Forum PHP.pl > Forum > PHP
Luke_Star
Ostatnio zzzacząłem grać w Ogame.pl i oczywiscie chyba jak kazdy programista zacząłem analizowac jak to działa. Najbardzije zastanowiła mnie kwestia zwiększania liczby surowców co sekunde. Myślałem że może dałoby sie wykonac taki skrypt przez AJAX'a, tylko jak to miałoby sie do bezpieczeństwa strony. Następnie zastanawiałem sie nad CRON'em ale to byłoby niezbyt delikatne rozwiązanie. Dlatego bardzo mnie męczy jak programiści GameForge poradzili sobie z dynamicznym zwiększaniem liczby surowca dla kilku tysiecy użytkowników naraz nie tracąc przy tym na bezpieczenstwie.
dr_bonzo
A moze baza posiada swoj licznik zwiekszany do kilka minut, ew. przeliczany w momencie zakupu budowli z dokladnosci co do sekundy, a u usera jest tylko 'dummy counter', naliczajacy surowne z podobna predkoscia ale nie majacy zadnego wplywu na gre.

Powiedzmy surowce sa naliczane co godzine. Wlasnie teraz. Po 10ciu sekundach kupujesz Costam. Baza nalicza ci surowcow za 10sekund = X i sprawdza czy mozesz kupic, itd. A w ciagu tych 10sekund licznik u usera wzrosl o X. Tylko to komplikuje sprawe przy cogodzinnym updacie bazy -- bo czesci userom juz zostala naliczona pewna ilosc surowca. Ale 50 nowych if() ow powinno wystarczyc smile.gif

Tylko zgaduje bo nie sprawdzalem.
Luke_Star
Cytat(dr_bonzo @ 13.01.2007, 13:03:16 ) *
A moze baza posiada swoj licznik zwiekszany do kilka minut, ew. przeliczany w momencie zakupu budowli z dokladnosci co do sekundy, a u usera jest tylko 'dummy counter', naliczajacy surowne z podobna predkoscia ale nie majacy zadnego wplywu na gre.


Tylko że problem polega na tym że baz amsuiałaby sie edytowac co sekunde a tym samym zwiekszac wartość na podstawie np wydobycia. A w takim wypadku baza nei za bardzo wystarczy. To strasznie skomplikowane :/
misiek172
mi się wydaje, że to napewno CRON
Luke_Star
Zdaje sie że CRON nie daje aż tak prędkiego odswieżania, po drugie to dość ostre rozwiązanie
dr_bonzo
Cytat
Tylko że problem polega na tym że baz amsuiałaby sie edytowac co sekunde a tym samym zwiekszac

Luke_Star: wlasnie pisalem o tym ze tak nie musi byc.
CHodzilo i o to ze normalnie wylicza sie wszystko np. raz na godzine a gdy user cos kupuje to na bierzaco wylicza sie tylko dla niego.
Luke_Star
Chyba juz rozumiem o co ci chodzi smile.gif
andrzejb
1.
zainicjowanie zmiennych produktow
kola prince 10 | datetime set now()
hamburger price 10 | datetime set now()
2.
minela 1, 2 , 200 , 1000 sekund odswiezenie strony
kola set price now()-kola.datetime*premia | update datetime set now()
hamburger set price set now()-hamburger.datetime*premia | update date...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.