Table of Contents

Class SerializationHelper

Namespace
Core.SaveLoad
Assembly
Core.dll

ENGINE LAYER - Low-level binary serialization utilities

Principles:

  • Deterministic serialization (same data = same bytes)
  • Platform-independent (works on Windows/Mac/Linux)
  • Efficient binary format (no JSON/XML overhead)
  • Type-safe helpers for common patterns

Handles:

  • FixedPoint64 (as long RawValue for determinism)
  • NativeArray (raw memory copy)
  • Primitives (int, ushort, string, etc.)
  • Arrays of primitives
public static class SerializationHelper
Inheritance
object
SerializationHelper

Methods

ReadFixedPoint64(BinaryReader)

Deserialize FixedPoint64 from long value

public static FixedPoint64 ReadFixedPoint64(BinaryReader reader)

Parameters

reader BinaryReader

Returns

FixedPoint64

ReadFixedPoint64Array(BinaryReader)

Deserialize array of FixedPoint64 values

public static FixedPoint64[] ReadFixedPoint64Array(BinaryReader reader)

Parameters

reader BinaryReader

Returns

FixedPoint64[]

ReadNativeArray<T>(BinaryReader, Allocator)

Deserialize NativeArray from raw bytes Allocates new NativeArray - caller must dispose

public static NativeArray<T> ReadNativeArray<T>(BinaryReader reader, Allocator allocator) where T : struct

Parameters

reader BinaryReader
allocator Allocator

Returns

NativeArray<T>

Type Parameters

T

ReadNativeArray<T>(BinaryReader, NativeArray<T>)

Deserialize NativeArray from raw bytes into existing array (in-place) Does NOT allocate - reads into provided array Useful for restoring double-buffered arrays without reallocation

public static void ReadNativeArray<T>(BinaryReader reader, NativeArray<T> destinationArray) where T : struct

Parameters

reader BinaryReader
destinationArray NativeArray<T>

Type Parameters

T

ReadSparseUShortArray(BinaryReader)

Read sparse ushort array

public static ushort[] ReadSparseUShortArray(BinaryReader reader)

Parameters

reader BinaryReader

Returns

ushort[]

ReadString(BinaryReader)

Read string with length prefix (null-safe)

public static string ReadString(BinaryReader reader)

Parameters

reader BinaryReader

Returns

string

ReadUShortArray(BinaryReader)

Read ushort array with length prefix

public static ushort[] ReadUShortArray(BinaryReader reader)

Parameters

reader BinaryReader

Returns

ushort[]

WriteFixedPoint64(BinaryWriter, FixedPoint64)

Serialize FixedPoint64 as deterministic long value

public static void WriteFixedPoint64(BinaryWriter writer, FixedPoint64 value)

Parameters

writer BinaryWriter
value FixedPoint64

WriteFixedPoint64Array(BinaryWriter, FixedPoint64[])

Serialize array of FixedPoint64 values

public static void WriteFixedPoint64Array(BinaryWriter writer, FixedPoint64[] values)

Parameters

writer BinaryWriter
values FixedPoint64[]

WriteNativeArray<T>(BinaryWriter, NativeArray<T>)

Serialize NativeArray as raw bytes (fastest, deterministic) IMPORTANT: Only works for blittable structs (no managed references)

public static void WriteNativeArray<T>(BinaryWriter writer, NativeArray<T> array) where T : struct

Parameters

writer BinaryWriter
array NativeArray<T>

Type Parameters

T

WriteSparseUShortArray(BinaryWriter, ushort[])

Write sparse ushort array (only non-zero values) Format: count, [index, value] pairs Efficient for arrays where most values are 0

public static void WriteSparseUShortArray(BinaryWriter writer, ushort[] array)

Parameters

writer BinaryWriter
array ushort[]

WriteString(BinaryWriter, string)

Write string with length prefix (null-safe)

public static void WriteString(BinaryWriter writer, string value)

Parameters

writer BinaryWriter
value string

WriteUShortArray(BinaryWriter, ushort[])

Write ushort array with length prefix

public static void WriteUShortArray(BinaryWriter writer, ushort[] array)

Parameters

writer BinaryWriter
array ushort[]