Package Exports
- @rbxts/jecs
- @rbxts/jecs/src/init.luau
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@rbxts/jecs) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Just an ECS
jecs is a stupidly fast Entity Component System (ECS).
- Entity Relationships as first class citizens
- Iterate 500,000 entities at 60 frames per second
- Type-safe Luau API
- Zero-dependency package
- Optimized for column-major operations
- Cache friendly archetype/SoA storage
- Unit tested for stability
Example
local world = jecs.World.new()
local pair = jecs.pair
local ChildOf = world:component()
local Name = world:component()
local function parent(entity)
return world:target(entity, ChildOf)
end
local function getName(entity)
return world:get(entity, Name)
end
local alice = world:entity()
world:set(alice, Name, "alice")
local bob = world:entity()
world:add(bob, pair(ChildOf, alice))
world:set(bob, Name, "bob")
local sara = world:entity()
world:add(sara, pair(ChildOf, alice))
world:set(sara, Name, "sara")
print(getName(parent(sara)))
for e in world:query(pair(ChildOf, alice)) do
print(getName(e), "is the child of alice")
end
-- Output
-- "alice"
-- bob is the child of alice
-- sara is the child of alice21,000 entities 125 archetypes 4 random components queried.
Can be found under /benches/query.lua
Inserting 8 components to an entity and updating them over 50 times.
Can be found under /benches/insertions.lua