Binäre Serialisierungs-API

Einführung

Godot verfügt über eine einfache Serialisierungs-API, die auf Variant basiert. Sie wird verwendet um Datentypen effizient in ein Array von Bytes zu konvertieren. Diese API wird in den Funktionen get_var und store_var von File sowie in den Paket-APIs für PacketPeer verwendet. Dieses Format wird nicht für binäre Szenen und Ressourcen verwendet.

Paketspezifikation

Das Paket ist so konzipiert, dass es immer auf 4 Bytes aufgefüllt wird. Alle Werte sind Little-Endian-codiert (kleinstwertige Byte zuerst). Alle Pakete haben einen 4-Byte-Header, der eine Ganzzahl darstellt und den Datentyp angibt:

Art

Wert

0

null

1

bool

2

integer (Ganzzahl)

3

float

4

Zeichenkette

5

vector2

6

rect2

7

vector3

8

transform2d

9

plane

10

quat

11

aabb

12

basis

13

transform

14

Farbe

15

Node-Pfad

16

rid

17

Object

18

Wörterbuch

19

array

20

raw array

21

int array

22

real array

23

string array

24

vector2 array

25

vector3 array

26

Farb-Array

27

max

Darauf folgt der tatsächliche Paketinhalt, der für jeden Pakettyp unterschiedlich ist. Beachten Sie, dass dies voraussetzt, dass Godot mit Fließkommzahlen einfacher Genauigkeit kompiliert wird. Dies ist die Standardeinstellung. Wenn Godot mit Fließkommzahlen doppelter Genauigkeit kompiliert wurde, sollte die Länge der "Float"-Felder in Datenstrukturen 8 und der Offset (offset - 4) * 2 + 4 betragen. Der Typ "float" selbst verwendet immer die doppelte Genauigkeit.

0: null

1: bool

Offset

Länge

Art

Beschreibung

4

4

Ganze Zahl

0 für "False", 1 für "True"

2: int

Offset

Länge

Art

Beschreibung

4

8

Ganze Zahl

64-Bit-Ganzzahl mit Vorzeichen

3: float

Offset

Länge

Art

Beschreibung

4

4

Fliesskommazahl

IEE 754 32-Bit Fliesskommazahl

4: String

Offset

Länge

Art

Beschreibung

4

4

Ganze Zahl

String Länge (in Bytes)

8

X

Bytes

UTF-8-codierte Zeichenfolge

Dieses Feld wird auf 4 Bytes aufgefüllt.

5: Vector2

Offset

Länge

Art

Beschreibung

4

4

Fliesskommazahl

X Koordinate

8

4

Fliesskommazahl

Y Koordinate

6: Rect2

Offset

Länge

Art

Beschreibung

4

4

Fliesskommazahl

X Koordinate

8

4

Fliesskommazahl

Y Koordinate

12

4

Fliesskommazahl

X Größe

16

4

Fliesskommazahl

Y Größe

7: Vector3

Offset

Länge

Art

Beschreibung

4

4

Fliesskommazahl

X Koordinate

8

4

Fliesskommazahl

Y Koordinate

12

4

Fliesskommazahl

Z Koordinate

8: Transform2D

Offset

Länge

Art

Beschreibung

4

4

Fliesskommazahl

Die X-Komponente des X-Spaltenvektors, auf die über [0][0] zugegriffen wird

8

4

Fliesskommazahl

Die Y-Komponente des X-Spaltenvektors, auf die über [0][1] zugegriffen wird

12

4

Fliesskommazahl

Die X-Komponente des Y-Spaltenvektors, auf die über [1][0] zugegriffen wird

16

4

Fliesskommazahl

Die Y-Komponente des Y-Spaltenvektors, auf die über [1][1] zugegriffen wird

20

4

Fliesskommazahl

Die X Komponente des Ursprungsvektors, Zugriff über [2][0]

24

4

Fliesskommazahl

Die Y Komponente des Ursprungsvektors, Zugriff über [2][1]

9: Plane

Offset

Länge

Art

Beschreibung

4

4

Fliesskommazahl

Normal X

8

4

Fliesskommazahl

Normal Y

12

4

Fliesskommazahl

Normal Z

16

4

Fliesskommazahl

Entfernung

10: Quat

Offset

Länge

Art

Beschreibung

4

4

Fliesskommazahl

Imaginäres X

8

4

Fliesskommazahl

Imaginäres Y

12

4

Fliesskommazahl

Imaginäres Z

16

4

Fliesskommazahl

tatsächliches W

11: AABB

Offset

Länge

Art

Beschreibung

4

4

Fliesskommazahl

X Koordinate

8

4

Fliesskommazahl

Y Koordinate

12

4

Fliesskommazahl

Z Koordinate

16

4

Fliesskommazahl

X Größe

20

4

Fliesskommazahl

Y Größe

24

4

Fliesskommazahl

Z Größe

12: Basis

Offset

Länge

Art

Beschreibung

4

4

Fliesskommazahl

Die X-Komponente des X-Spaltenvektors, auf die über [0][0] zugegriffen wird

8

4

Fliesskommazahl

Die Y-Komponente des X-Spaltenvektors, auf die über [0][1] zugegriffen wird

12

4

Fliesskommazahl

Die Z-Komponente des X-Spaltenvektors, auf die über [0][2] zugegriffen wird

16

4

Fliesskommazahl

Die X-Komponente des Y-Spaltenvektors, auf die über [1][0] zugegriffen wird

20

4

Fliesskommazahl

Die Y-Komponente des Y-Spaltenvektors, auf die über [1][1] zugegriffen wird

24

4

Fliesskommazahl

Die Z-Komponente des Y-Spaltenvektors, auf die über [1][2] zugegriffen wird

28

4

Fliesskommazahl

Die X-Komponente des Z-Spaltenvektors, auf die über [2][0] zugegriffen wird

32

4

Fliesskommazahl

Die Y-Komponente des Z-Spaltenvektors, auf die über [2][1] zugegriffen wird

36

4

Fliesskommazahl

Die Z-Komponente des Z-Spaltenvektors, auf die über [2][2] zugegriffen wird

13: Transform

Offset

Länge

Art

Beschreibung

4

4

Fliesskommazahl

Die X-Komponente des X-Spaltenvektors, auf die über [0][0] zugegriffen wird

8

4

Fliesskommazahl

Die Y-Komponente des X-Spaltenvektors, auf die über [0][1] zugegriffen wird

12

4

Fliesskommazahl

Die Z-Komponente des X-Spaltenvektors, auf die über [0][2] zugegriffen wird

16

4

Fliesskommazahl

Die X-Komponente des Y-Spaltenvektors, auf die über [1][0] zugegriffen wird

20

4

Fliesskommazahl

Die Y-Komponente des Y-Spaltenvektors, auf die über [1][1] zugegriffen wird

24

4

Fliesskommazahl

Die Z-Komponente des Y-Spaltenvektors, auf die über [1][2] zugegriffen wird

28

4

Fliesskommazahl

Die X-Komponente des Z-Spaltenvektors, auf die über [2][0] zugegriffen wird

32

4

Fliesskommazahl

Die Y-Komponente des Z-Spaltenvektors, auf die über [2][1] zugegriffen wird

36

4

Fliesskommazahl

Die Z-Komponente des Z-Spaltenvektors, auf die über [2][2] zugegriffen wird

40

4

Fliesskommazahl

Die X Komponente des Ursprungsvektors, Zugriff über [3][0]

44

4

Fliesskommazahl

Die Y Komponente des Ursprungsvektors. Zugriff über [3][1]

48

4

Fliesskommazahl

Die Z Komponente des Ursprungsvektors, Zugriff über [3][2]

14: Color

Offset

Länge

Art

Beschreibung

4

4

Fliesskommazahl

Rot (normalerweise 0..1, kann über 1 sein für überstrahlende Farben)

8

4

Fliesskommazahl

Grün (normalerweise 0..1, kann über 1 sein für überstrahlende Farben)

12

4

Fliesskommazahl

Blau (normalerweise 0..1, kann über 1 sein für überstrahlende Farben)

16

4

Fliesskommazahl

Alpha (0..1)

15: NodePath

Offset

Länge

Art

Beschreibung

4

4

Ganze Zahl

Zeichenketten Länge, oder neues Format (val&0x80000000!=0 und NameCount=val&0x7FFFFFFF)

für altes Format:

Offset

Länge

Art

Beschreibung

8

X

Bytes

UTF-8-codierte Zeichenfolge

aufgefüllt auf 4 Byte.

für neues Format:

Offset

Länge

Art

Beschreibung

4

4

Ganze Zahl

Anzahl der Unternamen

8

4

Ganze Zahl

Flags (absolut: val&1 != 0 )

Für jeden Namen und Unter-Namen

Offset

Länge

Art

Beschreibung

X+0

4

Ganze Zahl

Zeichenketten Länge

X+4

X

Bytes

UTF-8-codierte Zeichenfolge

Jede Namenszeichenfolge wird auf 4 Bytes aufgefüllt.

16: RID (nicht unterstützt)

17: Object (nicht unterstützt)

18: Dictionary

Offset

Länge

Art

Beschreibung

4

4

Ganze Zahl

val&0x7FFFFFFF = Elemente, val&0x80000000 = shared (Bool)

Then what follows is, for amount of "elements", pairs of key and value, one after the other, using this same format.

19: Array

Offset

Länge

Art

Beschreibung

4

4

Ganze Zahl

val&0x7FFFFFFF = Elemente, val&0x80000000 = shared (Bool)

Then what follows is, for amount of "elements", values one after the other, using this same format.

20: PoolByteArray

Offset

Länge

Art

Beschreibung

4

4

Ganze Zahl

Feld Länge (Bytes)

8..8+Länge

1

Byte

Byte (0..255)

Die Array-Daten werden auf 4 Byte aufgefüllt.

21: PoolIntArray

Offset

Länge

Art

Beschreibung

4

4

Ganze Zahl

Feld Länge (Integer)

8..8+Länge*4

4

Ganze Zahl

32-bit signed integer (Vorzeichen behaftet)

22: PoolRealArray

Offset

Länge

Art

Beschreibung

4

4

Ganze Zahl

Array Länge (Fließkomma)

8..8+Länge*4

4

Ganze Zahl

32-bit IEEE 754 Fließkomma

23: PoolStringArray

Offset

Länge

Art

Beschreibung

4

4

Ganze Zahl

Feld Länge (Zeichenketten)

für jede Zeichenkette:

Offset

Länge

Art

Beschreibung

X+0

4

Ganze Zahl

Zeichenketten Länge

X+4

X

Bytes

UTF-8-codierte Zeichenfolge

Jede Zeichenkette wird auf 4 Bytes aufgefüllt.

24: PoolVector2Array

Offset

Länge

Art

Beschreibung

4

4

Ganze Zahl

Array Länge

8..8+Länge*8

4

Fliesskommazahl

X Koordinate

8..12+Länge*8

4

Fliesskommazahl

Y Koordinate

25: PoolVector3Array

Offset

Länge

Art

Beschreibung

4

4

Ganze Zahl

Array Länge

8..8+Länge*12

4

Fliesskommazahl

X Koordinate

8..12+Länge*12

4

Fliesskommazahl

Y Koordinate

8..16+Länge*12

4

Fliesskommazahl

Z Koordinate

26: PoolColorArray

Offset

Länge

Art

Beschreibung

4

4

Ganze Zahl

Array Länge

8..8+Länge*16

4

Fliesskommazahl

Rot (normalerweise 0..1, kann über 1 sein für überstrahlende Farben)

8..12+Länge*16

4

Fliesskommazahl

Grün (normalerweise 0..1, kann über 1 sein für überstrahlende Farben)

8..16+Länge*16

4

Fliesskommazahl

Blau (normalerweise 0..1, kann über 1 sein für überstrahlende Farben)

8..20+Länge*16

4

Fliesskommazahl

Alpha (0..1)