Arche v0.11.0
Arche v0.11.0
Arche is an archetype-based Entity Component System for Go.
Arche's Features
- Simple core API. See the API docs.
- Optional logic filter and type-safe generic API.
- Entity relations as first-class feature. See the User Guide.
- World serialization and deserialization with arche-serde.
- No systems. Just queries. Use your own structure (or the Tools).
- No dependencies. Except for unit tests (100% coverage).
- Probably the fastest Go ECS out there. See the Benchmarks.
Changelog
Release Highlights
Arche now has a dedicated documentation site with a structured user guide and background information. We hope that this will lower the barrier to entrance significantly.
Further, Arche got a few new features:
Query.EntityAt
was added for random access to query entities.- Generic filters now support
Exclusive
, like ID-based filters. - Build tag
debug
improves error messages in a few places where we rely on standard library panics for performance.
Breaking changes
- Renames types in
ecs.stats
to follow Go standards.
stats.WorldStats
->stats.World
,stats.NodeStats
->stats.Node
, ... (#388)
Features
- Adds method
Query.EntityAt()
, useful for things like random sampling of entities (#358) - Adds build tag
debug
to improve error messages in a few places where we rely on standard library panics for performance (#377) - Adds method
FilterX.Exclusive()
to all generic filters (#381)
Documentation
- Adds a dedicated Arche User Guide web site (#380, #382, #383, #384, #385)
- Adds
BENCHMARKS.mdbenchmarks for a tabular overview of the runtime cost of typical Arche ECS operations (#367, #372) - Link benchmarking code in
README.md
and benchmarking tables (#375) - Documents build tags
tiny
anddebug
in package docs ofecs
(#377) - Adds examples to demonstrate the use of non-ECS data structures together with ECS (#379)
Bugfixes
- Prevents using the same component multiple times in any operations, through panic (#357)
Performance
- Generic filters use
Mask
instead of slowerMaskFilter
if no components are excluded (#381)
Other
- Improves error messages for running out of world locks, components or resources, and on unbalanced unlock (#363)
- Adds benchmarks for query creation (#366)
- Upgrade to Go 1.22 in CI (#376)
- Renames directory
examples
to_examples
to accommodate changed test coverage behaviour of Go 1.22 (#376) - In unit tests, error messages of all panics are asserted (#377)