Christoph Jeschke: Seitenaufbau pausieren

Beitrag lesen

Guten Tag,

was gibt es noch für möglichkeiten einen seitenaufbau zu pausieren den ein
spieler schwer oder gar nicht umgehen kann? oder hat jemand eine andere idee
wie ich mein problem lösen kann?

Das Problem beim Schlafen ist, dass der Prozess weiterläuft und mit dem sleep() blockiert wird. Ggf. kann das bedeuten, dass ein ganzer Fork des Webservers, wenn ein Modul verwendet wird, blockiert ist.

So ein Spiel basiert üblicherweise auf Ticks. Ein Tick stellt eine bestimmte Zeiteinheit da, z.B. eine Minute. Ein Task im Spiel kostet dann, ggf. neben Ressourcen, eine gewisse Anzahl an Ticks. Intern wird abgespeichert, wann ein Task begonnen wurde. So kann zu jedem späteren Zeitpunkt berechnet werden, ob ein Task bereits abgeschlossen wurde oder wann er abgeschlossen sein wird.
Der Benötigte-Anzahl-an-Ticks-Counter wird dann für jeden Task zum Ende eines jeden Ticks dekrementiert. Ist der Counter bei Null angelangt, ist ein Task abgeschlossen.

Stürzt z.B. der Prozess ab, der für die Dekrementierung der Ticks sorgt, geht zumindest die vergangene Zeit nicht verloren. Früher waren solche Spiele häufig nicht sehr stabil.

Gruß
Christoph Jeschke

--
Zend Certified Engineer
Certified Urchin Admin