mirror of
				https://github.com/Ukendio/jecs.git
				synced 2025-11-04 02:49:18 +00:00 
			
		
		
		
	Change logo
This commit is contained in:
		
							parent
							
								
									106dc42128
								
							
						
					
					
						commit
						3fcad85593
					
				
					 2 changed files with 63 additions and 65 deletions
				
			
		
							
								
								
									
										128
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										128
									
								
								README.md
									
									
									
									
									
								
							| 
						 | 
					@ -1,65 +1,63 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<p align="center">
 | 
					<p align="center">
 | 
				
			||||||
  <img src="jecs_darkmode.svg#gh-dark-mode-only" width=50%/>
 | 
					  <img src="image-5.png" width=50%/>
 | 
				
			||||||
  <img src="jecs_lightmode.svg#gh-light-mode-only" width=50%/>
 | 
					
 | 
				
			||||||
</p>
 | 
					[](LICENSE-APACHE) [](https://wally.run/package/ukendio/jecs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[](LICENSE-APACHE)
 | 
					</p>
 | 
				
			||||||
[](https://wally.run/package/ukendio/jecs)
 | 
					jecs is Just a stupidly fast Entity Component System
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jecs is Just a stupidly fast Entity Component System
 | 
					- Entity Relationships as first class citizens
 | 
				
			||||||
 | 
					- Iterate 800,000 entities at 60 frames per second
 | 
				
			||||||
- Entity Relationships as first class citizens
 | 
					- Type-safe [Luau](https://luau-lang.org/) API
 | 
				
			||||||
- Iterate 800,000 entities at 60 frames per second
 | 
					- Zero-dependency package
 | 
				
			||||||
- Type-safe [Luau](https://luau-lang.org/) API
 | 
					- Optimized for column-major operations
 | 
				
			||||||
- Zero-dependency package
 | 
					- Cache friendly archetype/SoA storage
 | 
				
			||||||
- Optimized for column-major operations
 | 
					- Unit tested for stability
 | 
				
			||||||
- Cache friendly archetype/SoA storage
 | 
					
 | 
				
			||||||
- Unit tested for stability
 | 
					### Example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Example
 | 
					```lua
 | 
				
			||||||
 | 
					local world = jecs.World.new()
 | 
				
			||||||
```lua
 | 
					local pair = jecs.pair
 | 
				
			||||||
local world = jecs.World.new()
 | 
					
 | 
				
			||||||
local pair = jecs.pair
 | 
					local ChildOf = world:component()
 | 
				
			||||||
 | 
					local Name = world:component()
 | 
				
			||||||
local ChildOf = world:component()
 | 
					
 | 
				
			||||||
local Name = world:component()
 | 
					local function parent(entity)
 | 
				
			||||||
 | 
					    return world:target(entity, ChildOf)
 | 
				
			||||||
local function parent(entity)
 | 
					end
 | 
				
			||||||
    return world:target(entity, ChildOf)
 | 
					local function getName(entity)
 | 
				
			||||||
end
 | 
					    return world:get(entity, Name)
 | 
				
			||||||
local function getName(entity)
 | 
					end
 | 
				
			||||||
    return world:get(entity, Name)
 | 
					
 | 
				
			||||||
end
 | 
					local alice = world:entity()
 | 
				
			||||||
 | 
					world:set(alice, Name, "alice")
 | 
				
			||||||
local alice = world:entity()
 | 
					
 | 
				
			||||||
world:set(alice, Name, "alice")
 | 
					local bob = world:entity()
 | 
				
			||||||
 | 
					world:add(bob, pair(ChildOf, alice))
 | 
				
			||||||
local bob = world:entity()
 | 
					world:set(bob, Name, "bob")
 | 
				
			||||||
world:add(bob, pair(ChildOf, alice))
 | 
					
 | 
				
			||||||
world:set(bob, Name, "bob")
 | 
					local sara = world:entity()
 | 
				
			||||||
 | 
					world:add(sara, pair(ChildOf, alice))
 | 
				
			||||||
local sara = world:entity()
 | 
					world:set(sara, Name, "sara")
 | 
				
			||||||
world:add(sara, pair(ChildOf, alice))
 | 
					
 | 
				
			||||||
world:set(sara, Name, "sara")
 | 
					print(getName(parent(sara)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
print(getName(parent(sara)))
 | 
					for e in world:query(pair(ChildOf, alice)) do
 | 
				
			||||||
 | 
					    print(getName(e), "is the child of alice")
 | 
				
			||||||
for e in world:query(pair(ChildOf, alice)) do
 | 
					end
 | 
				
			||||||
    print(getName(e), "is the child of alice")
 | 
					
 | 
				
			||||||
end
 | 
					-- Output
 | 
				
			||||||
 | 
					-- "alice"
 | 
				
			||||||
-- Output
 | 
					-- bob is the child of alice
 | 
				
			||||||
-- "alice"
 | 
					-- sara is the child of alice
 | 
				
			||||||
-- bob is the child of alice
 | 
					```
 | 
				
			||||||
-- sara is the child of alice
 | 
					
 | 
				
			||||||
```
 | 
					21,000 entities 125 archetypes 4 random components queried.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
21,000 entities 125 archetypes 4 random components queried.
 | 
					Can be found under /benches/visual/query.luau
 | 
				
			||||||

 | 
					
 | 
				
			||||||
Can be found under /benches/visual/query.luau
 | 
					Inserting 8 components to an entity and updating them over 50 times.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Inserting 8 components to an entity and updating them over 50 times.
 | 
					Can be found under /benches/visual/insertions.luau
 | 
				
			||||||

 | 
					 | 
				
			||||||
Can be found under /benches/visual/insertions.luau
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								image-5.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								image-5.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 8.7 KiB  | 
		Loading…
	
		Reference in a new issue