- Add entities
- Archetypes
- Queries
- Remove entities
- Support dynamic archetypes
- Add component
- Remove component
- Special Id component
- Restrict generic T on queries and components procs to be tuples
- 'Not' Queries
- 'Opt' Queries
- 'Write' Queries
- Stable ids for components
- Polish console output
- Convenience procs and checks
- Refactor
Idcomponent to aMetadatacomponent with id, removal, and addition info - Additions and removals should be enqueued and consolidated in order later
- Text serialization
- Add
afteroperation mode, that processes add/remove operations after a query is iterated - Minimal events system
- Serialization of world fragments
- Without Id-remapping
- With Id-remapping
- Binary serialization
- Optimization pass
- Query iteration
- Add entity
- Remove entity
- Add component
- Remove component
- To test
- Serialization
- Only listed components are output, unlisted ones are absent.
- Deserializing fewer component types than were written skips the unknown ones.
- Deserializing a component that gained or lost fields keeps the known ones and skips the rest.
- Deserializing a field whose type changed keeps the rest of the component and leaves it at default.
-
{.transient.}fields are not output and set to default on read.
- Error paths
- Accessing an entity that does not exist raises.
- Accessing a component the entity does not hold raises.
- Accessing a default constructed
EntityIdraises.
- Entities
-
addWithSpecificIdcreates the entity under the requested id. -
addWithSpecificIdraises when the id is already taken.
-
- Archetypes
-
cleanupEmptyArchetypesdrops archetypes left with no entities and keeps populated ones. - A query stops yielding archetypes removed by
cleanupEmptyArchetypes. - The
archetypesiterator yields every archetype in the world.
-
- Ids as references
-
removeaccepts anId[T], for a single component and for a tuple.
-
- Serialization
- Tolerate field type changes on read
- Binary, check the value's cbor major type against the field's type before unpacking
- Text, check the json node's kind against the field's type before converting
- A field whose type no longer matches is skipped and left at its default
- A mismatched field does not abort its component, its entity, or the rest of the world
- Nested objects,
seqs and fixed size arrays recover the same way
- glTF serialization
- Implement a Has[T] operation that queries for components without accessing them?
- Integrate with reploid
- Convenience procs
-
componentandcomponentsaccept a list of entity ids - Add and Remove multiple components
-
- Concurrency support
- Zero-allocation?
- Spatial and custom queries