Skip to content

Releases: mlange-42/arche

Arche v0.15.2

13 Jan 00:04
26c3409
Compare
Choose a tag to compare

Arche v0.15.2

Arche is an archetype-based Entity Component System for Go.

Arche's Features

  • Designed for performance and highly optimized. See the Benchmarks.
  • Well-documented API and comprehensive User Guide.
  • No systems. Just queries. Use your own structure (or the Tools).
  • No dependencies. Except for unit tests (100% test coverage).
  • World serialization and deserialization with arche-serde.

Changelog

Performance

  • Speeds up reset of small archetypes by zeroing memory manually (#475)

Arche v0.15.1

09 Jan 17:37
d5578be
Compare
Choose a tag to compare

Arche v0.15.1

Arche is an archetype-based Entity Component System for Go.

Arche's Features

  • Designed for performance and highly optimized. See the Benchmarks.
  • Well-documented API and comprehensive User Guide.
  • No systems. Just queries. Use your own structure (or the Tools).
  • No dependencies. Except for unit tests (100% test coverage).
  • World serialization and deserialization with arche-serde.

Changelog

Performance

  • Optimizes batch operations (add, remove, exchange) by bulk-copying components (#473)

Documentation

  • Adds benchmarks to the user guide for 1-of-5 components operations (e.g. remove 1 of 5) (#474)

Arche v0.15.0

08 Jan 19:04
9f367b3
Compare
Choose a tag to compare

Arche v0.15.0

Arche is an archetype-based Entity Component System for Go.

Arche's Features

  • Designed for performance and highly optimized. See the Benchmarks.
  • Well-documented API and comprehensive User Guide.
  • No systems. Just queries. Use your own structure (or the Tools).
  • No dependencies. Except for unit tests (100% test coverage).
  • World serialization and deserialization with arche-serde.

Changelog

Arche v0.15.0 features optimizations that vastly speed up the creation of huge numbers (millions) of entities. Namely, all memory is grown exponentially now, rather than linearly. This also causes a breaking change, as the former "capacity increments" turned into just initial capacities.

Further, the README was revised and the ECS competition benchmarks were extended and moved to the go-ecs-benchmarks repository.

Breaking changes

  • Removes ecs.Config; the world is configured with initial capacities directly (#467)

Features

  • Adds methods Batch.New and Batch.NewQ for batch entity creation (#468)
  • Deprecates ecs.Component, as a followup of deprecation of all methods that use it (#470)

Performance

  • Optimizes entity creation by an altered growth policy for archetypes, entity list and entity pool (#464, #466, #469)

Documentation

  • Rewrites features and benchmarks sections of the README (#462)
  • Adds version and CPU information to the benchmarks in the user guide (#462)
  • Removed deprecated methods from the benchmarks in the user guide (#462)
  • Adds world creation and component ID lookup to the benchmarks in the user guide (#462)
  • Uses the new methods Batch.New and Batch.NewQ in examples where applicable, instead of Builder (#470)

Other

  • Uses mask pointers in all tests and benchmarks (#460)

Arche v0.14.5

04 Jan 15:17
b2a90dd
Compare
Choose a tag to compare

Arche v0.14.5

Arche is an archetype-based Entity Component System for Go.

Arche's Features

Changelog

Documentation

  • Adds notes on entity and component pointer usage to docs and the user guide (#455)
  • Improves sub-package documentation for navigation and findability (#457)

Arche v0.14.4

02 Jan 19:37
e08fda8
Compare
Choose a tag to compare

Arche v0.14.4

Arche is an archetype-based Entity Component System for Go.

Arche's Features

Changelog

Performance

  • Optimize mask to types conversion, speeding up archetype creation by up to 150ns (#453)

Arche v0.14.3

01 Jan 22:05
16e3c44
Compare
Choose a tag to compare

Arche v0.14.3

Arche is an archetype-based Entity Component System for Go.

Arche's Features

Changelog

Performance

  • Avoids a bitmask heap escape in world component operations (add, remove, exchange, ...), with around 20ns improvement (#452)

Arche v0.14.2

26 Dec 01:33
ad4aac7
Compare
Choose a tag to compare

Arche v0.14.2

Arche is an archetype-based Entity Component System for Go.

Arche's Features

Changelog

Performance

  • Optimize MapX.Assign and MapX.NewWith by use of World.GetUnchecked (#449)

Documentation

  • Fix method names and ordering in benchmark tables (#448)
  • Document listener notification handling in MapX.NewWith (#450)

Bugfixes

  • Fix missing listener notification in MapX.NewWith when called with a relation target (#450)

Arche v0.14.1

23 Dec 01:36
3597b3e
Compare
Choose a tag to compare

Arche v0.14.1

Arche is an archetype-based Entity Component System for Go.

Arche's Features

Changelog

Features

  • Adds World.NewEntityFn, World.AddFn and World.ExchangeFn that call a callback function before listener notification (#445)

Bugfixes

  • Fixes generic MapX.Assign and MapX.NewWith notifying listeners before setting components (#445, issue #443)

Documentation

  • Removes references to deprecated methods from the user guide (#447)

Other

  • Retract version v0.14.0 due to issue #443 and required features (#446)

Arche v0.14.0

22 Dec 19:55
dc04f9c
Compare
Choose a tag to compare

Arche v0.14.0

Retracted version. Use v0.14.1 instead

Arche is an archetype-based Entity Component System for Go.

Arche's Features

Changelog

Features

  • Slow assignment methods like World.Assign and World.NewEntityWith are deprecated, in favour of their now faster generic counterparts (#441)

Performance

  • Optimizes Map.Set, MapX.Assign and MapX.NewWith, by not using runtime reflection (#440)

Documentation

  • Adds benchmarks for World.Assign and World.NewEntityWith to the user guide (#438)
  • Adds benchmarks for MapX.Assign and MapX.NewWith to the user guide (#440)

Bugfixes

  • Prevents garbage collection of slices and pointers in components added via World.Assign and similar methods (#438, issue #437)

Known issues

  • Generic MapX.Assign and MapX.NewWith notify listeners before setting components (#443)

Arche v0.13.3

27 Nov 00:10
b709940
Compare
Choose a tag to compare

Arche v0.13.3

Arche is an archetype-based Entity Component System for Go.

Arche's Features

Changelog

Performance

  • Simplifies the archetype graph to use only a single list of neighbors per node, saving a bit of memory (#433)

Documentation

  • Adds an example for World.Mask, showing how to check whether a filter "contains" an entity (#428)
  • Adds the beecs implementation of BEEHAVE to the showcase (#429)