{"id":19104202,"url":"https://github.com/Ukendio/jecs","last_synced_at":"2025-04-18T19:33:04.796Z","repository":{"id":235476524,"uuid":"790773208","full_name":"Ukendio/jecs","owner":"Ukendio","description":"A fast, portable Entity Component System for Luau","archived":false,"fork":false,"pushed_at":"2025-04-11T21:25:53.000Z","size":5581,"stargazers_count":213,"open_issues_count":10,"forks_count":44,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-04-11T22:31:57.866Z","etag":null,"topics":["data-oriented","data-oriented-design","ecs","entity-component-system","game-development","gamedev","jecs","lua","luau","no-dependencies"],"latest_commit_sha":null,"homepage":"https://ukendio.github.io/jecs/","language":"Luau","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ukendio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/contributing/guidelines.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-04-23T13:57:01.000Z","updated_at":"2025-04-11T21:25:57.000Z","dependencies_parsed_at":"2024-05-03T11:08:44.523Z","dependency_job_id":"853acf07-b64e-44cb-aaef-e9b295210812","html_url":"https://github.com/Ukendio/jecs","commit_stats":null,"previous_names":["ukendio/jecs"],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ukendio%2Fjecs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ukendio%2Fjecs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ukendio%2Fjecs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ukendio%2Fjecs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ukendio","download_url":"https://codeload.github.com/Ukendio/jecs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249536323,"owners_count":21287578,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-oriented","data-oriented-design","ecs","entity-component-system","game-development","gamedev","jecs","lua","luau","no-dependencies"],"created_at":"2024-11-09T04:00:58.121Z","updated_at":"2025-04-18T19:33:04.790Z","avatar_url":"https://github.com/Ukendio.png","language":"Luau","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/image-5.png\" width=35%/\u003e\n\u003c/p\u003e\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?\u0026style=for-the-badge)](https://wally.run/package/ukendio/jecs)\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/ci.yaml) for stability\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 in world:query(pair(ChildOf, alice)) do\n    print(getName(e), \"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\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","funding_links":[],"categories":["Libraries"],"sub_categories":["Entity Component System"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FUkendio%2Fjecs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FUkendio%2Fjecs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FUkendio%2Fjecs/lists"}