View Issue Details

IDProjectCategoryView StatusLast Update
0002196EresseaLERNE/LEHREpublic2025-01-18 11:54
ReporterEnno Assigned ToEnno  
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionwon't fix 
Product Version3.8.4 
Fixed in Version3.26 
Summary0002196: Akademie: "race condition" in teach_cmd and study_cmd payment calculation
Description

In teach_cmd werden die Kosten des Lernens in der Akademie berechnet, und geschaut, ob die Zieleinheit genug Geld im Pool hat. Das wird für jede Einheit gemacht, aber da dort das Silber nicht verbraucht wird, können die in der Theorie alle das selbe Silber deklarieren (danke Pool). Verbraucht wird das Silber dann erst in study_cmd.

Da die Menge der Lerntage in teach_cmd gesetzt wird (teaching_info.value), ist es in study_cmd dann zu spät, um auf Geldmangel zu reagieren.

Steps To Reproduce

Dafür einen Test zu schreiben, ist leider schwer, denn teach_cmd und study_cmd sind ziemlich uneinsichtig und miteinander durch die teaching_info Struktur verhakelt.

Additional Information

Es wäre gut, die einzelnen Schritte (lernen, lehren, bezahlen) besser zu ordnen. Die Bezahlung von Akademien schon in teach_cmd machen. Das Lernen des Akademie-Lehrers evtl. erst in study_cmd machen?

Die Repräsentation der Lern-Chance als double ist extrem blöd, weil intern immer noch technisch mit Lerntagen (Bruchteile von 30) gearbeitet wird.

learn_skill wird z.Z. mehrfach aufgerufen, wenn die Chance > 100% ist, das sollte evtl. einfach nach learn_skill intern verlegt werden, und so auch die Umrechnung von Tagen in Chancen.

Wir haben drei Mechanismen zur Inspektion:

  • random_source_inject_constant(0.0)
  • inject_learn(fun)
  • config_set("study.random_progress", "0")

Das sollte evtl. zuerst einmal auf einen einzigen Mechanismus reduziert werden (ein eigenes Modul fuer das logging von inject_learn ueber eine Art expect-Pattern koennte klappen).

TagsNo tags attached.
Faction0
GameE2
Report0

Activities

Enno

Enno

2020-09-16 18:31

administrator   ~0009069

Den Fehler habe ich die Tage erneut gefunden, und beschlossen, dass es für den Lehrer keinen Nachteil haben soll, wenn die Schüler wegen Silbermangels nur teilweise von der Akademie profitieren.

Issue History

Date Modified Username Field Change
2016-03-11 20:47 Enno New Issue
2016-03-11 21:11 Enno Assigned To => Enno
2016-03-11 21:11 Enno Status new => assigned
2017-12-05 18:43 Enno Status assigned => confirmed
2020-09-16 18:31 Enno Status confirmed => resolved
2020-09-16 18:31 Enno Resolution open => won't fix
2020-09-16 18:31 Enno Fixed in Version => 3.26
2020-09-16 18:31 Enno Note Added: 0009069
2025-01-18 11:54 Xolgrim Status resolved => closed