Einzelnen Beitrag anzeigen

Benedikt Magnus

Registriert seit: 6. Jul 2012
Ort: Bonn
190 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Stellaris SaveGame Datei einlesen

  Alt 15. Apr 2020, 18:08
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:
  • Es gibt kein globales Objekt.
  • Statt durch Kommata sind Einträge durch Zeilenumbrüche getrennt.
  • Schlüssel sind nicht in Anführungszeichen umfasst.
  • Schlüssel und Wert sind durch ein Gleichheitszeichen anstatt durch einen Doppelpunkt getrennt.
  • Listen nutzen wie Objekte geschweifte anstatt eckige Klammern.
  • Es gibt keine Booleans und kein "null".
  • Bestimmte Eigenschaftswerte (Strings ohne umschließende Anführungszeichen) sind erlaubt, bspw. "yes", "no", "none", "planet", "male", etc.
  • Es gibt einen zusätzlichen Listentyp: Einträge getrennt durch Leerzeichen (bspw. "{ no no no no }).
(Es kann durchaus sein, dass ich etwas vergessen habe.)

Eine alle oben umfassenden Besonderheiten wären im folgenden Beispiel zu finden:

Code:
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
      }
   }
}
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!

Geändert von Benedikt Magnus (15. Apr 2020 um 18:11 Uhr)
  Mit Zitat antworten Zitat