Automatische aktualisierung

07/09/2012 18:28 Sura1506#1
Hallo,
für ein Browsergame, das ich gerade (versuche) zu programmieren, brauch ich nun eure Hilfe.
Im Moment bin ich soweit, das der Spieler Ressourcen hat, die Sekündlich um eine gewissene Anzahl steigen. Nun steh ich vor dem Problem, das wenn der Benutzer die Seite verlässt, die Rohstoffe nicht weitergehen.
Jetzt hab ich mir gedacht, das ein Script auf dem Server die akt. Anzahl eines Rohstoffes aus der DB rausliest, zu diesem dann einen gewissen %-Satz dazuzählt und diesen wieder einspeichert.
Nur bin ich mir nicht sicher, ob dies auch zeitlich passen würde, wenn es jetzt um die 10.000+ Benutzer gibt.

Wisst ihr weiter?

Lg
07/09/2012 18:41 Eliminator8391#2
Vielleicht Uhrzeit + Datum abspeichern, wann das letzte mal Rohstoffe hinzugefügt wurden. Beim nächste Login abfragen und die differenz ist die vergangene Zeit.
Also:
Vergangene Zeit = (z.B.) 2h = 120 min.
Rohstoffe pro Minute = 50
(Vergangene Zeit * Rohstoffe/min) + abgespeicherte Rohstoffe
dann haste es eig

hoffe es war verständlich :)
07/09/2012 18:46 Sura1506#3
Verständlich ist es, aber da hab ich noch eine Frage.
Der Benutzer kann z.b. eine Mine ausbauen. Wenn die Miene fertig ist, dann erhöht sich der %-Satz. Und ab da sollte dann die Mine mehr Rohstoffe produzieren. Aber mit der Zeit wär das ja nicht realisierbar, zumindest wüsste ich nicht wie.
Und (ich bin mir nicht ganz sicher) wenn der Benutzer die Rechnerzeit verstellt, wird dann nicht eine andere Zeit in die Datenbank eingespeichert? Also könnte man sich nicht dadurch Rohstoffe erschummeln?

Lg und danke für die schnelle Antwort
07/09/2012 19:02 Eliminator8391#4
Also wegen der Rechnerzeit: [Only registered and activated users can see links. Click Here To Register...] -> Zeit wird vom Server genommen. Nur der Administrator kann diese verändern

Mit der Mine wird das Komplizierter. Am besten du Baust in der Rohstoff-tabelle noch eine Spalte ein, ob gerade eine Miene ausgebaut wird (wenn ja, welche).
Dann in einer anderen Tabelle alles was gerade gebaut wird Abspeichern, oder was eben gebaut wurde, wann es fertig gestellt wird und so weiter.

Dadurch kannst du zurück rechnen, wie viee Rohstoffe mit der alten Miene "gemacht" wurden, und wie viele mit der neuen (besseren).
07/09/2012 19:10 Sura1506#5
Vielen Dank, ich probiers es mal aus. Fals ich noch Fragen hab lwerde ich die hier posten :)
07/09/2012 23:54 Fratyr#6
Bevor die erhöhte Stufe der Mine in die Datenbank einträgst, aktualisierst du einfach die Ressourcenproduktion. Ich stand damals vor dem selben Problem als ich noch mit meinem Space Pioneers "PServer" Projekt beschäftigt war. Zur Veranschaulichung mal die relevanten 2 Zeilen:

PHP Code:
$this->resource->update_produ();
$this->constructions->push_level($uid$bid); 
Wobei $uid die user ID und $bid die Gebäude ID ist.
07/10/2012 01:05 Eliminator8391#7
Man könnte auch einfach in einer Tabelle die Rohstoffproduktion jeder Stufe deklarieren. Dann könntest es a) immer anpassen und b) direkt dort auslesen
d.h. du ließt aus, welche Stufe dein Gebäude ist. Dann aus der Tabelle, wie viel Rohstoffe/min und dann eben berechnen.