Skip to content

Releases: Ukendio/jecs

Jecs v0.3.2

02 Oct 21:00
Compare
Choose a tag to compare

Optimized world:cleanup() and the archetype graph to scale better.

Jecs v0.3.1

01 Oct 12:09
Compare
Choose a tag to compare

Changelog

  • [world]:
    • Fixed a regression that occurred when you call world:remove
    • Remove explicit error in JECS_DEBUG for world:target when not applying an index parameter
  • [typescript] :
    • Fixed world.set with NoInfer

New Contributors

Full Changelog: v0.3.0...v0.3.1

Jecs v0.3.0

24 Sep 01:28
Compare
Choose a tag to compare

Highlights

  • Jecs is the first ECS to have implemented archetype deletion second only to flecs!
  • Reached 121 stars!
  • Added new creations to the addons page

Changelog

  • [world]:
    • Added an index parameter to world:target
    • Added a way to change the components limit via _G.JECS_HI_COMPONENT_ID
      • Set it to whatever number you want but try to make it as close to the number of components you will use as possible
      • Make sure to set this before calling jecs or else it will not work
    • Added debug mode, enable via setting _G.JECS_DEBUG to true
      • Make sure to set this before calling jecs or else it will not work
    • Added world:cleanup which is called to cleanup empty archetypes manually
    • Changed world:delete to delete archetypes that are dependent on the passed entity
    • Changed world:delete to delete entity's children before the entity to prevent cycles
  • [query]:
    • Fixed the iterator to not drain by default
  • [typescript]
    • Fixed entry point of the package.json file to be src rather than src/init
    • Fixed query.next returning a query object whereas it would be expected to return a tuple containing the entity and the corresponding component values
    • Exported query.archetypes
    • Changed pair to return a number instead of an entity
      • Preventing direct usage of a pair as an entity while still allowing it to be used as a component
    • Exported built-in components ChildOf and Name
    • Exported world.parent

New Contributors

Full Changelog: v0.2.10...v0.3.0

Jecs v0.2.10

07 Sep 20:23
Compare
Choose a tag to compare

Jecs v0.2.10-rc.4

31 Aug 03:50
Compare
Choose a tag to compare

Final one before release of 0.2.10. This just slightly improves hooks performance. But since it is a change to the world, it warranted a separate release.

Jecs v0.2.10-rc.3

30 Aug 17:29
Compare
Choose a tag to compare
Jecs v0.2.10-rc.3 Pre-release
Pre-release

Changelog

  • [traits]:
    • Added cleanup condition jecs.OnDelete for when the entity or component is deleted
    • Added cleanup action jecs.Remove which removes instances of the specified (component) id from all entities
      • This is the default cleanup action
    • Added component trait jecs.Tag which allows for zero-cost components used as tags
      • Setting data to a component with this trait will do nothing
  • [luau]:
    • Exported world:contains()
    • Exported query:drain()
    • Exported Query
    • Improved types for the hook OnAdd, OnSet, OnRemove
    • Changed functions to accept any ID including pairs in type parameters
      • Applies to world:add(), world:set(), world:remove(), world:get(), world:has() and world:query()
      • New exported type Id<T = nil> = Entity<T> | Pair
    • Changed world:contains() to return a boolean instead of an entity which may or may not exist
    • Fixed world:has() to take the correct parameters

thread: https://discord.com/channels/385151591524597761/1248734074940559511
Check out the demo that is in WIP
Full Changelog: v0.2.10-rc.1...v0.2.10-rc.3

Jecs v0.2.10-rc.1

29 Aug 13:42
bfb3db2
Compare
Choose a tag to compare
Jecs v0.2.10-rc.1 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: v0.2.10-rc.0...v0.2.10-rc.1

v0.2.10-rc.0

27 Aug 19:25
a54928e
Compare
Choose a tag to compare
v0.2.10-rc.0 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: v0.2.9...v0.2.10-rc.0

Jecs v0.2.9

17 Aug 00:39
Compare
Choose a tag to compare

Jecs@0.2.9

Highlights

  • world:clear(entity) is now 1.5-2x faster than v0.2.8
  • Best Avatar is the first commercial project to have used Jecs
  • We have gotten 67 stars at the time of this post, we need 100 to get on the ecs-faq page!
  • Jecs v0.3.0 is underway, which will feature linked traversal of pairs with the same relation/target for an entity and archetype deletion.

Changelog

  • [world]:
    • Added world:delete(entity) for completely deallocating all memory for an entity without dangling references
    • Improved performance for world:clear(entity)
    • Improved performance for world:get, world:set, world:add, world:remove by using bit flags to check for any component hooks.
    • Changed world:set to also invoke OnAdd
  • [traits]:
    • Added jecs.OnDeleteTarget to specify cleanup policy for when target entities are deleted
    • Added jecs.Delete when paired together with jecs.OnDeleteTarget will cascade deletions
  • [luau]:
    • Removed WorldShim, use World instead
    • Added query:archetypes()
  • [rbxts]:
  • Changed Entity type to have a shorter nominal type for readability
  • Fixed emit of import for jecs not finding file

thread: https://discord.com/channels/385151591524597761/1248734074940559511
Check out the demo that is in WIP
Full Changelog: v0.2.8...v0.2.9

Jecs v0.2.8

11 Aug 13:36
Compare
Choose a tag to compare

Jecs@0.2.8

Added

  • Added explicit query:iter()
    • This is meant to be used as a stop-gap for proper of types until luau fixes inference of __iter.
  • Added component hooks by @DunnoConz in #98
    • Component hooks are traits that can be added to a component.
world:set(Position, jecs.OnAdd, function(entity) 
  print(`entity ${entity}` has added $Position`) 
end)
world:set(Position, jecs.OnSet, function(entity, data) 
  print(`entity ${entity}` has changed $Position to {data}`) 
end)
world:set(Position, jecs.OnRemove, function(entity) 
  print(`entity ${entity}` has removed $Position`) 
end)

Changed

  • Changed names of the pair functions from ecs_pair_relation and ecs_pair_target to pair_first and pair_second respectively.

Fixed

  • Added world:archetypes() to EmptyQuery

thread: https://discord.com/channels/385151591524597761/1248734074940559511
Check out the demo that is in WIP
Full Changelog: v0.2.6...v0.2.8