Eintragsdetails ansehen
ID | Projekt | Kategorie | Sichtbarkeit | Meldungsdatum | Zuletzt aktualisiert |
---|---|---|---|---|---|
0002360 | Eressea | General | öffentlich | 2017-08-22 20:58 | 2017-12-05 19:48 |
Reporter | Enno | Bearbeitung durch | Enno | ||
Priorität | normal | Schweregrad | kleinerer Fehler | Reproduzierbar | nicht getestet |
Status | geschlossen | Lösung | erledigt | ||
Produktversion | 3.12.6 | ||||
Zielversion | 3.14.0 | Behoben in Version | 3.14.0 | ||
Zusammenfassung | 0002360: Durgans Megawald | ||||
Beschreibung | Aus einer Email von Thomas (ts****ge@gmx.de): Du weisst vielleicht, dass Durgan den Megawald in Yggdrasil hat. Ich habe im Chat gelesen, dass sie diesen auf ca. 3,4 Milliarden Baeume aufblasen wollen, genug Weinachtsbaeume sind wohl vorhanden. Ich finde das ja an sich spassig die Grenzen auszutesten, allerdings sehe ich nicht, dass der Code in kernel/region.c das hergibt: int rtrees(const region * r, int ageclass) ... int region_maxworkers(const region r) { int size = production(r); int treespace = (rtrees(r, 2) + rtrees(r, 1) / 2) TREESIZE; return MAX(size - treespace, MIN(size / 10, 200)); } Ich sehe TREESIZE 8, selbst wenn es keine Schösslinge gäbe wäre bei 2*28 - 1 ein Überlauf. Bevor du dir da also die Finger wundsuchst wieso es nen Absturz oder komisches Verhalten gibt, hier ist wohl der Grund Evtl. solltest du mal an der Stelle einen assert einbauen, der dich, falls es wirklich so weit kommt, beim Debugging unterstützt. Ansonsten frage ich mich gerade, wie man als Spieldesigner mit so einer Situation umgeht: nen hartes Limit reinbauen und den Spass verderben, es drauf ankommen lassen und dann ne Meldung rausgeben (Da ist so ein Wald ...) oder was man da tut. Ich fände es auch schade wenn dann so ein komplett krasser Wald auf einmal weg wäre. Aber überall auf 64 bit umstellen kommt mir etwas schwierig vor, wenn ich mir den Code so anschaue. | ||||
Zusätzliche Informationen | Kommentar von Thoralf: Ich glaube, ein fixes Limit ist sinnvoll und durchaus im Sinne des Spiels. Es gibt solche Größen-Limits auch andernorts zB bei Schiffen und manchen Gebäuden. Theoretisch gilt das gleiche Problem auch bei Burgen, Leuchttürmen etc. Irgendwann werden auch dort Limits erreicht, die Integer & Co. zum Überlaufen bringen. Das wäre also kein Bruch im Spiel. Kann man solche Grenzen nicht mit Hilfe irgendwelcher Tools finden, die auf Speicherüberlauf testen? | ||||
Tags | Keine Tags zugeordnet. | ||||
Partei | 0 | ||||
Spiel | E2 | ||||
Report | 1039 | ||||
Die Region hat die ID 156835568, und hat z.Z. 21244160 Bäume. Noch ist das nicht die schlimmste Region. Den Rekord hält immer noch die UFO-Region Vosen mit 40773974 Bäumen. |
|
Gefixt in commit 1ac64650 - bei 100 Mio ist jetzt erst einmal Schluß. |
|
Änderungsdatum | Benutzername | Feld | Änderung |
---|---|---|---|
2017-08-22 20:58 | Enno | Neuer Eintrag | |
2017-08-22 20:58 | Enno | Status | neu => zugewiesen |
2017-08-22 20:58 | Enno | Bearbeitung durch | => Enno |
2017-08-27 20:02 | Enno | Notiz hinzugefügt: 0007420 | |
2017-08-27 20:11 | Enno | Status | zugewiesen => erledigt |
2017-08-27 20:11 | Enno | Lösung | offen => erledigt |
2017-08-27 20:11 | Enno | Behoben in Version | => 3.14.0 |
2017-08-27 20:11 | Enno | Notiz hinzugefügt: 0007421 | |
2017-12-05 19:48 | Enno | Status | erledigt => geschlossen |