settlers-united / orga

0 stars 0 forks source link

S4 Fische schwimmen und werden zu 0 Kohle #61

Open itsRobStar opened 2 years ago

itsRobStar commented 2 years ago

Wenn ein Fisch auf ein 15er Fisch Feld drauf schwimmt wird der Wert um 1 erhöht, was dann mit 16 jedoch nicht mehr Fisch, sondern 0 Kohle entspricht. Auf Felder mit 0 Fisch sollten Fische weiterhin nicht schwimmen können

JHNP727 commented 2 years ago

Ich kann mir nicht vorstellen, dass das normalerweise passiert und sie das komplett vergessen haben abzuprüfen. Woran macht ihr das mit der Kohle fest/wie hat sich das gezeigt?

itsRobStar commented 2 years ago

Wir haben die Werte im Arbeitsspeicher zur Laufzeit ausgelesen. Da konnte man super erkennen, wie der Fischer arbeitet, wie sich die Fischwerte ändern und auch wie die Fische "umherschwimmen". Immer wieder wurde ein 15er Fischvorkommen zu einer 16 und ein anliegendes Fischvorkommen ist um einen Wert gesunken. Aus diesem 16er Feld hat der Fischer dann nichts mehr gefischt. Zudem deckt sich dies mit den hohen Unregelmäßigkeiten im Ertrag der Fischer bei gleich großen Vorkommen, die vor einigen Monaten versucht wurden quantitativ zu beschreiben, was jedoch nicht gelungen ist.

Dass der Wert 16 dann Kohle vom Wert 0 entspricht ist aus dem Karteneditor abgeleitet. Hier lassen sich die Ressourcen auf die Karte setzen, wo sie entsprechend optisch angezeigt werden. Aus einer weiteren Betrachtung des Arbeitsspeichers war ersichtlich, dass Ressourcen an einem Ort durch denselben Byte codiert sind. Für den Wert 0 zeigte der Editor kein grafisches Ressourcensymbol an. Für die Werte 1-15 zeigte er Fisch in den entsprechenden Mengen an, bei 16-31 ein Kohlesymbol. Dabei entsprechen die Werte 17-31 Kohle der Menge 1-15, die im Editor auch per Hand so platziert werden können, sofern das Terrain an der Stelle Fels ist. Da bei dem Wert 16 vom Editor ein Kohlesymbol angezeigt wird, wo zudem der Balken zur Mengenanzeige ganz tief steht, ist davon auszugehen, dass dies 0 Kohle entspricht.

JHNP727 commented 2 years ago

Da war der Entwickler wahrscheinlich etwas abwesend als er den Code von S3 rüberkopiert hat, weil dort wird das korrekt geprüft.

Die Originallogik ist folgende: Ein Fisch kann auf ein angrenzendes Wasserfeld schwimmen, sofern dort weniger als 15 Fisch vorhanden sind (also bei 0 schwimmt er auch dorthin). Gibt es einen Grund warum dies nicht möglich sein soll?

Dazu muss man wissen, dass Fischer nur unmittelbar von dem Feld fischen, in das die Angel gehalten wird. Wenn das Feld auf 0 sinkt, könnte dann dort auch kein Fisch mehr hinschwimmen. Das kann zu starken Verzerrungen in der Förderrate führen, wenn ein Feld einmal auf 0 gesunken ist, und dann nie mehr fördern kann, während jemand anderes Glück hatte und immer wieder Fische dorthin geschwommen sind.

kdsystem1337 commented 1 year ago

@itsRobStar kannst du noch mehr informationen (stellen, saves) bereitstellen?