Skip to content

Releases: mlange-42/ark

Ark v0.8.3

Choose a tag to compare

@mlange-42 mlange-42 released this 01 Jun 09:01
f00c5d7

Ark v0.8.3

Ark is an archetype-based Entity Component System (ECS) for Go.

Changelog

Performance

  • Caches archetype index, speeding up entity creation by 20-50% (#509)

Ark v0.8.2

Choose a tag to compare

@mlange-42 mlange-42 released this 19 May 12:48
d883660

Ark v0.8.2

Ark is an archetype-based Entity Component System (ECS) for Go.

Changelog

Documentation

  • Adds table-based query iteration to the user guide cheat sheet (#505)
  • Adds cross-references between methods for table-based query iteration(#506)

Ark v0.8.1

Choose a tag to compare

@mlange-42 mlange-42 released this 30 Apr 12:44
c503549

Ark v0.8.1

Ark is an archetype-based Entity Component System (ECS) for Go.

Changelog

Performance

  • Events for batch operations are processed in batches (#503)

Bugfixes

  • Fixes error when deleting multiple targets of the same entity (#500)
  • Fixes missing relation events on archetype cleanup (deleted target entities) (#501)
  • Fixes relation batch events fired for wrong table (#502)

Ark v0.8.0

Choose a tag to compare

@mlange-42 mlange-42 released this 07 Apr 09:24
ce04444

Ark v0.8.0

Ark is an archetype-based Entity Component System (ECS) for Go.

Changelog

Features

  • Adds table-based query iteration, which is about 2x faster (#482)

Example:

for query.NextTable() {
    positions, velocities := query.GetColumns()
    for i := range positions {
        pos, vel := &positions[i], &velocities[i]
        pos.X += vel.X
        pos.Y += vel.Y
    }
}

Performance

  • Speeds up zeroing component memory by using memclrNoHeapPointers and typedmemclr (#482)
  • Speeds up moving non-trivial components by 30% using typedmemmove instead of reflection (#484, #496)

Documentation

  • Adds a plot with benchmarks vs. Array of Structs (AoS) to the user guide (#491)

Other

  • Uses reflect slices instead of arrays for component columns (#475)
  • Adds regression benchmarks, comparing PRs against the main branch (#476, #477, #478)

Ark v0.7.1

Choose a tag to compare

@mlange-42 mlange-42 released this 20 Jan 10:31
13f826d

Ark v0.7.1

Ark is an archetype-based Entity Component System (ECS) for Go.

Changelog

Bugfixes

  • Fixes non-nil component retrieved from mapper (#472, fixes #470, rolls back #430)

Other

  • Closed/finished queries don't panic when closed again (#469)

Ark v0.7.0

Choose a tag to compare

@mlange-42 mlange-42 released this 22 Dec 13:51
306b3a2

Ark v0.7.0

Ark is an archetype-based Entity Component System (ECS) for Go.

Changelog

Breaking changes

  • World constructor NewWorld returns a pointer instead of a value (#448)

Features

  • Provides binary serialization and de-serialization of entities for networking (#453)

Performance

  • Optimizes removal of relation target entities from archetypes (#461)

Bugfixes

  • Fixes resetting relation target tracking on entity creation (#459)
  • Fixes resetting relations in archetype cleanup (#460)
  • Fixes missing OnAddRelations event on CopyEntity (#463)

Migration guide

For migration from pre-v0.7.0 versions, simply remove the pointer operator & in function calls that take a *World as argument. When a World is stored in an explicitly typed variable or struct field, use *ecs.World instead of ecs.World for the type.

Ark v0.6.4

Choose a tag to compare

@mlange-42 mlange-42 released this 02 Nov 20:12
fbf486d

Ark v0.6.4

Ark is an archetype-based Entity Component System (ECS) for Go.

Changelog

Bugfixes

  • Prevents emitting custom events with components for the zero entity (#444)

Ark v0.6.3

Choose a tag to compare

@mlange-42 mlange-42 released this 20 Oct 20:15
b148181

Ark v0.6.3

Ark is an archetype-based Entity Component System (ECS) for Go.

Changelog

Other

  • Merges observerManagerData back into observerManager (#438)

Ark v0.6.2

Choose a tag to compare

@mlange-42 mlange-42 released this 20 Oct 19:16
37c1155

Ark v0.6.2

Ark is an archetype-based Entity Component System (ECS) for Go.

Changelog

Performance

  • Stores column layouts separately, speeding up MapX.Get by ≈15% (#430)
  • Splits out hot archetype data, stores less frequently used data separately (#433)
  • Optimizes emitting events if no observers for the event type are registered (#435)

Ark v0.6.1

Choose a tag to compare

@mlange-42 mlange-42 released this 15 Oct 12:39
a716ac7

Ark v0.6.1

Ark is an archetype-based Entity Component System (ECS) for Go.

Changelog

Performance

  • Undo slice pooling in query creation (#405) to avoid weird query performance degradation (#422)
  • Reduce memory size of the central storage by allocating slice pool and observer manager on the heap (#425)
  • Pre-fetch column pointers to speed up queries by 20-30% (#426)