{"id":"mark-marks/jecs-nightly","name":"jecs-nightly","scope":"mark-marks","platform":"roblox","description":"Mirrored from the Wally registry.","version":"0.9.0-rc.5-nightly.20250725T001052Z","latest":"0.9.0-rc.5-nightly.20250725T001052Z","versions":["0.5.5-nightly.20250302T042604Z","0.5.5-nightly.20250302T175658Z","0.5.5-nightly.20250302T181602Z","0.5.5-nightly.20250302T183002Z","0.5.5-nightly.20250302T183121Z","0.5.5-nightly.20250302T183456Z","0.5.5-nightly.20250308T001059Z","0.5.5-nightly.20250312T202956Z","0.5.5-nightly.20250412T181729Z","0.5.5-nightly.20250413T001101Z","0.5.5-nightly.20250414T001100Z","0.5.5-nightly.20250423T001100Z","0.5.5-nightly.20250426T001101Z","0.5.5-nightly.20250427T001102Z","0.5.5-nightly.20250428T001101Z","0.5.5-nightly.20250429T001100Z","0.6.0-nightly.20250511T001101Z","0.6.0-nightly.20250517T001101Z","0.6.0-nightly.20250519T001113Z","0.6.0-nightly.20250520T001101Z","0.6.0-nightly.20250526T001303Z","0.6.0-nightly.20250528T001102Z","0.6.0-nightly.20250602T001103Z","0.6.0-nightly.20250606T001110Z","0.6.0-nightly.20250608T001058Z","0.6.0-rc.1-nightly.20250508T001059Z","0.6.0-rc.1-nightly.20250509T001119Z","0.6.1-nightly.20250611T001113Z","0.6.1-nightly.20250622T001116Z","0.7.2-nightly.20250628T001101Z","0.8.3-nightly.20250711T110513Z","0.8.3-nightly.20250714T001107Z","0.8.3-nightly.20250715T001056Z","0.9.0-rc.2-nightly.20250718T001102Z","0.9.0-rc.3-nightly.20250719T001109Z","0.9.0-rc.4-nightly.20250720T001058Z","0.9.0-rc.4-nightly.20250723T001109Z","0.9.0-rc.5-nightly.20250725T001052Z"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{},"integrity":"7bd0c939c72419e369449bd41fc5328873eb37490d9adb3c70fd2b96992b0229","likes":0,"downloads":0,"install":"forest install mark-marks/jecs-nightly","url":"https://forest.dev/p/roblox/mark-marks/jecs-nightly","files":"https://api.forest.dev/ai/package/roblox/mark-marks/jecs-nightly/files","readme":"<p align=\"center\">\n  <img src=\"assets/image-5.png\" width=35%/>\n</p>\n\n[![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) [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/ukendio/jecs/unit-testing.yaml?&style=for-the-badge)](https://github.com/Ukendio/jecs/actions/workflows/unit-testing.yaml)\n\nJust a stupidly fast Entity Component System\n\n-   [Entity Relationships](https://ajmmertens.medium.com/building-games-in-ecs-with-entity-relationships-657275ba2c6c) as first class citizens\n-   Iterate 800,000 entities at 60 frames per second\n-   Type-safe [Luau](https://luau-lang.org/) API\n-   Zero-dependency package\n-   Optimized for column-major operations\n-   Cache friendly [archetype/SoA](https://ajmmertens.medium.com/building-an-ecs-2-archetypes-and-vectorization-fe21690805f9) storage\n-   Rigorously [unit tested](https://github.com/Ukendio/jecs/actions/workflows/unit-testing.yaml) for stability\n\n### Installation\n\nWith [Wally](https://wally.run/):\n```bash\njecs = \"ukendio/jecs@0.6.0\" # Inside wally.toml\n```\nWith [pesde](https://pesde.dev/):\n```bash\npesde add wally#ukendio/jecs@0.6.0\n```\nWith [npm](https://www.npmjs.com/package/@rbxts/jecs) ([roblox-ts](https://roblox-ts.com/)):\n```bash\nnpm i @rbxts/jecs\n```\n\n### Example\n\n```lua\nlocal world = jecs.World.new()\nlocal pair = jecs.pair\n\n-- These components and functions are actually already builtin\n-- but have been illustrated for demonstration purposes\nlocal ChildOf = world:component()\nlocal Name = world:component()\n\nlocal function parent(entity)\n    return world:target(entity, ChildOf)\nend\nlocal function getName(entity)\n    return world:get(entity, Name)\nend\n\nlocal alice = world:entity()\nworld:set(alice, Name, \"alice\")\n\nlocal bob = world:entity()\nworld:add(bob, pair(ChildOf, alice))\nworld:set(bob, Name, \"bob\")\n\nlocal sara = world:entity()\nworld:add(sara, pair(ChildOf, alice))\nworld:set(sara, Name, \"sara\")\n\nprint(getName(parent(sara)))\n\nfor e, name in world:query(Name, pair(ChildOf, alice)) do\n    print(name, \"is the child of alice\")\nend\n\n-- Output\n-- \"alice\"\n-- bob is the child of alice\n-- sara is the child of alice\n```\n\n### Benchmarks\n\n21,000 entities 125 archetypes 4 random components queried.\n![Queries](assets/image-3.png)\nCan be found under /benches/visual/query.luau\n\nInserting 8 components to an entity and updating them over 50 times.\n![Insertions](assets/image-4.png)\nCan be found under /benches/visual/insertions.luau\n","readmeTruncated":false}