Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Timery w grach przeglądarkowych?
Forum PHP.pl > Inne > Hydepark
Pulpetto
Hej,
zaczęło mnie zastanawiać jak zbudowane są takie gry i chodzi mi tutaj konkretnie o wszelkiego rodzaju odliczanie.
To, że jeżeli ktoś buduje budynek i wtedy idzie powiedzmy do bazy zapytanie wpisujące godzinę końca, a potem przy wyświetlaniu strony JS sobie odlicza i przeładowuje stronę i potem idzie wpis do bazy, jest dla mnie w miarę logiczne (nie wiem czy tak jest w prawdziwych grach ale takie rozwiązanie wpadło mi do głowy).
Natomiast jak to się ma do surowców?
Mamy w bazie ileś tam okularów. Produkcja to 3600 okularów na godzinę. I co teraz w przypadku gier, które dynamicznie pokazują ilość surowców (wydaje mi się, że w Ogame chyba tak było)? Jak to się odbywa? Zwykły licznik JS i...? No bo zapytania do bazy co sekunde wpisujące kolejne ilości zarżnęły by serwer...
Wie ktoś jak to jest zorganizowane?
!*!
JS to tylko dodatek. Pobierasz ilość surowców, zapisujesz do cache, jak musisz, odpytujesz serwer (cache np. co 10 min).
Pulpetto
Przez Cache rozumiesz tutaj jakąś zmienną?
Czyli mam ilość surowców w bazie...
Załóżmy, że user zaczyna grę i ma 0 czegoś tam. Póki jest w grze ja trzymam surowiec w zmiennej przez cały czas działania skryptu i modyfikuję to JS i zapisuję do bazy co pewien czas lub podczas requesta o wydanie jakieś tam ilości surowców?
No bo nie rozumiem jednego: tutaj JS to tylko warstwa prezentacji (i nie jest mechanizmem liczenia tych surowców?), a gdzieś w bebechach zmieniam tak naprawdę te ilości?

Jeżeli tak to yb wychodziło na to, że:
w bazie trzymam ilość surowców,
user wchodzi ja odczytuję i trzymam w zmiennych
JS sobie operuje na tych danych - tzn widzi, że tam jakieś cyferki latają ale nie ma to nic wspólnego z realną ilością zapisaną w bazie?
jak chce gdzieś kliknąć to sprawdzam, co? czas? jak wtedy policzyć te surowce jak nie po prostu przepisać wartość którą mam gdzieś tam w JS?
Damonsson
http://forum.mmocenter.pl/f64-budowa-gry-v...yrost-4788.html

Dobrze myślisz, po za jednym: nie możesz przepisywać wartości z JS, bo ktoś może tam wpisać co tylko chce, musisz to wyliczać na podstawie różnic czasu, wszystko masz fajnie opisane w linku wyżej.
Pulpetto
Bardzo Ci dziękuję za odpowiedź smile.gif Przydało się smile.gif
!*!
Cytat
Przez Cache rozumiesz tutaj jakąś zmienną?

I tak i nie. Cache takie najprostsze to plik z danymi np. zapisana tablica ze surowcami, zamiast odpytywać bazę, pobierasz zawartość pliku która jest dokładnie tym samym.

Przejrzyj też linki podane tu Temat: Gry w przegladarce można niekiedy pobrać przykłady takiego działania. Szkoda że planeta php nie działa, pamiętam że ktoś robił takie kursy tworzenia gier.
kitka
Ciekawy poradnik. Mam jeszcze pyatnie o zegar. W niektórych grach przeglarkowych zmiana ustawien czasu na komputerze klienta wplywa na odliczanie w grze. jednak w większosci przypadków mimo zakonczenia odliczania(najczesciej budowy czegośtam) sama operacja nie zostaje zakonczona po stronei serwera. Wniosek z tego jest taki ze czas jaki pookazuje sie użytkownikowi jest oparty na zegarze komputera osobistego a serwer ma własny zegar i sobie wszuyystko przelicza. Moje pytanie jest takie czemu stosuje się takie rozwiazanie? Czy synchronizacja czasu z zegarem servera jest az tak trudna?
Damonsson
Trudna nie jest, a wręcz banalna, ale wyobrażasz sobie stronę, która w 1 sekundzie, musi wysłać do serwera zapytanie o czas, wyświetlić go i jeszcze sprawdzić czy jest aktualny? Przy 300 użytkownikach online, musisz to jeszcze pomnożyć razy 300. Jak wydasz 1000zł miesięcznie na jakiś dobry serwer dedykowany, wtedy można myśleć o takim rozwiązaniu smile.gif

Nikt nie zmienia sobie co godzinę czasu w komputerze, więc nie jest to żaden problem przecież.
!*!
Cytat(Damonsson @ 26.02.2013, 00:41:21 ) *
Trudna nie jest, a wręcz banalna, ale wyobrażasz sobie stronę, która w 1 sekundzie, musi wysłać do serwera zapytanie o czas, wyświetlić go i jeszcze sprawdzić czy jest aktualny? Przy 300 użytkownikach online, musisz to jeszcze pomnożyć razy 300. Jak wydasz 1000zł miesięcznie na jakiś dobry serwer dedykowany, wtedy można myśleć o takim rozwiązaniu smile.gif


Chyba ze zastosuje websockets, wtedy czas jest pobierany tylko z serwera i każdy ma ten sam.
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.