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
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))