Es geht weiter!

Nach fast einem Jahr Pause geht es nun weiter mit dem Projekt OctoAwesome! Das NoobDevTv-Team versucht wieder regelmäßig Donnerstags um 19 Uhr einen OctoAwesome-Stream auf den Streaming-Kanäle von NoobDevTv: Twitch, Youtube und Mixer. zu veranstalten! Die neu produzierten Folgen der nun dritten Staffel werden ab jetzt auf deren Youtube-Kanal veröffentlicht.

Chunk Serializer: Unterschied zwischen den Versionen

Aus OctoAwesome Wiki
Wechseln zu: Navigation, Suche
Zeile 9: Zeile 9:
  
 
== Links ==
 
== Links ==
[https://github.com/tomwendel/octoawesome/blob/master/OctoAwesome/OctoAwesome.Runtime/ChunkSerializer.cs Die Implementierung auf GitHub]
+
* [https://github.com/tomwendel/octoawesome/blob/master/OctoAwesome/OctoAwesome.Runtime/ChunkSerializer.cs Die Implementierung auf GitHub]
 +
* [http://doc.octoawesome.net/html/T_OctoAwesome_Runtime_ChunkSerializer.htm Dokumentation]

Version vom 27. Januar 2016, 12:39 Uhr

Zur Chunk-Serialisierung wird ein eigenes, selbst entwickeltes und speziell auf unsere Anforderungen optimiertes Dateiformat verwendet. Der Chunk-Serializer schreibt die daten binär mit Hilfe des BinaryWriters in die .chunk-Datei. Wie der Name schon sagt, wird jeweils nur ein Chunk auf einmal serialisiert. Der Speicherverbrauch einer Chunkdatei beträgt ~33KB.

Header

Im Header wird dem Programm mitgeteilt, welche Blocktypen auf dem Chunk verwendet werden. Zuerst wird ein Flag als byte geschrieben, was angibt ob mehr (1) oder weniger (0) als 255 Blocktypen verwendet werden. Heute immer 0 (mangels Angebot an Plugins). Danach wird die eigentliche Anzahl der Blocktypen entweder als byte (<255 Blocktypen) oder als ushort (>255 Blocktypen) geschrieben. Anschließend werden die Namen der Blocktypen als string geschrieben (z.B. OctoAwesome.Basics.GrassBlockDefinition).

Daten

Jetzt werden die eigentlichen Daten der Blöcke als lineares Array geschrieben: Zuerst der Index der BlockDefinition (Typumstellung genauso bei 255 Blocktypen, siehe oben). Blocktyp 0 ist ein leerer Luftblock. Dann folgt ein int mit beliebigen Metadaten, falls der Blocktyp dies mit BlockDefinition.HasMetadata anfordert.

Links