{"id":16638153,"url":"https://github.com/osvegn/ecs","last_synced_at":"2025-10-30T08:31:04.283Z","repository":{"id":153886738,"uuid":"612613570","full_name":"osvegn/ECS","owner":"osvegn","description":"ECS using C langage","archived":false,"fork":false,"pushed_at":"2024-01-11T01:52:24.000Z","size":2803,"stargazers_count":4,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-02T07:22:43.067Z","etag":null,"topics":["c","ecs","entity-component-system"],"latest_commit_sha":null,"homepage":"https://osvegn.github.io/ECS/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/osvegn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-03-11T13:24:56.000Z","updated_at":"2024-01-04T12:39:36.000Z","dependencies_parsed_at":"2023-11-30T03:29:09.987Z","dependency_job_id":"bd269ca7-e333-4b10-9edf-47f1334b7135","html_url":"https://github.com/osvegn/ECS","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osvegn%2FECS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osvegn%2FECS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osvegn%2FECS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osvegn%2FECS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/osvegn","download_url":"https://codeload.github.com/osvegn/ECS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238945669,"owners_count":19556700,"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":["c","ecs","entity-component-system"],"created_at":"2024-10-12T06:43:47.003Z","updated_at":"2025-10-30T08:31:03.894Z","avatar_url":"https://github.com/osvegn.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![codecov](https://codecov.io/gh/osvegn/ECS/branch/main/graph/badge.svg)](https://codecov.io/gh/osvegn/ECS)\n[![CI](https://github.com/osvegn/ECS/actions/workflows/CI.yml/badge.svg)](https://github.com/osvegn/ECS/actions/workflows/CI.yml)\n[![Documentation](https://github.com/osvegn/ECS/actions/workflows/Documentation.yml/badge.svg)](https://github.com/osvegn/ECS/actions/workflows/Documentation.yml)\n\n# ECS\nHi visitor, you're about to read some documentation about a basic and simple ECS in C language.\n\nIf you find some error or trouble in this repository, do not hesitate to contact me at thomas.prudhomme@epitech.eu to give me a feedback !\n\n## What's an ECS ?\n**E**ntity **C**omponent **S**ystem\n\nECS are used to create video games. The objective is to abstracte all elements in a game to create them easier instead of creating a lot of different but similary elements.\n\n## How an ECS work ?\nThere is 5 parts in an ECS: the world, systems, entities, components and resources.\n\n### World\nThe world is the part of the ECS which contains all elements of your project. It contains a list of system, resource and entities. It is the core of your game.\n\n### Entity\nAn entity is an element which contains a list of component, and an id to be identify. An entity can be and have a lot of comportement, depending on the component it contains.\n\n### Component\nA component is an element which can be assign to an entity. For example, you can create a position component, which contains the position of the entity. You can also create a velocity component which contains the movement of the entity each frame.\n\n### System\nA system is a part of ECS which run the logical part. For example, you can use a system to move entities. You have to get all entities which contains component you need, and apply logic on them. You can get all entities which contains position and velocity component, and apply velocity to the position to move the entity.\n\n### Resource\nA resource is an element which can be used by the entire world. For example, a resource can be the game windows instance.\n\n## How to use this ECS ?\nIf you're curious, you probably find a file named \"CMakeLists.txt\" at root. The file will build the ECS as a static library.\n### Build the library\nUse the following command in the repository to create a static library:\n```\ncmake -B build \u0026\u0026 cmake --build build\n```\n\n### Include the repository as a submodule\nIt is the better way to use the repository for now.\nSee the submodule documentation to let you know how to do it.\nOtherwise, you just have to add the submodule as sub_directory in your cmake builder.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosvegn%2Fecs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosvegn%2Fecs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosvegn%2Fecs/lists"}