NetworkSchemas

Inherits: Object

Provides various schema serializers

Description

While some method names are abbreviated, they use a few naming schemes. For example:

uint16() - unsigned integer, 16 bits
vec2t() - Vector2, component of specified type
vec3f32() - Vector3, each component as a float32()

To handle collections, see array_of() and dictionary().

Tutorials

Methods

Return Type Name
NetworkSchemaSerializer variant() static
NetworkSchemaSerializer string() static
NetworkSchemaSerializer bool8() static
NetworkSchemaSerializer uint8() static
NetworkSchemaSerializer uint16() static
NetworkSchemaSerializer uint32() static
NetworkSchemaSerializer uint64() static
NetworkSchemaSerializer varuint() static
NetworkSchemaSerializer int8() static
NetworkSchemaSerializer int16() static
NetworkSchemaSerializer int32() static
NetworkSchemaSerializer int64() static
NetworkSchemaSerializer float16() static
NetworkSchemaSerializer float32() static
NetworkSchemaSerializer float64() static
NetworkSchemaSerializer sfrac8() static
NetworkSchemaSerializer sfrac16() static
NetworkSchemaSerializer sfrac32() static
NetworkSchemaSerializer ufrac8() static
NetworkSchemaSerializer ufrac16() static
NetworkSchemaSerializer ufrac32() static
NetworkSchemaSerializer degrees8() static
NetworkSchemaSerializer degrees16() static
NetworkSchemaSerializer degrees32() static
NetworkSchemaSerializer radians8() static
NetworkSchemaSerializer radians16() static
NetworkSchemaSerializer radians32() static
NetworkSchemaSerializer vec2t(NetworkSchemaSerializer component_serializer) static
NetworkSchemaSerializer vec2f16() static
NetworkSchemaSerializer vec2f32() static
NetworkSchemaSerializer vec2f64() static
NetworkSchemaSerializer vec3t(NetworkSchemaSerializer component_serializer) static
NetworkSchemaSerializer vec3f16() static
NetworkSchemaSerializer vec3f32() static
NetworkSchemaSerializer vec3f64() static
NetworkSchemaSerializer vec4t(NetworkSchemaSerializer component_serializer) static
NetworkSchemaSerializer vec4f16() static
NetworkSchemaSerializer vec4f32() static
NetworkSchemaSerializer vec4f64() static
NetworkSchemaSerializer normal2t(NetworkSchemaSerializer component_serializer) static
NetworkSchemaSerializer normal2f16() static
NetworkSchemaSerializer normal2f32() static
NetworkSchemaSerializer normal2f64() static
NetworkSchemaSerializer normal3t(NetworkSchemaSerializer component_serializer) static
NetworkSchemaSerializer normal3f16() static
NetworkSchemaSerializer normal3f32() static
NetworkSchemaSerializer normal3f64() static
NetworkSchemaSerializer quatt(NetworkSchemaSerializer component_serializer) static
NetworkSchemaSerializer quatf16() static
NetworkSchemaSerializer quatf32() static
NetworkSchemaSerializer quatf64() static
NetworkSchemaSerializer transform2t(NetworkSchemaSerializer component_serializer) static
NetworkSchemaSerializer transform2f16() static
NetworkSchemaSerializer transform2f32() static
NetworkSchemaSerializer transform2f64() static
NetworkSchemaSerializer transform3t(NetworkSchemaSerializer component_serializer) static
NetworkSchemaSerializer transform3f16() static
NetworkSchemaSerializer transform3f32() static
NetworkSchemaSerializer transform3f64() static
NetworkSchemaSerializer array_of(NetworkSchemaSerializer item_serializer, NetworkSchemaSerializer size_serializer) static
NetworkSchemaSerializer dictionary(NetworkSchemaSerializer key_serializer, NetworkSchemaSerializer value_serializer, NetworkSchemaSerializer size_serializer) static

Method Descriptions

NetworkSchemaSerializer variant ( ) static

Serialize any data type supported by @GlobalScope.var_to_bytes().

Final size depends on the value.


NetworkSchemaSerializer string ( ) static

Serialize strings in UTF-8 encoding.

Final size depends on the string, the string itself is zero-terminated.


NetworkSchemaSerializer bool8 ( ) static

Serialize booleans as 8 bits.

Final size is 1 byte.


NetworkSchemaSerializer uint8 ( ) static

Serialize unsigned integers as 8 bits.

Final size is 1 byte.


NetworkSchemaSerializer uint16 ( ) static

Serialize unsigned integers as 16 bits.

Final size is 2 bytes.


NetworkSchemaSerializer uint32 ( ) static

Serialize unsigned integers as 32 bits.

Final size is 4 bytes.


NetworkSchemaSerializer uint64 ( ) static

Serialize unsigned integers as 64 bits.

Final size is 8 bytes.


NetworkSchemaSerializer varuint ( ) static

Serialize an unsigned integer as a variable amount of bytes.

Each byte contains 7 bits of data. The 8th bit indicates whether there are more bytes left. Thus, small numbers fitting into 7 bits will be encoded as a single byte, while larger numbers take more space as they increase.

Final size is 1 byte for every 7 bits of numeric data.


NetworkSchemaSerializer int8 ( ) static

Serialize signed integers as 8 bits.

Final size is 1 byte.


NetworkSchemaSerializer int16 ( ) static

Serialize signed integers as 16 bits.

Final size is 2 bytes.


NetworkSchemaSerializer int32 ( ) static

Serialize signed integers as 32 bits.

Final size is 4 bytes.


NetworkSchemaSerializer int64 ( ) static

Serialize signed integers as 64 bits.

Final size is 8 bytes.


NetworkSchemaSerializer float16 ( ) static

Serialize floats in half-precision, as 16 bits.

This is only supported in Godot 4.4 and up, earlier versions fall back to float32().

Final size is 2 bytes, 4 if using fallback.


NetworkSchemaSerializer float32 ( ) static

Serialize floats in single-precision, as 32 bits.

Final size is 4 bytes.


NetworkSchemaSerializer float64 ( ) static

Serialize floats in double-precision, as 64 bits.

Final size is 8 bytes.


NetworkSchemaSerializer sfrac8 ( ) static

Serialize signed fractions in the [-1.0, +1.0] range as 8 bits.

Final size is 1 byte.


NetworkSchemaSerializer sfrac16 ( ) static

Serialize signed fractions in the [-1.0, +1.0] range as 16 bits.

Final size is 2 bytes.


NetworkSchemaSerializer sfrac32 ( ) static

Serialize signed fractions in the [-1.0, +1.0] range as 32 bits.

Final size is 4 bytes.


NetworkSchemaSerializer ufrac8 ( ) static

Serialize signed fractions in the [0.0, 1.0] range as 8 bits.

Final size is 1 byte.


NetworkSchemaSerializer ufrac16 ( ) static

Serialize signed fractions in the [0.0, 1.0] range as 16 bits.

Final size is 2 bytes.


NetworkSchemaSerializer ufrac32 ( ) static

Serialize signed fractions in the [0.0, 1.0] range as 32 bits.

Final size is 4 bytes.


NetworkSchemaSerializer degrees8 ( ) static

Serialize degrees as 8 bits. The value will always decode to the [0.0, 360.0) range.

Final size is 1 byte.


NetworkSchemaSerializer degrees16 ( ) static

Serialize degrees as 16 bits. The value will always decode to the [0.0, 360.0) range.

Final size is 2 bytes.


NetworkSchemaSerializer degrees32 ( ) static

Serialize degrees as 32 bits. The value will always decode to the [0.0, 360.0) range.

Final size is 4 bytes.


NetworkSchemaSerializer radians8 ( ) static

Serialize radians as 8 bits. The value will always decode to the [0.0, TAU) range.

Final size is 1 byte.


NetworkSchemaSerializer radians16 ( ) static

Serialize radians as 16 bits. The value will always decode to the [0.0, TAU) range.

Final size is 2 bytes.


NetworkSchemaSerializer radians32 ( ) static

Serialize radians as 32 bits. The value will always decode to the [0.0, TAU) range.

Final size is 4 bytes.


NetworkSchemaSerializer vec2t ( NetworkSchemaSerializer component_serializer ) static

Serialize Vector2 objects, using component_serializer to serialize each component of the vector.

Serializes 2 components, size depends on the component_serializer.


NetworkSchemaSerializer vec2f16 ( ) static

Serialize Vector2 objects, with each component being a half-precision float.

This is only supported in Godot 4.4 and up. Earlier versions fall back to vec2f32().

Final size is 4 bytes, 8 if using fallback.


NetworkSchemaSerializer vec2f32 ( ) static

Serialize Vector2 objects, with each component being a single-precision float.

Final size is 8 bytes.


NetworkSchemaSerializer vec2f64 ( ) static

Serialize Vector2 objects, with each component being a double-precision float.

Final size is 16 bytes.


NetworkSchemaSerializer vec3t ( NetworkSchemaSerializer component_serializer ) static

Serialize Vector3 objects, using component_serializer to serialize each component of the vector.

Serializes 3 components, size depends on the component_serializer.


NetworkSchemaSerializer vec3f16 ( ) static

Serialize Vector3 objects, with each component being a half-precision float.

This is only supported in Godot 4.4 and up. Earlier versions fall back to vec3f32().

Final size is 6 bytes, 12 if using fallback.


NetworkSchemaSerializer vec3f32 ( ) static

Serialize Vector3 objects, with each component being a double-precision float.

Final size is 12 bytes.


NetworkSchemaSerializer vec3f64 ( ) static

Serialize Vector3 objects, with each component being a double-precision float.

Final size is 24 bytes.


NetworkSchemaSerializer vec4t ( NetworkSchemaSerializer component_serializer ) static

Serialize Vector4 objects, using component_serializer to serialize each component of the vector.

Serializes 4 components, size depends on the component_serializer.


NetworkSchemaSerializer vec4f16 ( ) static

Serialize Vector4 objects, with each component being a half-precision float.

This is only supported in Godot 4.4 and up. Earlier versions fall back to vec4f32().

Final size is 8 bytes, 16 if using fallback.


NetworkSchemaSerializer vec4f32 ( ) static

Serialize Vector4 objects, with each component being a double-precision float.

Final size is 16 bytes.


NetworkSchemaSerializer vec4f64 ( ) static

Serialize Vector4 objects, with each component being a double-precision float.

Final size is 32 bytes.


NetworkSchemaSerializer normal2t ( NetworkSchemaSerializer component_serializer ) static

Serialize normalized Vector2 objects, using component_serializer to serialize each component of the vector.

Serializes 1 component, size depends on the component_serializer.


NetworkSchemaSerializer normal2f16 ( ) static

Serialize normalized Vector2 objects, with each component being a half-precision float.

This is only supported in Godot 4.4 and up. Earlier versions fall back to normal2f32().

Final size is 2 bytes, 4 if using fallback.


NetworkSchemaSerializer normal2f32 ( ) static

Serialize normalized Vector2 objects, with each component being a single-precision float.

Final size is 4 bytes.


NetworkSchemaSerializer normal2f64 ( ) static

Serialize normalized Vector2 objects, with each component being a double-precision float.

Final size is 8 bytes.


NetworkSchemaSerializer normal3t ( NetworkSchemaSerializer component_serializer ) static

Serialize normalized Vector3 objects, using component_serializer to serialize each component of the vector.

Serializes 2 components, size depends on the component_serializer.


NetworkSchemaSerializer normal3f16 ( ) static

Serialize normalized Vector3 objects, with each component being a half-precision float.

This is only supported in Godot 4.4 and up. Earlier versions fall back to normal3f32().

Final size is 4 bytes, 8 if using fallback.


NetworkSchemaSerializer normal3f32 ( ) static

Serialize normalized Vector3 objects, with each component being a single-precision float.

Final size is 8 bytes.


NetworkSchemaSerializer normal3f64 ( ) static

Serialize normalized Vector3 objects, with each component being a double-precision float.

Final size is 16 bytes.


NetworkSchemaSerializer quatt ( NetworkSchemaSerializer component_serializer ) static

Serialize Quaternion objects, using component_serializer to serialize each component of the quaternion.

Serializes 4 components, size depends on the component_serializer.


NetworkSchemaSerializer quatf16 ( ) static

Serialize Quaternion objects, with each component being a half-precision float.

This is only supported in Godot 4.4 and up. Earlier versions fall back to quat32f().

Final size is 8 bytes, 16 if using fallback.


NetworkSchemaSerializer quatf32 ( ) static

Serialize Quaternion objects, with each component being a single-precision float.

Final size is 16 bytes.


NetworkSchemaSerializer quatf64 ( ) static

Serialize Quaternion objects, with each component being a double-precision float.

Final size is 32 bytes.


NetworkSchemaSerializer transform2t ( NetworkSchemaSerializer component_serializer ) static

Serialize Transform2D objects, using component_serializer to serialize each component of the transform.

Serializes a 2x3 matrix in 6 components, final size depends on component_serializer.


NetworkSchemaSerializer transform2f16 ( ) static

Serialize Transform2D objects, with each component being a half-precision float.

This is only supported in Godot 4.4 and up. Earlier versions fall back to transform2f32().

Final size is 12 bytes, 24 if using fallback.


NetworkSchemaSerializer transform2f32 ( ) static

Serialize Transform2D objects, with each component being a single-precision float.

Final size is 24 bytes.


NetworkSchemaSerializer transform2f64 ( ) static

Serialize Transform2D objects, with each component being a double-precision float.

Final size is 48 bytes.


NetworkSchemaSerializer transform3t ( NetworkSchemaSerializer component_serializer ) static

Serialize Transform3D objects, using component_serializer to serialize each component of the transform.

Serializes a 3x4 matrix in 12 components, final size depends on component_serializer.


NetworkSchemaSerializer transform3f16 ( ) static

Serialize Transform3D objects, with each component being a half-precision float.

This is only supported in Godot 4.4 and up. Earlier versions fall back to transform3f32().

Final size is 24 bytes, 48 if using fallback.


NetworkSchemaSerializer transform3f32 ( ) static

Serialize Transform3D objects, with each component being a single-precision float.

Final size is 48 bytes.


NetworkSchemaSerializer transform3f64 ( ) static

Serialize Transform2D objects, with each component being a double-precision float.

Final size is 96 bytes.


NetworkSchemaSerializer array_of ( NetworkSchemaSerializer item_serializer, NetworkSchemaSerializer size_serializer ) static

Serialize homogenoeous arrays, using item_serializer to serialize each item, and size_serializer to serialize the array's size.

To serialize heterogenoeous arrays, use variant() as the item serializer.

Final size is sizeof(size_serializer) + array.size() * sizeof(item_serializer)


NetworkSchemaSerializer dictionary ( NetworkSchemaSerializer key_serializer, NetworkSchemaSerializer value_serializer, NetworkSchemaSerializer size_serializer ) static

Serialize homogenoeous dictionaries, using key_serialize and value_serializer to serialize key-value pairs, and size_serializer to serialize the number of entries.

If either the keys or values are not homogenoeous, use variant().

Final size is sizeof(size_serializer) + dictionary.size() * (sizeof(key_serializer) + sizeof(value_serializer))