Module specs::saveload [] [src]

Serialization/deserialization for the world state. Save and load entities from various formats with serde.

WorldSerialize / WorldDeserialize

This module provides two SystemData implementors:

  • WorldSerialize and
  • WorldDeserialize

Fetching those makes it very easy to serialize or deserialize components. However, be aware that you cannot fetch storages used in WorldDeserialize with the same system. E.g. type SystemData = (WorldDeserialize<'a, Marker, MyError, (Pos, Vel)>, WriteStorage<'a, Vel>) is not valid since both WorldDeserialize and WriteStorage would fetch the same component storage mutably.

WorldSerialize implements Serialize and WorldDeserialize implements DeserializeSeed, so serializing / deserializing should be very easy.

Markers

Let's start simple. Because you usually don't want to serialize everything, we use markers to say which entities we're interested in. However, these markers aren't just boolean values; we'd like to also have id spaces which allow us to identify entities even though local ids are different. And the allocation of these ids is what MarkerAllocators are responsible for. For an example, see the docs for the Marker trait.

Structs

EntityData

A struct used for deserializing entity data.

U64Marker

Basic marker implementation usable for saving and loading

U64MarkerAllocator

Basic marker allocator

Traits

DeserializeComponents

A trait which allows to deserialize entities and their components.

Marker

This trait should be implemented by a component which is going to be used as marker. This marker should be set to entity that should be serialized. If serialization strategy needs to set marker to some entity then it should use newly allocated marker from Marker::Allocator.

MarkerAllocator

This allocator is used with the Marker trait. It provides method for allocation new Markers. It should also provide a Marker -> Entity mapping. The maintain method can be implemented for cleanup and actualization. See docs for Marker for an example.

SerializeComponents

A trait which allows to serialize entities and their components.