Odświeżanie stanu bazy

pyt Q

Witam
Mam takie pytanie. Chce zrobic licznik czasu do zakonczenia jakiejs czynnosci cos takiego jak na ogame albo travian jesli buduje budynek to niezaleznie od tego czy jestem zalogowany czy nie on konczy sie budowac i dodaja mi sie z niego surowce. Jesli użytkownik jest zalogowany to nie ma problemu z czyms takim (to juz gotowe) natomiast problem pojawia sie jak użytkownik nie jest zalogowany. Narazie jedyne wyjscie jakie widze to cron ustawiony co jedna minute i wprowadzający uaktualnienia. Dlatego jestem ciekaw czy może ktoś wie jak coś takiego realizowane jest w takich gierach jak ogame albo travian?

odp A

Mam takie pytanie. Chce zrobic licznik czasu do zakonczenia jakiejs czynnosci cos takiego jak na ogame albo travian jesli buduje budynek to niezaleznie od tego czy jestem zalogowany czy nie on konczy sie budowac i dodaja mi sie z niego surowce. Jesli użytkownik jest zalogowany to nie ma problemu z czyms takim (to juz gotowe) natomiast problem pojawia sie jak użytkownik nie jest zalogowany. Narazie jedyne wyjscie jakie widze to cron ustawiony co jedna minute i wprowadzający uaktualnienia. Dlatego jestem ciekaw czy może ktoś wie jak coś takiego realizowane jest w takich gierach jak ogame albo travian? michael12n pisze:
musisz zacząć myśleć kategoriami nie czasu liniowego tylko zdarzeń w czasie.
przypuśćmy, że jest tak, że: o 12:00 jest budowany budynek A o 13:00 jest budowany budynek B o 14:00 jest budowany budynek C (to powyższe to jest kolejka zdarzeń)
jest 12:30 i zdarzenie o 12:00 już było i budynek stoi. użytkownik loguje się ponownie o 14:30 zatem powinien zobaczyć wszystko to, co się stało od czasu ostatniego logowania (12:30) do teraz (14:30) czyli B i C. Niech skrypt przetworzy oba zdarzenia podczas logowania o 14:30.
oczywiście jeżeli jakieś zdarzenia ma znaczenie nie tylko dla jednego użytkownika ale dla kilku, to oni wszyscy powinni je mieć skolejkowane.

odp A

Witam
Mam takie pytanie. Chce zrobic licznik czasu do zakonczenia jakiejs czynnosci cos takiego jak na ogame albo travian jesli buduje budynek to niezaleznie od tego czy jestem zalogowany czy nie on konczy sie budowac i dodaja mi sie z niego surowce. Jesli użytkownik jest zalogowany to nie ma problemu z czyms takim (to juz gotowe) natomiast problem pojawia sie jak użytkownik nie jest zalogowany. Narazie jedyne wyjscie jakie widze to cron ustawiony co jedna minute i wprowadzający uaktualnienia. Dlatego jestem ciekaw czy może ktoś wie jak coś takiego realizowane jest w takich gierach jak ogame albo travian?
Myślę że można ustawić w bd czas zakończenia budowy. Wtedy to, wystarczy dodać kawałek skryptu, który będzie ten czas kontrolował (i zmieniał stan budowy) - kawałek, który wykonywany będzie każdorazowo podczas generowania strony (dla któregokolwiek użytkownika).
Czyli: przed podjęciem jakichś tam akcji, skrypt sprawdza, czy coś się zbudowało, ew. przekroczyło jakiś tam czas budowy. Sprawdza w kolejności od najwcześniej budowanych, dzięki temu może podjąć ew. jakieś akcje, które mają wpłynąć na inne budowane budynki. Jeśli ważne są momenty czasowe, to można sprawdzać od najwcześniej budowanych i jeśli jakiś budynek zostanie zbudowany, to określić stan pozostałych [budynków czy innych elementów gry] dla tego momentu, w którym został ukończony.
Ja bym tak to zrobił - przynajmniej teraz tak uważam.

odp A

On 15 Maj, 10:51, michael12n
Witam
Mam takie pytanie. Chce zrobic licznik czasu do zakonczenia jakiejs czynnosci cos takiego jak na ogame albo travian jesli buduje budynek to niezaleznie od tego czy jestem zalogowany czy nie on konczy sie budowac i dodaja mi sie z niego surowce. Jesli użytkownik jest zalogowany to nie ma problemu z czyms takim (to juz gotowe) natomiast problem pojawia sie jak użytkownik nie jest zalogowany. Narazie jedyne wyjscie jakie widze to cron ustawiony co jedna minute i wprowadzający uaktualnienia. Dlatego jestem ciekaw czy może ktoś wie jak coś takiego realizowane jest w takich gierach jak ogame albo travian?
Myślę że można ustawić w bd czas zakończenia budowy. Wtedy to, wystarczy dodać kawałek skryptu, który będzie ten czas kontrolował (i zmieniał stan budowy) - kawałek, który wykonywany będzie każdorazowo podczas generowania strony (dla któregokolwiek użytkownika).
Czyli: przed podjęciem jakichś tam akcji, skrypt sprawdza, czy coś się zbudowało, ew. przekroczyło jakiś tam czas budowy. Sprawdza w kolejności od najwcześniej budowanych, dzięki temu może podjąć ew. jakieś akcje, które mają wpłynąć na inne budowane budynki. Jeśli ważne są momenty czasowe, to można sprawdzać od najwcześniej budowanych i jeśli jakiś budynek zostanie zbudowany, to określić stan pozostałych [budynków czy innych elementów gry] dla tego momentu, w którym został ukończony.
Ja bym tak to zrobił - przynajmniej teraz tak uważam.

Tez o tym myslalem ale to tak chyba nie dziala. Zaluzmy ze buduje budynek i u mnie to dziala tak ze po powtornym zalogowaniu cala baza sie updatuje (dotyczaca mnie). Czyli mam te budynki itp. Ale np inni gracze nie zalogowali sie dlatego oni pozostaja w czasie jakby sprzed logowania. Chyba ze zrobic u mnie ze po zalogowaniu updatuja sie rekordy dotyczace wszystkich no ale to mysle ze zalezaloby ile by graczy bylo. W takiej grze gdzie jest kilkanascie tysiecy graczy to by moglo niezle spowolnic wykonywanie sie skryptow.
No i drugi problem z optymalizacja jesli bym powiedzmy siedzial w grze 3 godziny to przy kazdym odswiezeniu strony powinny sie wykonywac te skrypty aktualizacyjne bo ja bym sie rozwinal a ktos kto sie nie loguje by zostal w tyle. A jesli przy kazdym przejciu ze strony na strone lub odswiezeniu by sie updatowala baza dla tysiecy graczy to tez przegiecie.
Dlatego narazie widze rozwiazanie tylko cron

Dodaj odpowiedź

Tytuł:

Mail: (w celu weryfikacji posta)