Volver al ranking

A high-performance C# based Archetype & Chunks Entity Component System (ECS) with optional multithreading.

csharpdotnetecsentity-component-systemgamegame-developmentdotnet-corenetstandard21fastgamedevunityentity-framework
Crecimiento de estrellas
Estrellas
1.8k
Forks
172
Crecimiento semanal
Issues
30
5001k1.5k
nov 2022ene 2024abr 2025jul 2026
README

Arch Discord Maintenance Nuget License C#

A high-performance C# based Archetype & Chunks Entity Component System (ECS) for game development and data-oriented programming.

  • 🏎️ FAST > Best cache efficiency, iteration, and allocation speed. Plays in the same league as C++/Rust ECS Libs!
  • 🚀 FASTER > Arch is on average quite faster than other ECS implemented in C#. Check out this Benchmark!
  • 🤏 BARE MINIMUM > Not bloated, it's small and only provides the essentials for you!
  • ☕️ SIMPLE > Promotes a clean, minimal, and self-explanatory API that is simple by design. Check out the Wiki!
  • 💪 MAINTAINED > It's actively being worked on, maintained, and comes along several Extensions!
  • 🚢 SUPPORT > Supports .NetStandard 2.1, .Net Core 6 and 8, and therefore you may use it with Unity or Godot!

Download the package, get started today and join the Discord!

dotnet add PROJECT package Arch --version 2.1.0-beta

⏩ Quickstart

Arch 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? It's not! Arch does everything for you, you only need to define the entities and the logic.

I bet you don't want to read tons of documentation, theory, and other boring stuff right?
Let's just ignore all that deep knowledge and jump in directly to get something done.

using Arch;

// Components
public record struct Position(float X, float Y);
public record struct Velocity(float Dx, float Dy);

// Create a world and an entity with position and velocity.
using var world = World.Create();
var adventurer = world.Create(new Position(0,0), new Velocity(1,1));

// Enumerate all entities with Position & Velocity to move them
var query = new QueryDescription().WithAll<Position,Velocity>();
world.Query(in query, (Entity entity, ref Position pos, ref Velocity vel) => {
    pos.X += vel.Dx;
    pos.Y += vel.Dy;
    Console.WriteLine($"Moved adventurer: {entity.Id}"); 
}); 

[!NOTE] The example is very simple. There more features including queries without lambda or an API without generics and much more. Checkout the Documentation!

💡 Highlights

This is all you need to know, with this little knowledge you are already able to bring your worlds to life.
However, if you want to take a closer look at Arch's features and performance techniques, check out the Wiki! There's more to explore, for example...

🤝 Our promise

  • Bare minimum - No overengineering, no abstracted hidden costs
  • Incredibly fast and efficient
  • Is actively maintained and developed
  • Grateful for every contribution

🚀 Features

  • Archetypes with 16KB large chunks for your massive worlds
  • Incredibly small Entity size
  • Optional Pure-ECS for maximum performance and efficiency
  • Bulk/Batch Entity operations
  • High-performance Queries
  • Multithreaded Queries
  • Enumerators
  • CommandBuffers
  • Events
  • Generic and Non-Generic API
  • AOT friendly
  • Several extensions with systems, tools, source generators and more
  • Monogame, Unity, Godot Integration guides
  • And much more...

🧩 Extensions

Arch has some extensions that add more features and tools. Among them for example :

  • 🛠️ Arch.Extended > Adds a set of tools and features to save boilerplate code!
  • 🔎 Godot Entity Debugger > An Arch Entity debugger for the Godot engine!
  • 🔎 Stride Entity Debugger > An example of Arch in the Stride engine, with additional entity and system inspector!
  • 🔎 Arch.Unity > A library that makes the integration of Arch in Unity much easier, with many cool new features!
  • 🔎 Zinc-Framework > A small but fine engine framework which is based on Arch and also has its own source generator to define entities declaratively!
  • Your Tool-Library? > If you develop more tools and features for Arch, let us know and we'll list them here!

🚀 Performance

Arch is already one of the fastest ECS and uses the best techniques under the hood to achieve maximum performance and efficiency. Care is always taken to find a healthy balance between CPU performance and ram utilization.

If you are more interested, have a look at the benchmark!

📖 Documentation

Were we able to convince you? If so, let's get started. We have prepared a whole wiki to explain all the important aspects and provide examples. Click here for the documentation!

💻 Projects using Arch

Arch is already used in some projects, for a more detailed look, take a look at the wiki!

Space Station 14

Space 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! Ingame screenshot

Roguelite-Survivor

An action-packed c# clone of the hit "vampire survivor" based on monogame and arch! Fight your way through hordes of different enemies, level up your character, collect permanent items and explore various maps! Try it out! Ingame screenshot

EquilibriumEngine-CSharp

Equilibrium 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. Equilibrium Engine screenshot

Contributors

A huge thanks to all the supporters who did their part, especially TwistableGolf for their dedication and design of the official Arch logo and banner!

Repositorios relacionados
jellyfin/jellyfin

The Free Software Media System - Server Backend & API

C#GNU General Public License v2.0jellyfincsharp
jellyfin.org
54.5k5.1k
files-community/Files

A modern file manager that helps users organize their files and folders.

C#MIT Licensefluent-designxaml
files.community
44.4k2.8k
ShareX/ShareX

ShareX is a free and open-source application that enables users to capture or record any area of their screen with a single keystroke. It also supports uploading images, text, and various file types to a wide range of destinations.

C#GNU General Public License v3.0screen-capturescreen-recorder
getsharex.com
38.7k3.9k
doocs/leetcode

🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解

JavaMavenCreative Commons Attribution Share Alike 4.0 Internationalalgorithmscpp
leetcode.doocs.org
36.3k9.4k
DevToys-app/DevToys

A Swiss Army knife for developers.

C#MIT Licensesyntax-highlightingdeveloper-tools
devtoys.app
31.8k1.8k
AvaloniaUI/Avalonia

Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The future of .NET UI

C#MIT Licensec-sharpxaml
avaloniaui.net
31.2k2.8k
microsoft/calculator

Windows Calculator: A simple yet powerful calculator that ships with Windows

C++MIT Licenseuwpwindows
31k5.8k
BeyondDimension/SteamTools

🛠「Watt Toolkit」是一个开源跨平台的多功能 Steam 工具箱。

C#GNU General Public License v3.0steamcsharp
steampp.net
26.2k1.7k
pulumi/pulumi

Pulumi - Infrastructure as Code in any programming language 🚀

GoGo ModulesApache License 2.0infrastructure-as-codeserverless
pulumi.com
25.5k1.4k
mxgmn/WaveFunctionCollapse

Bitmap & tilemap generation from a single example with the help of ideas from quantum mechanics

C#Otherprocedural-generationmachine-learning
25.2k1.3k
quozd/awesome-dotnet

A collection of awesome .NET libraries, tools, frameworks and software

Creative Commons Zero v1.0 Universaldotnetawesome
21.5k2.9k
thangchung/awesome-dotnet-core

:honeybee: A collection of awesome .NET core libraries, tools, frameworks and software

C#dotnet-coreawesome-list
21.3k3k