Currently Online

Latest Posts

Topic: Neues Volk - Europäer

MarkMcWire
Avatar
Joined: 2017-02-08, 21:06
Posts: 105
Ranking
Likes to be here
Posted at: 2020-02-01, 13:20

Nach meinem letzten Update habe ich einen neuen Fehler:

widelands: /home/fedora/widelands/src/logic/map_objects/description_maintainer.h:82: Widelands::DescriptionIndex Widelands::DescriptionMaintainer<T>::add(T*) [with T = Widelands::BuildingDescr; Widelands::DescriptionIndex = unsigned char]: Assertion `index < (Widelands::INVALID_INDEX - 2)' failed. Aborted (Speicherabzug geschrieben)

Liegt an dem neuen Trainingsgebäude "europeans_trainscamp_sword". Ich finde aber den Fehler nicht.


Top Quote
hessenfarmer
Avatar
Joined: 2014-12-11, 23:16
Posts: 1116
Ranking
One Elder of Players
Location: Bavaria
Posted at: 2020-02-01, 14:13

Wann kommt denn der Fehler. Bei mir läuft es nämlich. konnte das neue Gebäude auch bauen


Top Quote
Nordfriese
Avatar
Joined: 2017-01-17, 18:07
Posts: 633
Ranking
One Elder of Players
Location: 0x55555d3a34c0
Posted at: 2020-02-01, 14:14

Sieht komisch aus. Da ich nicht davon ausgehe, dass du 2³² Gebäudetypen definierst, wäre eine Backtrace hilfreich. Kannst du widelands in gdb laufen lassen und dann die Backtrace abfragen?

gdb ./widelands
run
[... auf das Assert warten ...]
bt

Top Quote
MarkMcWire
Avatar
Joined: 2017-02-08, 21:06
Posts: 105
Ranking
Likes to be here
Posted at: 2020-02-01, 14:40

Wenn ich ein Trainingsgebäude auskommentiere, egal welches, dann geht es. Hab jetzt die Guardhall entfernt.

Edited: 2020-02-01, 14:40

Top Quote
hessenfarmer
Avatar
Joined: 2014-12-11, 23:16
Posts: 1116
Ranking
One Elder of Players
Location: Bavaria
Posted at: 2020-02-01, 15:21

ok found it and it might be severe although easy to fix.
every entity (building, worker, immovable) in widelands gets a description index which is unique per type by which it is referenced. However this is declares as uint_8 so we simply reached the limit of this value for the buildings. I suggest to increase this as we would have reached it with the amazons and the next tribe as well. But I don't know whether there are any hardcoded values of 256 in the code somewhere. This could be tricky.


Top Quote
Nordfriese
Avatar
Joined: 2017-01-17, 18:07
Posts: 633
Ranking
One Elder of Players
Location: 0x55555d3a34c0
Posted at: 2020-02-01, 15:31

Und ich dachte immer, DescriptionIndex wäre uint32_t face-shock.png Das sollten wir wirklich dringend ändern.

255 ist nirgnedwo hardcoded, dafür verwenden wir die Konstante Widelands::INVALID_INDEX.

Ich weiß allerdings nicht, ob in savegames DescriptionIndices als 8-bit oder 32-bit gespeichert werden (ich habe immer 32-bit verwendet), daher müsste man etliche Dateien durchgehen, um zu sehen, wo bei einer Anpassung auf uint32_t Kompatibilitätscode nötig ist...


Top Quote
hessenfarmer
Avatar
Joined: 2014-12-11, 23:16
Posts: 1116
Ranking
One Elder of Players
Location: Bavaria
Posted at: 2020-02-01, 15:36

na ja uint_32 muss es aus meiner Sicht nicht sein uint_16 sollte auch reichen, da bisher ja 8 bit auch gereicht haben. kann nicht sagen, ob wir sonst zu viel Speicher verbrauchen, da ja jede Instanz glaub ich ihren Index mitnimmt.


Top Quote
Nordfriese
Avatar
Joined: 2017-01-17, 18:07
Posts: 633
Ranking
One Elder of Players
Location: 0x55555d3a34c0
Posted at: 2020-02-01, 15:48

Die meisten MapObjects haben nur einen Zeiger auf ihre zugehörige Descr, daher ändert sich hier nichts. Der einzige Ort, wo der Speicherplatzverbrauch nennenswert erhöht wird, ist die Liste der Economy Targets in jeder Economy.
Überschlagsrechnung: Sagen wir, wir haben 8 Spieler mit je 100 Economies (jeder isolierte Förster ist eine eigene Economy). Und ein Volk verwende 40 Waren mit target. Macht 100 * 8 * 40 = 32000 Variablen mit einer Gesamtgröße von 32 kb (jetzt), 64 kb (16 bit) oder 128 kb (32 bit). Das ist nicht allzu viel, also können wir gleich 32 bit nehmen.

Edit: Falsch, es ist nicht mal das. Der zusätzliche Platzbedarf ist wirklich zu vernachlässigen.

Noch ein edit: Und in Mehrpielerspielen werden DescrIndices für PlayerCommands ausgetauscht, aber auch das ist vernachlässigbar wenig

Gute Überlegungen darüber gibt es hier: https://github.com/widelands/widelands/issues/2994

Edited: 2020-02-01, 15:55

Top Quote
WorldSavior
Avatar
Joined: 2016-10-15, 04:10
Posts: 1434
Ranking
One Elder of Players
Location: GER
Posted at: 2020-02-01, 17:10

@MarkMcWire: Zum Thema Englisch kann ich den deepl-Übersetzer empfehlen.

MarkMcWire wrote:

Die Wächterhalle habe ich als Trainingsgebäude umfunktioniert, wo man die Defense mit Schilden und Helmen trainieren kann. Mich hat bei den Atlantern dieses Gebäude immer schon irgendwie gestört, weil es die selbe Funktion wie der Bergfried hat

Hat es nicht. Die Stärke der Wächterhalle ist ihre Kapazität (kostet allerdings einen Diamanten), die Stärke des Bergfriedes ist seine Sichtweite (und er hat mehr Eroberungsradius & Heilungspotenzial, und die Kosten beinhalten einen Stoff).

Bier, Starkbier, Met und Wein nutze ich nur zum Training des Ausweichens. Passt ja irgendwie zum Alkohol.^^

Eigentlich nicht face-wink.png


“It's a threat to our planet to believe that someone else will save it.” - Robert Swan

Top Quote
MarkMcWire
Avatar
Joined: 2017-02-08, 21:06
Posts: 105
Ranking
Likes to be here
Posted at: 2020-02-01, 17:20

Ich habe das Schwert-Training in ein eigenes Gebäude ausgegliedert. Trotzdem zeigt sich bei mir immer noch das gleiche Verhalten, dass die KI in den anderen Gebäuden Speere, Dreizacke und Äxte auf jeweils 1 pro Waffe reduziert in den Gebäuden und die Schwerter werden voll aufgefüllt. Scheint also was Anderes dahinter zu stecken.


Top Quote