Cleanup repository

This commit is contained in:
Ukendio 2024-11-23 04:42:54 +01:00
parent dacec22efa
commit b7a5785dbb
24 changed files with 157 additions and 237 deletions

View file

@ -1,7 +1,7 @@
{ {
"aliases": { "aliases": {
"jecs": "src", "jecs": "jecs",
"testkit": "testkit", "testkit": "test/testkit",
"mirror": "mirror" "mirror": "mirror"
}, },
"languageMode": "strict" "languageMode": "strict"

View file

@ -1,19 +1,18 @@
<p align="center"> <p align="center">
<img src="image-5.png" width=35%/> <img src="assets/image-5.png" width=35%/>
</p> </p>
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge)](LICENSE) [![Wally](https://img.shields.io/github/v/tag/ukendio/jecs?&style=for-the-badge)](https://wally.run/package/ukendio/jecs) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge)](LICENSE) [![Wally](https://img.shields.io/github/v/tag/ukendio/jecs?&style=for-the-badge)](https://wally.run/package/ukendio/jecs)
Just a stupidly fast Entity Component System Just a stupidly fast Entity Component System
* [Entity Relationships](https://ajmmertens.medium.com/building-games-in-ecs-with-entity-relationships-657275ba2c6c) as first class citizens - [Entity Relationships](https://ajmmertens.medium.com/building-games-in-ecs-with-entity-relationships-657275ba2c6c) as first class citizens
* Iterate 800,000 entities at 60 frames per second - Iterate 800,000 entities at 60 frames per second
* Type-safe [Luau](https://luau-lang.org/) API - Type-safe [Luau](https://luau-lang.org/) API
* Zero-dependency package - Zero-dependency package
* Optimized for column-major operations - Optimized for column-major operations
* Cache friendly [archetype/SoA](https://ajmmertens.medium.com/building-an-ecs-2-archetypes-and-vectorization-fe21690805f9) storage - Cache friendly [archetype/SoA](https://ajmmertens.medium.com/building-an-ecs-2-archetypes-and-vectorization-fe21690805f9) storage
* Rigorously [unit tested](https://github.com/Ukendio/jecs/actions/workflows/ci.yaml) for stability - Rigorously [unit tested](https://github.com/Ukendio/jecs/actions/workflows/ci.yaml) for stability
### Example ### Example
@ -57,9 +56,9 @@ end
``` ```
21,000 entities 125 archetypes 4 random components queried. 21,000 entities 125 archetypes 4 random components queried.
![Queries](image-3.png) ![Queries](assets/image-3.png)
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.
![Insertions](image-4.png) ![Insertions](assets/image-4.png)
Can be found under /benches/visual/insertions.luau Can be found under /benches/visual/insertions.luau

View file

Before

Width:  |  Height:  |  Size: 392 KiB

After

Width:  |  Height:  |  Size: 392 KiB

View file

Before

Width:  |  Height:  |  Size: 391 KiB

After

Width:  |  Height:  |  Size: 391 KiB

View file

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 61 KiB

View file

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

View file

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View file

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View file

@ -14,9 +14,6 @@
"Lib": { "Lib": {
"$path": "src" "$path": "src"
}, },
"rgb": {
"$path": "rgb.luau"
},
"benches": { "benches": {
"$path": "benches" "$path": "benches"
}, },

View file

@ -5,7 +5,6 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Matter = require(ReplicatedStorage.DevPackages.Matter) local Matter = require(ReplicatedStorage.DevPackages.Matter)
local ecr = require(ReplicatedStorage.DevPackages.ecr) local ecr = require(ReplicatedStorage.DevPackages.ecr)
local jecs = require(ReplicatedStorage.Lib) local jecs = require(ReplicatedStorage.Lib)
local rgb = require(ReplicatedStorage.rgb)
local newWorld = Matter.World.new() local newWorld = Matter.World.new()
local ecs = jecs.World.new() local ecs = jecs.World.new()

View file

@ -4,7 +4,6 @@
local ReplicatedStorage = game:GetService("ReplicatedStorage") local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Matter = require(ReplicatedStorage.DevPackages["_Index"]["matter-ecs_matter@0.8.1"].matter) local Matter = require(ReplicatedStorage.DevPackages["_Index"]["matter-ecs_matter@0.8.1"].matter)
local ecr = require(ReplicatedStorage.DevPackages["_Index"]["centau_ecr@0.8.0"].ecr) local ecr = require(ReplicatedStorage.DevPackages["_Index"]["centau_ecr@0.8.0"].ecr)
local rgb = require(ReplicatedStorage.rgb)
local newWorld = Matter.World.new() local newWorld = Matter.World.new()
local jecs = require(ReplicatedStorage.Lib) local jecs = require(ReplicatedStorage.Lib)
@ -133,13 +132,6 @@ for i = 1, N do
end end
print("TEST", hm) print("TEST", hm)
local white = rgb.white
local yellow = rgb.yellow
local gray = rgb.gray
local green = rgb.green
local WALL = gray(" │ ")
local count = 0 local count = 0
for _, archetype in ecs:query(D2, D4, D6, D8):archetypes() do for _, archetype in ecs:query(D2, D4, D6, D8):archetypes() do

View file

@ -5,7 +5,6 @@ local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Matter = require(ReplicatedStorage.DevPackages.Matter) local Matter = require(ReplicatedStorage.DevPackages.Matter)
local ecr = require(ReplicatedStorage.DevPackages.ecr) local ecr = require(ReplicatedStorage.DevPackages.ecr)
local jecs = require(ReplicatedStorage.Lib) local jecs = require(ReplicatedStorage.Lib)
local rgb = require(ReplicatedStorage.rgb)
local newWorld = Matter.World.new() local newWorld = Matter.World.new()
local ecs = jecs.World.new() local ecs = jecs.World.new()

View file

@ -1,6 +1,6 @@
{ {
"name": "jecs", "name": "jecs",
"tree": { "tree": {
"$path": "src" "$path": "jecs.luau"
} }
} }

View file

View file

@ -1,11 +1,11 @@
{ {
"name": "@rbxts/jecs", "name": "@rbxts/jecs",
"version": "0.4.0-rc.0", "version": "0.4.0",
"description": "Stupidly fast Entity Component System", "description": "Stupidly fast Entity Component System",
"main": "src", "main": "jecs.luau",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/ukendio/jecs.git" "url": "git+https://github.com/ukendio/jecs.git"
}, },
"keywords": [], "keywords": [],
"author": "Ukendio", "author": "Ukendio",
@ -15,9 +15,9 @@
], ],
"homepage": "https://github.com/ukendio/jecs", "homepage": "https://github.com/ukendio/jecs",
"license": "MIT", "license": "MIT",
"types": "src/index.d.ts", "types": "jecs.d.ts",
"files": [ "files": [
"src", "jecs.luau",
"LICENSE.md", "LICENSE.md",
"README.md" "README.md"
], ],

View file

@ -1,33 +0,0 @@
return {
white_underline = function(s: any)
return `\27[1;4m{s}\27[0m`
end,
white = function(s: any)
return `\27[37;1m{s}\27[0m`
end,
green = function(s: any)
return `\27[32;1m{s}\27[0m`
end,
red = function(s: any)
return `\27[31;1m{s}\27[0m`
end,
yellow = function(s: any)
return `\27[33;1m{s}\27[0m`
end,
red_highlight = function(s: any)
return `\27[41;1;30m{s}\27[0m`
end,
green_highlight = function(s: any)
return `\27[42;1;30m{s}\27[0m`
end,
gray = function(s: any)
return `\27[30;1m{s}\27[0m`
end,
}

View file

@ -1,29 +0,0 @@
{
"name": "jecs-test",
"tree": {
"$className": "DataModel",
"StarterPlayer": {
"$className": "StarterPlayer",
"StarterPlayerScripts": {
"$className": "StarterPlayerScripts",
"$path": "tests"
}
},
"ReplicatedStorage": {
"$className": "ReplicatedStorage",
"Lib": {
"$path": "lib"
},
"rgb": {
"$path": "rgb.lua"
},
"benches": {
"$path": "benches"
},
"mirror": {
"$path": "mirror"
}
}
}
}

View file

@ -1,3 +0,0 @@
roots = ["ServerStorage"]
[extraOptions]

View file

@ -6,8 +6,7 @@ realm = "shared"
license = "MIT" license = "MIT"
include = [ include = [
"default.project.json", "default.project.json",
"src/**", "jecs.luau",
"src",
"wally.toml", "wally.toml",
"README.md", "README.md",
"CHANGELOG.md", "CHANGELOG.md",