Skip to content

engine-v2.0.0

Compare
Choose a tag to compare
@friflo friflo released this 10 Jun 08:10
· 588 commits to main since this release

New Features

  • Introduced Systems, System Groups with command buffers and performance monitoring.
    Details at README - Systems
  • Added support for Native AOT.
    Details at Wiki ⋅ General - Native AOT.
  • Enabled sharing a single QueryFilter instance by multiple queries.
    Changing a query filter - e.g. adding more constrains - directly changes the result set of all queries using the queryFilter.
    var query = store.Query<....>(queryFilter);
  • Added CommandBuffer.Synced intended to record entity changes in parallel query jobs.

Performance

  • Improved bulk creation of entities by 3x - 4x with Archetype.CreateEntities(int count).
    See performance comparison at ECS Benchamrks.
  • Reduced memory footprint of an entity from 48 bytes to 16 bytes.
    See column Allocated in ECS Benchamrks.
  • Decreased initial component type registration from 80 ms to 23 ms (Mac Mini M2).
    Note: Component type registration runs only once per process on the first ECS API call.

Fixes

  • Fixed issue related to JSON serialization. See #45
    Before: Component types with unsupported field types caused an exception.
    Fix: These unsupported field types are now ignored by JSON serializer.
  • Parallel queries: fixed entities - of type ChunkEntities - used as last parameter in a ArchetypeQuery.ForEach(). See #50
    query.ForEach((..., entities) => { ... });
    Before: entities returned always the same set of entities.
    Fix: entities now returns the entities assigned to a thread.
  • Adding a Signal handler to an entity already having a Signal handler replaced the existing one. See #46

Project

  • Simplify project structure for Friflo.Engine.ECS.
    Reduced number of files / folders in Engine folder from 21 to 7.
  • Moved documentation and examples from README.md to GitHub ⋅ Wiki pages.