Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002279EresseaMACHEöffentlich2017-05-26 06:33
ReporterEON Bearbeitung durchEnno  
PrioritätnormalSchweregradkleinerer FehlerReproduzierbarnicht getestet
Status geschlossenLösungerledigt 
Produktversion3.10.7 
Zielversion3.11Behoben in Version3.11 
Zusammenfassung0002279: Zuviel Eisen aus der Region abgezogen
Beschreibung

Zwei meiner Zwerge mit T24 haben diese Woche (1011) in einem Bergwerk 50 Eisen produziert. Nach meinem Verständnis müssten 15 Eisen von der Region abgezogen werden (50 0,6 0,5) wegen Zwergenbonus und Bergwerk. Es wurden aber 16 abgezogen.

TagsKeine Tags zugeordnet.
ParteigLod
SpielE2
Report1011

Notizen / Dateien

Xolgrim

Xolgrim

2017-02-04 19:54

Tester   ~0006951

Zuletzt bearbeitet: 2017-02-13 16:50

Die Angabe einer Einheitennummer wäre gut.

Ich hab auch einen ähnlichen Fall.

Schüler von Ranvrim (nmho) in Xorlosch (0,0) produziert 360 Eisen. Eisen(34): 289 -109

3600,60,5=108

Das Bergwerk gibt ja +1 auf die Abbaumenge. Wird der Zwergenbonus darauf eventuell nicht angerechnet?

Die Rechnung wäre dann: 3590,60,5+(1*0,5)=108,2 -> gerundet 109

Die Rechnung für EON: 480,60,5+(2*0,5)=15,4 -> gerundet 16

Würde zumindest das beobachtete Verhalten erklären.

Das wäre nun vermutlich kein Beinbruch, aber gegen die in der Anleitung erklärte Regelung

https://wiki.eressea.de/index.php/Andere_Geb%C3%A4ude#Bergwerk

EON

EON

2017-02-04 20:10

Reporter   ~0006952

Stimmt, die Einheitennummer habe ich vergessen. Die betroffene Einheit ist Dorian (j682)

Enno

Enno

2017-02-13 20:44

Administrator   ~0006964

Fließkommazahlen haben ja numerische Probleme. 0.3 * 50 = 15, sollte man denken, aber 0.3 ist so eine Zahl, die man nicht als Fliesskommazahl darstellen kann (0.6 entsprechend auch schon nicht). Es schleicht sich da so viel Fehler rein, dass am Ende 15.000000596046448 heraus kommt, und das ist mehr als 15, deshalb wird im klassischen Eressea-Stil aufgerundet auf 16.

Fließkomma-Arithmetik ist ein Übel, das muss ich mal ausmerzen. Der Produktionscode ist aber leider eine Katastrophe, und total unübersichtlich.

EON

EON

2017-02-13 21:00

Reporter   ~0006967

Wäre es nicht möglich, dem Fließkommaproblem zu entkommen indem zuerst multipliziert wird? Also Anzahl Eisen 5 (bei Bergwerk) 6 (bei Zwerg) und dann /10 bzw. 100? Im schlimmsten Fall ist das eine Multiplikation mit 30 vor der Division, das sollte den Zahlenraum eines Integers doch eigentlich nicht sprengen, oder? So gehen wir bei unseren Sensorknoten an das Problem heran, allerdings schneiden wir dann auch bei der Division einfach ab, was für Eressea eher unpassend wäre ;-)

Enno

Enno

2017-02-13 21:04

Administrator   ~0006968

Wenn man keine Kommazahlen verwendet, hat man kein Problem mit Kommazahlen, das ist schon richtig. Leider hat der Code sich das nicht zu Herzen genommen, und die Produktion von Ressourcen ist ungemein kompliziert. economy.c, wo der Großteil davon drin steckt, hat 3160 Zeilen. Das kriegt man nicht leicht geändert. Da runde ich evtl. einfach lieber alles ab, und nehme Fehler in der anderen Richtung in Kauf.

Enno

Enno

2017-02-15 20:50

Administrator   ~0006974

Nochmal für mich selbst zum merken:

  1. Das Bergwerk hat Materialkosten Faktor 0.5
  2. Zwerge haben Materialkosten Faktor 0.600000024 (hier ist der Fehler)
Enno

Enno

2017-02-15 20:51

Administrator   ~0006975

Ich habe jetzt einen unit-test, der das reproduziert.

Enno

Enno

2017-02-15 21:14

Administrator   ~0006976

Den Fliesskomma-Mist kriege ich da auf die Schnelle nicht raus, aber ich kann an der Rechnung ein bisschen wackeln, bis meine Tests passen. Das gefällt mir natürlich nicht, aber es scheint zu klappen.

Da ich deinen Report von vorher nicht habe, bin ich darauf angewiesen, dass Du mir bestätigst, ob das jetzt so stimmt:

Dorian (j682) in Eisenwacht (2,-3) produziert 50 Eisen. Eisenwacht (2,-3), Berge, 1464 Steine/20, 33 Eisen/23, ...

bzw. bei Xolgrim: Schüler von Ranvrim (nmho) in Xorlosch (0,0) produziert 360 Eisen. Xorlosch (0,0), Berge, 290 Eisen/34

Enno

Enno

2017-02-15 21:18

Administrator   ~0006977

PR https://github.com/eressea/server/pull/656 (wartet nur noch auf Bestätigung, dass das Ergebnis so okay ist).

Xolgrim

Xolgrim

2017-02-16 07:50

Tester   ~0006978

@Enno: Aus dem Report von 1011: Xorlosch (0,0), Berge, 289 Eisen/34 Bei dir wäre also das weg gerundete Eisenerz. Von meiner Seite ok.

Enno

Enno

2017-02-16 20:10

Administrator   ~0006979

Eine Geschichte fällt mir noch auf: Einige Gebäude geben zwar +1 auf das Talent, aber das wird nicht mit eingerechnet in der Frage, ob die Einheit einen Gegenstand produzieren kann. Das ist aber scheinbar egal, weil alle Rohstoffe ein Minimal-Talent von 1 haben.

Enno

Enno

2017-02-16 20:53

Administrator   ~0006980

Änderung ist akzeptiert.

Enno

Enno

2017-02-17 22:07

Administrator   ~0006981

PR, der Fließkomma-Dreck durch Brüche ersetzt: https://github.com/eressea/server/pull/657

Enno

Enno

2017-05-26 06:33

Administrator   ~0007226

Die Version 3.11 ist historisch, alle gefixten Bugs scheinen keine Probleme zu haben.

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2017-02-04 16:35 EON Neuer Eintrag
2017-02-04 19:54 Xolgrim Notiz hinzugefügt: 0006951
2017-02-04 20:10 EON Notiz hinzugefügt: 0006952
2017-02-13 15:14 Enno Bearbeitung durch => Enno
2017-02-13 15:14 Enno Status neu => zugewiesen
2017-02-13 16:50 Xolgrim Notiz bearbeitet: 0006951
2017-02-13 20:44 Enno Notiz hinzugefügt: 0006964
2017-02-13 21:00 EON Notiz hinzugefügt: 0006967
2017-02-13 21:04 Enno Notiz hinzugefügt: 0006968
2017-02-15 20:50 Enno Notiz hinzugefügt: 0006974
2017-02-15 20:51 Enno Notiz hinzugefügt: 0006975
2017-02-15 21:14 Enno Notiz hinzugefügt: 0006976
2017-02-15 21:18 Enno Notiz hinzugefügt: 0006977
2017-02-16 07:50 Xolgrim Notiz hinzugefügt: 0006978
2017-02-16 20:10 Enno Notiz hinzugefügt: 0006979
2017-02-16 20:53 Enno Status zugewiesen => erledigt
2017-02-16 20:53 Enno Lösung offen => erledigt
2017-02-16 20:53 Enno Behoben in Version => 3.11
2017-02-16 20:53 Enno Notiz hinzugefügt: 0006980
2017-02-17 22:07 Enno Notiz hinzugefügt: 0006981
2017-02-26 20:42 Enno Produktversion => 3.10.7
2017-02-27 11:02 Enno Zielversion => 3.11
2017-05-26 06:33 Enno Notiz hinzugefügt: 0007226
2017-05-26 06:33 Enno Status erledigt => geschlossen