"Echtzeit Browsergame" ohne Echtzeit, aber wie?

Kipperlenny

Erfahrenes Mitglied
Moin

Sogenannte "Echtzeit Browsergames" sind ja eigentlich gar keine, weil die Zeit die man z.B. braucht um virtuell ein Haus zu bauen viel viel kürzer ist als die Zeit die man in Echt brauchen würde. Dieser Ausdruck sagt ja eigentlich nur aus, dass das Browsergame nicht Runden basiert ist.

Nun meine Frage - realisiert man das durch einen Cronjob der jede Sekunde (Mikrosekunde?) ausgeführt wird, bestimmt nicht, aber wie dann?

Dabei geht es ja um gutschreiben von Rohstoffen, Fertigstellung von Gebäuden, Kämpfe etc.

lenny
 
Einfach jedesmal wenn du die Daten durchgerechnet und Aktualisiert hast speichern.
Und jedesmal wenn ein User etwas macht, werden die Daten aktualisieren die dazu nötig sind.
Im Grunde ziemlich simple.

Ein kleines Beispiel:

Dein Script hat vom letzten aufruf folgende Daten (Zeiten sind natürlich Timestamps).
Holz=500
HolzProduktionProSekunde=10
LetzterAufruf=27.3.08 15:00:00


Jetzt ruft ein User eine Seite auf, auf der dein Aktueller holzbestand steht.
Es holt sich also die daten aus dem Letzten aufruf und hat ausserdem noch die momentane Uhrzeit:
Jetzt=27.3.08 15:10:00


Jetzt rechnet es:
VergangeneZeit=Jetzt-LetzterAufruf
Holz=Holz+HolzProduktionProSekunde*VergangeneZeit


Wenn sich in der zeit die Rohstoffproduktion verändert hat oder einfach etwas geklaut wurde, muss dass natürlich auch berücksichtig werden.



Und das jedesmal wenn etwas passiert. Dabei reicht es nur die Daten, des Users zu berechnen, der auch von einer Aktion betroffen ist.
Wenn also User1 seine Rohstoffmenge betrachtet, müssen dazu nicht die Rostoffe von User123234 berechnet werden.
 
Zuletzt bearbeitet:
Das ist eine gute Idee. Nur beim Plündern, Handeln etc. sind dann ja zwei User betroffen, das ist dann nicht einfach.

Und wenn ein User nicht eingeloggt ist, müssen seine Gebäude ja trotzdem fertig werden (zur richtigen Mikrosekunde). Wenn er z.B. eine Eisenmine baut und diese um 17:00:00Uhr fertig sein soll, dann muss er ja ab genau dieser Sekunde auch mehr Eisen pro Sekunde bekommen.
 
Einfach überprüfen ob zwischen Jetzt und dem letzten Update eine veränderung von z.b. der Produktionsrate stattgefunden hatt und wenn ja dann einfach erst bis zu diesem zeitpunkt updaten und danach mit den neuen Variablen weiterrechnen. Auf Microsekunden rechnet auch wohl kein Browsergame genau. Eher auf Sekunden.
 
Und wenn ein User nicht eingeloggt ist, müssen seine Gebäude ja trotzdem fertig werden (zur richtigen Mikrosekunde). Wenn er z.B. eine Eisenmine baut und diese um 17:00:00Uhr fertig sein soll, dann muss er ja ab genau dieser Sekunde auch mehr Eisen pro Sekunde bekommen.

Versteif dich mal net so sehr auf die Mikrosekunden.Und bei deinem Beispiel muß es nicht sofort durchgeführt werden da reicht es wenn die Berechnung gemacht wird sobald der Spieler wieder online ist.
Keine Angst der Spieler bekommt schon sein mehr Rohstoff. All dies kann man nachträglich berechnen und gutschreiben lassen.
Es wird ja der beginn des Bau gespeichert. Man weiß wie lange der Bau dauert und man weiß wieviel Zeit seit dem Bau vergangen ist. Auf grund der fakten kann man die Rohstoff menge leicht berechnen die der Spieler bekommt.


Bei Kampfscripten wird ein wenig Schwierieger aber das geht auch ohne cronjobs.
(hier müssen dann viele mehrer Faktoren bedacht werden und damit mein ich nicht den kampf selbst)

Mfg Splasch
 

Neue Beiträge

Zurück