Published May 29, 2023
| Version v0.8.0
Software
Open
mlange-42/arche: Arche v0.8.0
Description
Highlights
Entity relations were added as a first-class feature (#231, #271)
Relations are used to represent graphs of entities, e.g. hierarchies. They can be added, removed and queried just like normal components. The new feature offers ergonomic handling of entity relations, and provides relation queries with native performance.
Breaking changes- Removed
World.Batchfor entity batch creation, useBuilderinstead (#239) - Rework of generic entity creation API, use
MapX.New,MapX.NewWith,MapX.NewBatchandMapX.NewQuery(#239, #252) - Stats object
WorldStatsetc. adapted for new structure of archetypes nested in nodes (#258) - Removed generic filter method
FilterX.Filter(#271) - Method
Batch.NewQueryrenamed toBatch.NewBatchQ(#298)
- Relation archetypes are removed when they are empty and the target entity is dead (#238, #242)
- Support an unlimited number of cached filters, instead of 128 (#245)
WorldStatscontains the number of cached filters (#247)- Archetypes with entity relations are removed on
World.Reset(#247) - Capacity increment can be configured separately for relation archetypes (#257)
- Adds methods for faster, unchecked entity relation access (#259)
- Re-introduce
World.Batchfor batch-processing of entities (add/remove/exchange) (#264) - New method
Builder.Addfor adding components with a target to entities (#264) - New method
Batch.SetRelationfor batch-setting entity relations (#265) - New methods
Builder.AddQ,Builder.RemoveQetc. to get a query over batch-processed entities (#297) - Sends an
EntityEventto the world listener on relation target changes (#265)
- Reduce memory footprint of archetypes by moving properties to nodes (#237)
- Queries iterate archetype graph nodes in an outer loop, potentially skipping nested relation archetypes (#248)
- Relation archetypes are recycled in archetype graph nodes (#248)
- Already empty archetypes are not zeroed on reset (#248)
- Optimize
RelationFilter: get archetype directly instead of iterating complete node (#251) - Cached filters use swap-remove when removing an archetype (#253)
- Speed up generic query re-compilation after changing the relation target (#255)
- Speed up archetype and node iteration to be as fast as before the new nested structure (#270, #288)
- Filter cache stores archetype graph nodes instead of archetypes (#276) (#288)
- Use
uint32instead ofuintptrfor indices and query iteration counter (#283) - Cached filters use a map for faster removal of archetypes (#289)
- Speed up iterating through many archetypes by approx. 10% (#301)
- Adds an example for creating and querying entity relations (#256)
- Adds a section on entity relations to the
ARCHITECTURE.mddocument (#256) - Replace Aos benchmarks plot in README for pointer iteration fix #284 (#285)
- Adds a plot for entity relation benchmarks to ARCHITECTURE.md (#290)
- Adds an outline of the most important types and functions to each sub-package (#295)
- Remove go-gameengine-ecs from Arche benchmarks (but not from competition!) (#228)
- Reduce memory size of
Queryand internal archetype list by 8 bytes (#230) - Generic filters are locked when registered for caching (#241)
- Adds benchmarks for getting and setting entity relations (#259)
- Arche now has an official logo (#273)
- Use for loop with counter in AoS competition benchmarks, to allow for pointers (#284)
Files
mlange-42/arche-v0.8.0.zip
Files
(174.5 kB)
| Name | Size | Download all |
|---|---|---|
|
md5:a7a33ad652dea5060832e55f2941b525
|
174.5 kB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/mlange-42/arche/tree/v0.8.0 (URL)