Skip to content

Releases: Ukendio/jecs

Jecs v0.5.0

26 Dec 05:33
ec4fa3f
Compare
Choose a tag to compare

Highlights

  • Now supports cached queries which can save 3-5 microseconds by not having to recreate the same queries every frame.
  • Thanks to Luau's progress to supporting user defined type functions, we can now fully type Pair, and as such I have extended support for them to support relation data if either IDs is a Component

Changelog

  • [world]:
    • Fixed world:target not giving adjacent pairs
    • Added world:each to find entities with a specific Tag
    • Added world:children to find children of entity
  • [query]:
    • Added query:cached
      • Adds query cache that updates itself when an archetype matching the query gets created or deleted.
  • [luau]:
    • Changed how entities' types are inferred with user-defined type functions
    • Changed Pair<First, Second> to return Second if First is a Tag; otherwise, returns First.

New Contributors

Full Changelog: v0.4.0...v0.5.0

Jecs v0.4.0

17 Nov 18:06
3cde5c8
Compare
Choose a tag to compare

Highlights

  • Jecs now has entity recycling which will allow you to reuse 2^24 indexes 2^16 times each by giving them generations, giving you a possible range of 2^40 entities in total, you will never run out! Huge thanks to @centau and @SanderMertens for the guidance on the implementation of this!
  • The query iterator has been simplified to keep the API more lightweight and transparent.
  • Now that jecs is much more stable than before, I am going to take a pivot towards working on flamecs, a jecs wrapper for Flamework. Takes advantage of Flamework macros and type ID system for increased ergonomics.

Changelog

  • [world]:
    • Added recycling to world:entity
      • If you see much larger entity ids, that is because its generation has been incremented
  • [query]:
    • Removed query:drain
      • The default behaviour is simply to drain the iterator
    • Removed query:next
      • Just call the iterator function returned by query:iter directly if you want to get the next results
    • Removed query:replace
  • [luau]:
    • Fixed query:archetypes not taking self
    • Changed so that the jecs.Pair type now returns the first element's type so you won't need to typecast anymore.

New Contributors

Full Changelog: v0.3.2...v0.4.0

Jecs v0.4.0-rc.0

14 Nov 16:01
Compare
Choose a tag to compare
Jecs v0.4.0-rc.0 Pre-release
Pre-release
Bump

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