![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 30 Dołączył: 22.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam pytanie trapiące moją ciekawość, jak w grach online robią przyrost surowców może coś sie dowiem czego nie wiem
Próba 1: Wrzuciłem wykonywanie skryptu do crontaba jenak ma to wade wykonuje się co minuta niby ok ale wizualnie do kitu no i jak wiemy w tych grach często liczą się sekundy Próba 2: Użyłem biblioteki jquery i odświeżam sobie stronkę zapisując aktualną datę do bazy powiedzmy co 15s. Wizualnie wszytko OK jednak wada jest taka ze wylogowując się surowce nie rosną , chodź po kolejnym lgowaniu przyrost się wyrównuje to jednak nie ma to sensu. Próba3: Strona odświeżająca się co 15s jednak trzymać ciągle on-line mało stabilne rozwiązanie. Odpowiadając na trapiące pytania nie piszę gry jednak jestem bardzo ciekawy jak to jest rozwiązywane w tych grach on-line. Pozdrawiam prz3kus |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 508 Pomógł: 75 Dołączył: 2.11.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Tworzysz klasę/funkcję (użyję przykładu klasy) User_Updater. Robisz metody odpowiedzialne za aktualizowanie surowców - User_Updater::minerals($userID), odświeżanie wysłanych skanów/ataków - UserUpdater::attacks($userID) itd. W tych metodach piszesz skrypty obliczające aktualną ilość surowców (sposób podany jest wyżej), sprawdzających i przetwarzających ataki, które się skończyły jakiś czas temu i cokolwiek dusza zapragnie. Zawsze, gdy jest potrzebna aktualna ilość surowców gracza, stan jego floty albo ilość aktualnie wyprodukowanych jednostek do walki, wywołujesz te metody. Muszą być napisane przemyślanie i z głową, żeby nie było sytuacji, gdy po ataku gracz zabierze tyle surowców, ile jest w tym momencie, a nie godzinę temu, kiedy atak się odbył. Jest wiele innych sposób na rozwiązanie problemu. Mi akurat takie coś przyszło do głowy.
EDIT: A pomyślałeś o czymś w stylu sleep() ? Z tego co wnioskuję to prawdopodobnie grasz w Delirium (IMG:style_emoticons/default/winksmiley.jpg) Walisz sleep na ileś sekund lub ustawiasz wręcz określoną godzinę poprzez time_sleep_until() i zapominasz. sleep() usypia cały interpretator PHP, żaden inny skrypt w tym czasie nie będzie się wykonywał. Ten post edytował franki01 4.09.2009, 20:58:32 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 01:24 |