![]() |
Stellaris SaveGame Datei einlesen
Hallo,
das Spiel ![]() Ausschnit einer SaveGame-Datei:
Code:
Informationen zu den Dateien gibt es hier:
version="Verne v2.6.2"
version_control_revision=56809 name="United Hives" date="2248.04.06" player={ { name="unknown" country=0 } } tick=0 random_log_day=0 species={ { name_list="ART2" name="Wraith" plural="Wraith" adjective="Wraith" class="ART" portrait="art5" traits={ trait="trait_intelligent" trait="trait_quick_learners" trait="trait_unruly" trait="trait_enduring" trait="trait_pc_savannah_preference" } home_planet=11 } } ![]() Wegen der Ähnlichkeit zu JSON habe ich versucht es zu konvertieren um die Datei anschließend mit den Delphi-eigenen JSON-Klasse & Routinen einzulesen. Das scheint aber nicht so einfach zu gehen. Hat jemand eine Idee wie man dieses Format am Besten einliest? Gibt es vielleicht eine Unit/Klasse/Komponente? Ist der Ansatz mit der JSON-Konvertierung doch nicht so falsch? Oder komme ich nicht drum herum einen Parser zu schreiben? |
AW: Stellaris SaveGame Datei einlesen
Sieht nach YAML aus.*
Probiere es mal hiermit: ![]() * DISCLAIMER: zwei von drei YAML Online Validatoren sagen das ist valides YAML |
AW: Stellaris SaveGame Datei einlesen
Zitat:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var Doc: IYamlDocument; DocFileName: String; Text: String; begin DocFileName := 'I:\xxx\Stellaris SaveGame\SaveGame-Beispiel.yaml'; Doc := TYamlDocument.Load(DocFileName); Text := Doc.Root.Values['species'].Nodes[0].Values['name'].tostring; ListBox1.Items.Add(Text); end; |
AW: Stellaris SaveGame Datei einlesen
Hallo,
Leerzeichen im Dateipfad? probier das mal DocFileName := '"I:\xxx\Stellaris SaveGame\SaveGame-Beispiel.yaml"'; Und was bringt ein Doc.Root.Count (oder ItemCount) |
AW: Stellaris SaveGame Datei einlesen
Die Speicherstände von Stellaris (genauer: gamestate) sind weder JSON noch YAML sondern ein eigenes Format, das die Clausewitzengine zur Verfügung stellt. Das Format ist damit das gleiche, das auch in anderen Paradoxspielen (bspw. Europa Universalis, Crusader Kings, Hearts of Iron, Victoria...) genutzt wird.
Es gibt mit Sicherheit fertige Editoren dafür, aber vermutlich keine Bibliotheken, sodass man es selbst machen müsste. Die wichtigsten Unterschiede zu JSON sind folgende:
Eine alle oben umfassenden Besonderheiten wären im folgenden Beispiel zu finden:
Code:
In den meisten Fällen entspricht dieses Format gültigem YAML. Andersherum gilt das aber nicht: Nicht jedes gültige YAML ist auch eine gültige Gamestatedatei!
version="Verne v2.6.2"
version_control_revision=56809 date="2248.04.06" required_dlcs={ "Apocalypse" "Horizon Signal" "Megacorp" } planets={ 1534={ name="WX12-677" planet_class="pc_asteroid" coordinate={ x=163.440 y=75.420 origin=149 } automated_development=no favorite_jobs={ } auto_slots_taken={ no no no no no no no no no no no no no no no no } } } |
AW: Stellaris SaveGame Datei einlesen
Zitat:
|
AW: Stellaris SaveGame Datei einlesen
Es gibt bereits Parser, die man z.B. als Python ausführen kann und wo man sich das Ding auch in JSON umwandeln lassen kann.
![]() Sieht so auch, als wenn es nur das Clause-Ding nach JSON gibt, aber wenn man den Text nur lesen, aber nicht ändern will, dann reicht es. ![]() ![]() |
AW: Stellaris SaveGame Datei einlesen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz