Eintragsdetails ansehen
ID | Projekt | Kategorie | Sichtbarkeit | Meldungsdatum | Zuletzt aktualisiert |
---|---|---|---|---|---|
0002221 | Eressea | General | öffentlich | 2016-07-26 19:38 | 2020-02-04 20:05 |
Reporter | Xolgrim | Bearbeitung durch | Enno | ||
Priorität | niedrig | Schweregrad | kleinerer Fehler | Reproduzierbar | nicht getestet |
Status | erledigt | Lösung | wiedereröffnet | ||
Produktversion | 3.9.1 | ||||
Zielversion | 3.22 | Behoben in Version | 3.23 | ||
Zusammenfassung | 0002221: Größenbegrenztes Gebäude (Hafen) größer als Maximalgröße | ||||
Beschreibung | Da schaue ich mir gerade so ein wenig die Heimatinsel meines Verbündeten an und stolpere über einen Hafen (max Grösse 25) der Größe 28 hat... Das Pachtstück ist auf Tamanium in der Region "Sirkitofil, Komturei Ostküste" zu bewundern. Hafen a2e (a2e), Größe 28, Hafen. Wann der gebaut wurde und unter welchen umständen das passiert ist, da kann ich leider nicht weiter helfen. | ||||
Tags | Keine Tags zugeordnet. | ||||
Partei | 777 | ||||
Spiel | E2 | ||||
Report | 984 | ||||
Ich gucke mal. Im Code sehe ich da schon eine Grenze: |
|
Ich kann das noch nicht reproduzieren, sehe aber eine ander Unschönheit: Wenn man einen kompletten Hafen gebaut hat, und dann in der kommenden Woche "MACHE HAFEN abcd" befiehlt, bekommt man die Meldung "Hier gibt es schon einen Hafen". Die sollte es eigentlich nur für einen Hafen-Neubau geben, nicht für versuchten Weiterbau an einem existierenden? |
|
Ich kann keinen Fehler finden, der dazu führt, aber kann bestätigen dass der betroffene Hafen in der Tat 28 groß ist. Das ist einer von vier Häfen, die das Problem aufweisen: |
|
Nicht nur Häfen sind von dieser Seuche betroffen: Forgolodh (5scu) (academy size 27 of 25). Die heilige StA☼tte der Druiden (7pf) (stonecircle size 111 of 100). Schule fA¼r Rechnen und Schreiben (uni) (academy size 33 of 25). Pier 42 (dfri) (harbour size 29 of 25). Coa NA3lA«o (6sb) (academy size 26 of 25). Hafen a2e (a2e) (harbour size 28 of 25). Academica Artis Omnis (74bp) (academy size 26 of 25). Tor der Helden von Eternath (kw7s) (portal size 10 of 2). Tor der Helden von Eternath (viw8) (portal size 10 of 2). Karanhaven (qyb2) (harbour size 26 of 25). Akademie (8me3) (academy size 26 of 25). Hafen (vgh5) (harbour size 26 of 25). |
|
Da ich den Fehler nicht reproduzieren kann, habe ich eine Reparatur für existierende Gebäude implementiert, und einen Extra-Check nach MACHE, der anschlagen sollte, wenn ein Gebäude durch den Bau zu groß wurde. Wenn das also in Zukunft noch einmal passiert, sollte ich es merken, und kann den Fehler reparieren. |
|
In E3 gibt es auch zwei Wachen, die größer als 10 Punkte sind. Vielleicht kann ich herausfinden, wann die gebaut wurden, und das über eine Zeit verfolgen? Ich habe da ja noch alle Daten seit dem Start, und die sind nicht groß. |
|
Plan: binäre Suche durch alte Datenfiles machen, die Woche finden, in der diese Wachen zu groß wurden, Problem einzingeln und reparieren. |
|
In E3: THERUM TAURBARAD (w4gz) (watch size 11 of 10). Zwillingsturm (sx6h) (watch size 12 of 10). Wache des Westens (90v2) (watch size 13 of 10). |
|
Ist in E3/190 schon kaputt gewesen. Für ältere Backups muss ich tiefer graben. |
|
Zwischen E3/15 und E3/20 erscheint dieses Gebäude in den Fehlern: Zwillingsturm (sx6h) (watch size 12 of 10). Die beiden anderen sind schon in Runde E3/15 falsch. |
|
Eingekringelt: Zwillingsturm (sx6h) erscheint von Runde 17 auf 18 in der Liste der Fehler. Der neue Code schlägt an, wenn ich Runde 18 neu auswerte: build_building: Assertion `b->type->maxsize <= 0 || b->size <= b->type->maxsize' failed. Der Fehler passiert also in make_cmd, mit dem Befehl "MACHE 2 Wache sx6h", gegeben von Steinträger (f8r5). Kann es an der Mengenangabe liegen? |
|
Neuen Test schreiben, mit Größenangabe. Wenn es das nicht ist, die E3/17 Daten und Befehle neu auswerten und mit dem Debugger steppen, bis ich es verstehe. |
|
Hmm. Test hat nicht geklappt. Zur Repro mal den genauen Fall: Wache, Größe 10 Bauende Einheit steht in der Wache Befehl MACHE 2 Wache sx6h Die Wache ist ein Gebäude mir verschiedenen Ausbaustufen, wie Burgen. Das kompliziert den Code, und die Analyse, ist aber wahrscheinlich nicht relevant, weil der Fehler ja auch bei Akademie und Hafen auftritt? Da gibt es allerdings die Zeilen: if (type->improvement == NULL && completed == type->maxsize) return ECOMPLETE; Q: Wie geht build() mit einer Kette von improvements um? Q: completed ist 10, also größer als maxsize. Das kümmert uns aber nicht? |
|
Bei der Wache ist das Problem wie folgt: building.maxsize ist mit 10 angegeben, aber building->construction hat drei-Stufen, mit construction->maxsize als 5, 5, und -1 respektive. D.h. laut aktuellem Code: die letzte Ausbaustufe (Wachturm) beginnt bei 10, kann aber beliebig groß werden, weil nur construction->maxsize geprüft wird. Für die Regeln heisst das, Wachtürme können beliebig groß sein, und building->maxsize hat keine Auswirkung? Der Hafen und die Akademie sind anders, die haben keine mehreren Ausbaustufen, und construction->maxsize entspricht building->maxsize. Warum die größer sein können, weiß ich immer noch nicht. |
|
Wir haben es so leider nicht in die Anleitung geschrieben, aber ich bin mir sehr sicher, dass Wache bei Größe 10 aufhören sollte und nicht wie eine Zitadelle endlos aussbaubar sein sollte (Wobei so ne größe 6250 Holzburg aus Rollenspiel Sicht sicherlich auch ihren Reitz haben kann). |
|
Ich habe mal eine Email mit Zusammenfassung an eressea-design geschickt. Dieser Bug ist frustrierend. |
|
Kann es sein, dass das passiert, wenn der Hafen z.B. Größe 24 hat und man mit viel Talent und ausreichend Material daran weiter baut? Die Einheit darf also bauen, da noch unter max. Ausbaugröße, sie baut aber nicht bis zur maximal erlaubten Größe, sondern solange ihr Talent, bzw. das Material reicht. Ich erinnere mich dunkel, dass in E3 bei Wachen das das Problem war. |
|
Kann das mit bug 1859 zusammen hängen? Den meinte ich jedenfalls mit "dunkel erinnern". |
|
Das ist möglich, dann wäre das unter Umständen ja schon gefixt. |
|
Ich suche jetzt mal, wo der original im Bug genannte Hafen seine Größe von 25 überschritten hat. In Runde 865 hat der schon Größe 28. Die Datenfiles von Runde 500 und vorher kann ich nicht einlesen. Alles dazwischen muss ich mal aus dem Backup hervor kratzen. |
|
Runde 600 kann gelesen werden, und hat die folgenden fehlerhaften Gebäude: Forgolodh (5scu) (academy size 27 of 25). Die heilige Stätte der Druiden (7pf) (stonecircle size 111 of 100). Shrine of wisdom (uni) (academy size 33 of 25). Pier 42 (dfri) (harbour size 29 of 25). Coa Nólëo (6sb) (academy size 26 of 25). Hafen a2e (a2e) (harbour size 28 of 25). Academica Artis Omnis (74bp) (academy size 26 of 25). Tor der Helden von Eternath (kw7s) (portal size 10 of 2). Tor der Helden von Eternath (viw8) (portal size 10 of 2). Karanhaven (qyb2) (harbour size 26 of 25). Akademie (8me3) (academy size 26 of 25). Hafen (vgh5) (harbour size 26 of 25). Damit fehlt dort: Schule für Rechnen und Schreiben (uni) (academy size 33 of 25). Die ist also erst in einer der Folgewochen (von denen ich Daten haben sollte) zu groß geworden. Darauf werde ich meine Suche mal konzentrieren, denke ich. |
|
Nein, sorry. (uni) ist dabei, heißt nur anders. Und Größe ist auch schon 33/25. |
|
Falsch geguckt. Die Akademie ist schon zu groß, aber heisst da noch anders: Shrine of wisdom (uni) (academy size 33 of 25). Ich muss meine Suche jetzt auf Datenfiles < 600 machen. Seufz. 571 kann ich schon nicht mehr lesen, weil das zu alt für den Code ist. Aber 572 geht, und hat die selben Fehler schon. Das heißt, der Fehler ist in E2 vor Runde 572 passiert, in einem Datenfile, das ich nicht mehr einlesen kann. Damit kann ich das auch nicht einfach reproduzieren. Positiv zu bemerken ist, dass es seit Runde 572 auch nicht wieder passiert ist. Ich werde mich mit einer Reparatur der Gebäude und einigen asserts im Code abfinden müssen, die verhindern, dass das wieder passiert, oder mir sagen, wenn es das tut. |
|
Tritt diese Woche wieder auf, und ich hab's: Wenn man in einem Tunnel Größe 83 den Befehl MACHE 28 BURG gibt, dann wird der bis 110 von 100 ausgebaut. |
|
Bugfix landet im nächsten Release. |
|
Änderungsdatum | Benutzername | Feld | Änderung |
---|---|---|---|
2016-07-26 19:38 | Xolgrim | Neuer Eintrag | |
2016-07-30 20:36 | Enno | Notiz hinzugefügt: 0006648 | |
2016-07-30 20:36 | Enno | Bearbeitung durch | => Enno |
2016-07-30 20:36 | Enno | Status | neu => zugewiesen |
2016-07-30 20:51 | Enno | Notiz hinzugefügt: 0006649 | |
2016-07-30 20:58 | Enno | Notiz hinzugefügt: 0006650 | |
2016-07-30 21:10 | Enno | Notiz hinzugefügt: 0006651 | |
2016-07-30 21:24 | Enno | Status | zugewiesen => erledigt |
2016-07-30 21:24 | Enno | Lösung | offen => nicht reproduzierbar |
2016-07-30 21:24 | Enno | Notiz hinzugefügt: 0006652 | |
2016-07-31 10:20 | Enno | Notiz hinzugefügt: 0006656 | |
2016-07-31 10:22 | Enno | Status | erledigt => Rückmeldung |
2016-07-31 10:22 | Enno | Lösung | nicht reproduzierbar => wiedereröffnet |
2016-07-31 10:22 | Enno | Notiz hinzugefügt: 0006657 | |
2016-07-31 11:00 | Enno | Notiz hinzugefügt: 0006659 | |
2016-07-31 11:05 | Enno | Notiz hinzugefügt: 0006660 | |
2016-07-31 11:09 | Enno | Notiz hinzugefügt: 0006661 | |
2016-07-31 11:14 | Enno | Notiz hinzugefügt: 0006662 | |
2016-07-31 11:15 | Enno | Status | Rückmeldung => zugewiesen |
2016-07-31 11:15 | Enno | Notiz hinzugefügt: 0006663 | |
2016-07-31 13:32 | Enno | Notiz hinzugefügt: 0006664 | |
2016-07-31 16:16 | Enno | Notiz hinzugefügt: 0006665 | |
2016-07-31 17:05 | Xolgrim | Notiz hinzugefügt: 0006666 | |
2016-07-31 18:24 | Enno | Notiz hinzugefügt: 0006667 | |
2016-08-03 22:47 | Julian | Notiz hinzugefügt: 0006668 | |
2016-08-04 21:09 | Julian | Notiz hinzugefügt: 0006669 | |
2016-08-04 21:51 | Enno | Notiz hinzugefügt: 0006670 | |
2016-08-05 09:03 | Xolgrim | Beziehung hinzugefügt | verwandt mit 0001859 |
2016-08-05 21:24 | Enno | Notiz hinzugefügt: 0006671 | |
2016-08-05 22:05 | Enno | Notiz hinzugefügt: 0006672 | |
2016-08-05 22:15 | Julian | Notiz hinzugefügt: 0006674 | |
2016-08-05 22:37 | Enno | Notiz hinzugefügt: 0006676 | |
2016-08-06 14:49 | Enno | Status | zugewiesen => erledigt |
2016-08-06 14:49 | Enno | Lösung | wiedereröffnet => erledigt |
2016-08-06 14:49 | Enno | Behoben in Version | => 3.9.1 |
2016-08-06 14:49 | Enno | Notiz hinzugefügt: 0006680 | |
2016-08-08 12:32 | Enno | Zielversion | => 3.9.1 |
2017-07-17 13:43 | Enno | Beziehung hinzugefügt | verwandt mit 0002337 |
2017-12-05 19:48 | Enno | Status | erledigt => geschlossen |
2020-01-25 21:15 | Enno | Status | geschlossen => Rückmeldung |
2020-01-25 21:15 | Enno | Lösung | erledigt => wiedereröffnet |
2020-01-25 21:15 | Enno | Notiz hinzugefügt: 0008694 | |
2020-01-25 21:15 | Enno | Zielversion | 3.9.1 => 3.22 |
2020-02-04 20:05 | Enno | Status | Rückmeldung => erledigt |
2020-02-04 20:05 | Enno | Behoben in Version | 3.9.1 => 3.23 |
2020-02-04 20:05 | Enno | Notiz hinzugefügt: 0008696 |