Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0001596EresseaGeneralöffentlich2017-03-02 08:15
ReporterKitaktus Bearbeitung durchEnno  
PrioritätnormalSchweregradschwerer FehlerReproduzierbarimmer
Status geschlossenLösungerledigt 
Behoben in Version3.6 
Zusammenfassung0001596: Fehler bei Fliehen aus vorderen Reihen
Beschreibung

Wenn Einheiten aus vorderen Reihen (VORNE, HINTEN, DEFENSIV) fliehen, scheint es einen Fehler zu geben. Entweder beim Abgleich, OB eine Einheit flieht, oder bei der Berechnung der Fluchtwahrscheinlichkeit. Dieser Fehler führt dazu, dass Personen zu selten fliehen.

Zusätzliche Informationen

Die Einheiten

  • VII. Armee V. Korps (ap12), 100 Trolle, vorne (erschöpft)
  • VII. Armee IV. Korps (ap11), 100 Trolle, vorne (erschöpft)
  • VII. Armee III. Korps (nukh), 100 Trolle, vorne (erschöpft)
  • VII. Armee IX. Korps (ap16), 98 Trolle, vorne (erschöpft) eines verbündeten wurden in dieser Woche attackiert. Der Gegner erhielt die Taktikerrunde.

Einheiten vor der 0. Runde: ... Heer 2(DP): 398 Einheiten vor der 1. Runde: ... Heer 2(DP): 276

Heer 2(DP): 398 Tote, 0 Geflohene, 0 Überlebende.

In der 0. Runde starben 122 von 398 Personen. Es ist also davon auszugehen, das etliche der Überlebenden weniger als 25% Trefferpunkte hatten. Keinem einzigen gelang die Flucht.

Ähnliches Verhalten: Runde 629 -- Einheit rn2y (Partei styx - KÄMPFE VORN) Vor 0. Runde: 441 Vor 1. Runde: 257 Keiner floh.

Ich habe die Vermutung, dass die verlorene Taktikerrunde verantwortlich ist. Denkbar wäre, dass die Flucht aus der 1. und 2. Reihe erst ab der 2.Kampfrunde abgefragt wird.

Auch bei Einheiten mit dem Status KAEMPFE FLIEHE beeinflusst die Taktikerrunde die Fluchtchancen. Gibt es keine Taktikerrunde, dann hat man vor dem Kampf offenbar zwei Fluchtversuche. Gewinnt der Gegner die Taktikerrunde, dann hat man vor dem Kampf nur einen Versuch und dafür vor der 1. Runde zwei. Zumindest deuten das meine Beobachtungen an.

TagsKeine Tags zugeordnet.
Partei7
SpielE2
Report633

Notizen / Dateien

Atalanta

Atalanta

2009-08-27 14:15

Entwickler   ~0003962

Zitat: "Personen mit KÄMPFE oder KÄMPFE HINTEN, die nur noch 20% ihrer Trefferpunkte haben und Personen mit KÄMPFE DEFENSIV oder KÄMPFE NICHT, die nur nur noch 90% ihrer Trefferpunkte haben, versuchen ebenfalls zu fliehen, aber erst, wenn sie im Kampf einen Treffer abbekommen haben."

D.h. das die Einheiten sich vermutlich eine Runde lang die Fresse polieren lassen - denn ganz am Anfang der Schlacht sind sie ja noch nicht getroffen werden.

Bruck

Bruck

2009-08-27 21:35

Reporter   ~0003964

Atalanta, es geht nicht um die 0. Runde, sondern "nur" um die 257 in der 1. Runde. Von denen müssen welche unter 20% gewesen sein (k.A. wie viele) und von denen ist keiner erfolgreich geflohen. Selbst wenn nur jeder 10. Verwundet war hätten wenigstens einer erfolgreich fliehen sollen, auch ohne Tarnung. (75%)^25 ist verdammt klein. So haben sie sich verhalten, als ob sie auf AGRESSIV stehen würden.

Atalanta

Atalanta

2009-08-28 08:49

Entwickler   ~0003965

Bruck: Okay, habs verstanden :).

So wie ich das erinnere gibt es vor dem Kampf eine Fliehen-Runde (für Leute, die von Anfang an fliehen), und dann nach jeder Kampfrunde einen weiteren Versuch.

Und ich bin mir nicht sicher, aber sind in beiden Kämpfen dann alle am Ende von Runde 1 verreckt? Eventuell ist dann "nur" die Reaktion auf das Geschlagen-werden in der Taktikrunde verbuggt? Wir sind uns ja alle einig, dass nach der Taktikrunde eigentlich ein paar Jungens hätten fliehen sollen ...

Kitaktus

Kitaktus

2009-09-02 11:58

Reporter   ~0003974

Zuletzt bearbeitet: 2009-10-13 13:07

Zur Information: In beiden Fällen hat niemand die beiden ersten (also 0. und 1.) Kampfrunden überlebt.

Enno

Enno

2015-07-04 17:31

Administrator   ~0005958

Ich habe mal basierend auf den damaligen Daten (Wow, Runde 633 ist schon lange her) eine Neuauswertung gemacht mit aktuellem Code:

Heer 2(7): 380 Tote, 18 Geflohene, 0 Überlebende.

Da flieht also schon jemand, aber nicht viele Leute. Es lohnt ich vielleicht, mal direkt in den Code zu gucken, und zu schauen, ob bei der Flucht die Existenz einer Taktikrunde überhaupt betrachtet wird.

Enno

Enno

2015-07-04 17:41

Administrator   ~0005959

Das erste was ich hier sehe, ist ein Test auf Runde 1 (Taktik ist Runde 0):

if (b->turn == 1) flee_ops = 2;

Das ist die Doppel-Chance am Anfang des Kampfes, die scheinbar erst nach der Taktik-Runde greift. Soll das so sein?

Dann gibt es da noch etwas später was, für Einheiten die nicht fliehen:

if (b->turn <= 1) continue;

Das ist für Einheiten, die verwundet worden sind. Es wird da in der Tat pro Person ein Flag geführt, ob sie getroffen wurde. Aber wenn der Treffer in der Taktikrunde war, dann ignorieren wir ihn eine Runde lang. Warum sollten wir das tun? Getroffen ist getroffen, oder nicht? Hier ist der von OP gemeldete Fehler, denke ich.

Enno

Enno

2015-07-04 17:44

Administrator   ~0005960

Das gleiche gilt übrigens nicht nur für schwer verwundete, sondern auch für von Panik befallene Krieger.

Enno

Enno

2015-07-04 17:52

Administrator   ~0005961

Noch einmal neu ausgewertet mit der Änderung, fliehen da schon deutlich mehr Leute:

Heer 2(7): 354 Tote, 44 Geflohene, 0 Überlebende.

In der Hoffnung, dass das nicht bloss ein stochastischer Fehler ist, erkläre ich diesen Bug damit als gelöst :-)

Enno

Enno

2015-07-04 17:58

Administrator   ~0005962

https://github.com/eressea/server/pull/249

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2009-08-24 17:20 Kitaktus Neuer Eintrag
2009-08-24 17:20 Kitaktus Partei/Faction => 7
2009-08-24 17:20 Kitaktus Report No. => 633
2009-08-27 14:15 Atalanta Notiz hinzugefügt: 0003962
2009-08-27 21:35 Bruck Notiz hinzugefügt: 0003964
2009-08-28 08:49 Atalanta Notiz hinzugefügt: 0003965
2009-09-02 11:58 Kitaktus Notiz hinzugefügt: 0003974
2009-10-13 13:07 Kitaktus Notiz bearbeitet: 0003974
2014-07-23 17:52 CTD Bearbeitung durch => CTD
2014-07-23 17:52 CTD Status neu => zugewiesen
2014-08-14 07:08 Enno Spiel => 2
2015-07-04 17:31 Enno Notiz hinzugefügt: 0005958
2015-07-04 17:41 Enno Notiz hinzugefügt: 0005959
2015-07-04 17:44 Enno Notiz hinzugefügt: 0005960
2015-07-04 17:52 Enno Notiz hinzugefügt: 0005961
2015-07-04 17:58 Enno Notiz hinzugefügt: 0005962
2015-07-04 17:58 Enno Status zugewiesen => erledigt
2015-07-04 17:58 Enno Behoben in Version => 3.6
2015-07-04 17:58 Enno Lösung offen => erledigt
2015-07-04 17:58 Enno Bearbeitung durch CTD => Enno
2017-03-02 08:15 Enno Status erledigt => geschlossen