{"id":14961459,"url":"https://github.com/genaray/arch","last_synced_at":"2025-04-13T04:56:44.758Z","repository":{"id":63177166,"uuid":"551002687","full_name":"genaray/Arch","owner":"genaray","description":"A high-performance C# based Archetype \u0026 Chunks Entity Component System (ECS) with optional multithreading.","archived":false,"fork":false,"pushed_at":"2025-04-10T10:16:18.000Z","size":1223,"stargazers_count":1231,"open_issues_count":27,"forks_count":124,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-04-13T04:56:34.177Z","etag":null,"topics":["csharp","dotnet","dotnet-core","ecs","entity-component-system","entity-framework","fast","game","game-development","gamedev","godot","monogame","monogame-community","monogame-framework","multithreading","net6","net8","netstandard21","stride","unity"],"latest_commit_sha":null,"homepage":"https://arch-ecs.gitbook.io/arch","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/genaray.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.MD","funding":".github/FUNDING.yml","license":"LICENSE.MD","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"github":["genaray"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2022-10-13T17:18:52.000Z","updated_at":"2025-04-10T10:16:21.000Z","dependencies_parsed_at":"2024-04-30T11:56:09.509Z","dependency_job_id":"040cf49f-dabb-456f-b1d6-cfa43d12f759","html_url":"https://github.com/genaray/Arch","commit_stats":{"total_commits":450,"total_committers":23,"mean_commits":"19.565217391304348","dds":0.1466666666666666,"last_synced_commit":"804423ac60e4f5b2fbf55e18765bd8696a4f83cd"},"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/genaray%2FArch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/genaray%2FArch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/genaray%2FArch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/genaray%2FArch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/genaray","download_url":"https://codeload.github.com/genaray/Arch/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248665762,"owners_count":21142123,"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":["csharp","dotnet","dotnet-core","ecs","entity-component-system","entity-framework","fast","game","game-development","gamedev","godot","monogame","monogame-community","monogame-framework","multithreading","net6","net8","netstandard21","stride","unity"],"created_at":"2024-09-24T13:25:16.571Z","updated_at":"2025-04-13T04:56:44.737Z","avatar_url":"https://github.com/genaray.png","language":"C#","readme":"![Arch](docs/arch-banner.png)\n[![Discord](https://img.shields.io/discord/1099813114876284928?style=for-the-badge\u0026logo=discord\u0026label=Arch)](https://discord.gg/htc8tX3NxZ)\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg?style=for-the-badge)](https://GitHub.com/Naereen/StrapDown.js/graphs/commit-activity)\n[![Nuget](https://img.shields.io/nuget/v/Arch?style=for-the-badge)](https://www.nuget.org/packages/Arch/)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg?style=for-the-badge)](https://opensource.org/licenses/Apache-2.0)\n![C#](https://img.shields.io/badge/c%23-%23239120.svg?style=for-the-badge\u0026logo=c-sharp\u0026logoColor=white)\n\nA high-performance C# based Archetype \u0026 Chunks [Entity Component System](https://www.wikiwand.com/en/Entity_component_system) (ECS) for game development and data-oriented programming.     \n\n- 🏎️ **_FAST_** \u003e Best cache efficiency, iteration, and allocation speed. Plays in the same league as C++/Rust ECS Libs! \n- 🚀 **_FASTER_** \u003e Arch is on average quite faster than other ECS implemented in C#. Check out this [Benchmark](https://github.com/Doraku/Ecs.CSharp.Benchmark)!\n- 🤏 **_BARE MINIMUM_** \u003e  Not bloated, it's small and only provides the essentials for you! \n- ☕️ **_SIMPLE_** \u003e  Promotes a clean, minimal, and self-explanatory API that is simple by design. Check out the [Wiki](https://github.com/genaray/Arch/wiki)!\n- 💪 _**MAINTAINED**_ \u003e It's actively being worked on, maintained, and comes along several [Extensions](https://github.com/genaray/Arch.Extended)! \n- 🚢 _**SUPPORT**_ \u003e Supports .NetStandard 2.1, .Net Core 6 and 8, and therefore you may use it with Unity or Godot!\n\nDownload the [package](https://github.com/genaray/Arch/packages/1697222), get started today and join the [Discord](https://discord.gg/htc8tX3NxZ)!\n```console\ndotnet add PROJECT package Arch --version 2.0.0\n```\n\n# ⏩ Quickstart\n\nArch is bare minimum, easy to use, and efficient. Let's say you want to create some game entities and make them move based on their velocity... sounds complicated?\nIt's not! Arch does everything for you, you only need to define the entities and the logic.\n\nI bet you don't want to read tons of documentation, theory, and other boring stuff right?  \nLet's just ignore all that deep knowledge and jump in directly to get something done. \n\n```cs\nusing Arch;\n\n// Components\npublic record struct Position(float X, float Y);\npublic record struct Velocity(float Dx, float Dy);\n\n// Create a world and an entity with position and velocity.\nusing var world = World.Create();\nvar adventurer = world.Create(new Position(0,0), new Velocity(1,1));\n\n// Enumerate all entities with Position \u0026 Velocity to move them\nvar query = new QueryDescription().WithAll\u003cPosition,Velocity\u003e();\nworld.Query(in query, (Entity entity, ref Position pos, ref Velocity vel) =\u003e {\n    pos.X += vel.Dx;\n    pos.Y += vel.Dy;\n    Console.WriteLine($\"Moved adventurer: {entity.Id}\"); \n}); \n```\n\u003e [!NOTE]\n\u003e The example is very simple. There more features including queries without lambda or an API without generics and much more. Checkout the [Documentation](https://arch-ecs.gitbook.io/arch)!\n\n# 💡 Highlights\n\nThis is all you need to know, with this little knowledge you are already able to bring your worlds to life.  \nHowever, if you want to take a closer look at Arch's features and performance techniques, check out the [Wiki](https://arch-ecs.gitbook.io/arch)! \nThere's more to explore, for example...\n\n## 🤝 Our promise\n- [x] Bare minimum - No overengineering, no abstracted hidden costs\n- [x] Incredibly fast and efficient\n- [x] Is actively maintained and developed\n- [x] Grateful for every contribution \n\n## 🚀 Features\n- [x] Archetypes with 16KB large chunks for your massive worlds\n- [x] Incredibly small Entity size\n- [x] Optional `Pure-ECS` for maximum performance and efficiency\n- [x] Bulk/Batch Entity operations \n- [x] High-performance Queries\n- [x] Multithreaded Queries\n- [x] Enumerators\n- [x] CommandBuffers\n- [x] Events\n- [x] Generic and Non-Generic API\n- [x] AOT friendly\n- [x] Several extensions with systems, tools, source generators and more\n- [x] Monogame, Unity, Godot Integration guides\n- And much more... \n\n# 🧩 Extensions\n\nArch has some extensions that add more features and tools. Among them for example : \n- 🛠️ **_[Arch.Extended](https://github.com/genaray/Arch.Extended)_** \u003e  Adds a set of tools and features to save boilerplate code!\n- 🔎 *_[Godot Entity Debugger](https://github.com/RoadTurtleGames/ArchGodotEntityDebugger)_* \u003e An Arch Entity debugger for the Godot engine!\n- 🔎 *_[Stride Entity Debugger](https://github.com/Doprez/stride-arch-ecs)_* \u003e An example of Arch in the Stride engine, with additional entity and system inspector!\n- 🔎 *_[Arch.Unity](https://github.com/AnnulusGames/Arch.Unity)_* \u003e A library that makes the integration of Arch in Unity much easier, with many cool new features!\n- 🔎 *_[Zinc-Framework](https://github.com/zinc-framework)_* \u003e A small but fine engine framework which is based on Arch and also has its own source generator to define entities declaratively!\n- ❓ **_Your Tool-Library?_** \u003e If you develop more tools and features for Arch, let us know and we'll list them here!\n\n# 🚀 Performance\nArch is already one of the fastest ECS and uses the best techniques under the hood to achieve maximum performance and efficiency. \nCare is always taken to find a healthy balance between CPU performance and ram utilization. \n\nIf you are more interested, have a look at the [benchmark](https://github.com/Doraku/Ecs.CSharp.Benchmark)! \n\n# 📖 [Documentation](https://arch-ecs.gitbook.io/arch)\nWere we able to convince you? If so, let's get started. \nWe have prepared a whole wiki to explain all the important aspects and provide examples. \nClick here for the [documentation](https://arch-ecs.gitbook.io/arch)!\n\n# 💻 Projects using Arch\nArch is already used in some projects, for a more detailed look, take a look at the [wiki](https://github.com/genaray/Arch/wiki/Projects-using-Arch)!\n\n## [Space Station 14](https://spacestation14.io/)\nSpace Station 14 is inspired by the cult classic Space Station 13 and tells the extraordinary story of everything that can go wrong on a shift at a space station. You take on a role and complete your tasks so that the space station doesn't go to the dogs... or do the exact opposite. Prepare yourself for chaos and the finest roleplay. Best of all, SS14 is open-source and anyone can play!\n![Ingame screenshot](https://spacestation14.com/images/home/gallery-medbay.jpg)\n\n## [Roguelite-Survivor](https://github.com/proc-gen/roguelite-survivor)\nAn action-packed c# clone of the hit \"vampire survivor\" based on monogame and arch!\nFight your way through hordes of different enemies, level up your character, collect permanent items and explore various maps!\nTry it out!\n![Ingame screenshot](https://user-images.githubusercontent.com/65076703/232624411-6a9e8a29-3118-41a6-a8f3-dd8d9c8f0edf.png)\n\n## [EquilibriumEngine-CSharp](https://github.com/clibequilibrium/EquilibriumEngine-CSharp)\nEquilibrium Engine is a data-oriented C# game engine that takes advantage of ECS pattern followed by Hot-Reloading of your libraries which allows you to quickly iterate on different aspects of your projects.\n![Equilibrium Engine screenshot](https://raw.githubusercontent.com/clibequilibrium/EquilibriumEngine-CSharp/master/docs/home.png)\n\n# Contributors\n\u003ca href=\"https://github.com/genaray/Arch/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=genaray/Arch\" /\u003e\n\u003c/a\u003e\n\nA huge thanks to all the supporters who did their part, especially [TwistableGolf](https://github.com/TwistableGolf) for their dedication and design of the official Arch logo and banner! \n","funding_links":["https://github.com/sponsors/genaray"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenaray%2Farch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgenaray%2Farch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenaray%2Farch/lists"}