Ressourcenproduktionsberechnung

Aus IceWars Dokumentation
Wechseln zu: Navigation, Suche

Was erfährt man in diesem Artikel?
Grundlagen über die interne Berechnung von allen möglichen fortlaufenden Zahlen, speziell bei Abwesenheit des Spielers im Account

Was erfährt man nicht in diesem Artikel?
Genaue Formeln wie die Berechnung von irgendwas abläuft. Wenn du diese suchst, am besten gar nicht erst weiter lesen :)


Das Icewars-System[Bearbeiten]

Icewars berechnet alle Produktionsdaten in Echtzeit, d.h. wenn man z.B. 60 Eisen die Stunde produziert, steigt jede Minute die Eisenanzahl auf Lager um eins an. (Im Gegensatz zur so genannten Tick-Berechnung, bei der erst nach z.B. 60 Minuten einmal alle Änderungen berechnet werden) Dies führt zu einigen Problemen, speziell dazu, dass ja eigentlich jede Sekunde jeder Wert der aufsteigt oder absteigt neu berechnet wird. Bei allein 11 Anzeigen in der Ressourcenübersicht, guten 5-7 Planeten pro Spieler, 5000 Accounts + jede Menge weitere Berechnungen bei Flotten, Bau und Ähnlichem kommt man schnell auf viele Millionen Berechnungen und Datenbankenzugriffen die pro Sekunde ausgeführt werden müssten. Das überfordert auch größere und spezialisierte Datenbankrechner sehr schnell. Deshalb werden in Icewars alle fortlaufenden Anzeigen aktualisiert wenn von der Userseite eine Aktualisierung angefordert wird.

Beispiel: Es ist 12:00, man schaut in den Account, hat 1.000 Eisen und produziert 600 Eisen die Stunde. Das System speichert dann Spieler hat um 12:00 1.000 Eisen auf Planet 1 und produziert 600 Eisen. 5 Minuten später aktualisiert man die Seite und das System rechnet: Jetzt ist es 12:05, vorheriger Eintrag ist 12:00, Zeitdifferenz 5 Minuten, 5 Minuten mal 600 Eisenproduktion die Stunde sind 50 Eisen. Also wird dann gespeichert: Spieler hat um 12:05 1.050 Eisen auf Planet 1 und produziert 600 Eisen.

Nun die erste Besonderheit: Dem User werden bei allen Angaben normalerweise nur 2 Nachkommastellen angezeigt. Das System rechnet aber intern mit mehr Nachkommastellen. Dies kann zu Verwirrungen führen wenn man versucht seine Produktion genau auszurechnen, allerdings Abweichungen im Zehnerbereich bis Hundertstel feststellt. z.B. bei Credits passiert es leicht, dass durch Rundungen die angezeigten Werte nicht mit der eigentlichen, offensichtlichen Berechnung übereinstimmen. Dies ist kein Bug, sondern einfach eine durch den Komfort der Rundung bedingte Folge.

Wenn man das Grundlegende System nun verstanden hat, zwängt sich natürlich sofort die eigentliche Frage auf: Was passiert mit Werten, die sich ändern, wenn ich nicht da bin und nicht von mir oder einem Sitter aktualisiert wird? z.B. steigende Bevölkerung in Bezug auf Wasserverbrauch, der sich ja alle paar Sekunden ändern kann. Um komplexe, rechenintensiv und fehleranfällige Berechnungen zu vermeiden wird hier der Weg des geringsten Widerstandes gegangen, es wird einfach mit den letzten Werten gerechnet.


Erläuterungen mit Beispielen und Fragen & Antworten[Bearbeiten]

Mit dem Wissen von oben lassen sich viele "merkwürdige" Effekte erklären bei denen man denkt, die Berechnung passt doch hinten und vorne nicht.


Beispiel: man hat (100) 0 / 2.000 / 2.500 Bevölkerung und (20) 1.000 Wasser. d.h. eigentlich wären in 5 Stunden 500 Bev dazugekommen (weil bei 2.500 max) und die Wasserproduktion wäre dann bei 10. Wenn man sich die 10 Stunden allerdings nicht einloggt, rechnet das System diese 10 Stunden mit den gegebenen Werten, also +100 Bev und +20 Wasser. Wenn man sich nach 10 Stunden einloggt, hat man demzufolge (0) 500 / 2.500 / 2.500 Bevölkerung und (10) 1.200 Wasser.


Aus dem Forum bekannte Beispiele: Creditseinnahmen. Da die Credits von mehreren Planeten zusammengelegt werden kann es zu auf den ersten Blick merkwürdigen Effekten kommen. Angenommen man hat 2 Planeten, Planet 1 +300 Credits, Planet 2 -100 Credits. Global also +200 Credits. Dazu momentan 1.000 Credits. Wenn man nun gerade auf der Bauseite auf Planet 2 ist, eine Stunde im Account nichts macht und dann die Seite aktualisiert, zeigt der momentane Creditsbestand 900 Credits an, obwohl man eigentlich ein positives Einkommen von 200 hat. Dies liegt daran, dass nur Planet 2 aktualisiert wird, also nur die -100 Credits aktualisiert werden. Wenn man jetzt Planet 1 aktualisiert, werden direkt die dortige Produktion von 300 Credits die Stunde gutgeschrieben und man hat den korrekten Endstand von 1.200 Credits.

Zufriedenheit. Wenn aus irgendwelchen Gründen (in Abwesenheit) die Zufriedenheit sinkt, sodass sie einen negativen Wert erreicht (z.B. durch nachwachsende Bevölkerung), wird der neue Wert erst beim nächsten Aktualisieren zur Berechnung genutzt. Dadurch kann man z.B. trotz des massivem Minus der in Abwesenheit nach Bau eines orbitalen Habitats entstanden ist, trotzdem beim nächsten Planeten aktualisieren noch volle Zufriedenheit haben (Beispiel: 100 (-2) ).


Wann wird aktualisiert? Bei allen Aktivitäten am und im Account. Im einzelnen: eigener Login, Sitterlogin und Scans oder Raids. Wobei immer der damit zusammenhängende Planet nur aktualisiert wird. d.h. wenn man bei Planet 1 auf die Bauseite klickt, wird Planet 2 nicht aktualisiert. Alle Planeten gleichzeitig werden nur unter Kolo-/Ressübersicht aktualisiert.

Produzieren fertig gestellte Gebäude sofort oder erst nach der nächsten Aktualisierung? Fertig gestellte Gebäude produzieren ab dem Fertigstellungszeitpunkt. Sprich, wenn es 12:00 ist, man 5 Stunden nicht im Account ist und um 14:00 wird eine kleine Eisenmine fertig, hat man um 17:00 schon 60 Eisen mehr, da 3 Stunden 20 Eisen mehr produziert wurden.


todo: Mehr Beispiele aus dem Forum einfügen