Arch-ECS
💬 Join the discord!☕ Buy us a coffee!
  • 🌄Why Arch?
  • 📖Documentation
    • Concepts
    • World
    • Entity
    • Query
    • Archetypes & Chunks
    • Optimizations
      • Query-Techniques
      • Pass on data
      • Batch and Bulk
      • PURE_ECS
      • Multithreading
      • EntityData
    • Utilities
      • Component Registration
      • Non-generic API
      • CommandBuffer
      • Events
      • Dangerous Extensions
  • 🧩Extensions
    • Arch.Extended
      • Arch.System
      • Arch.System.SourceGenerator
      • Arch.EventBus
      • Arch.AOT.SourceGenerator
      • Arch.LowLevel
      • Arch.Persistence
      • Arch.Relationships
  • 💡Examples & Guidelines
    • Arch.Samples
    • Entities in Query
    • Structural changes
  • Unity
  • 🎮Projects using Arch
    • Skylandkingdoms
    • Cubetory
    • SS14
    • EquilibriumEngine-CSharp
    • Rougelite-Survivor
  • ✏️Misc
    • Roadmap
    • FAQ
Powered by GitBook
On this page
  • Example
  • Next steps
  • Socials
  • Support this project!

Was this helpful?

Edit on GitHub

Why Arch?

Arch, a high-performance and bare minimum C# ECS.

NextConcepts

Last updated 1 month ago

Was this helpful?

Arch is a high-performance C# based Archetype & Chunks (ECS) for game development and data-oriented programming. To summarize:

🏎️ 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 !

🤏 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 !

💪 MAINTAINED

It's actively being worked on, maintained, and comes along several !

🚢 SUPPORT

Supports .NetStandard 2.1, .Net Core 8, and therefore you may use it with Unity, Godot or any other C#-Project!

Example

Put on your boots and give it a try, it's easier than you thought...

dotnet add PROJECT package Arch --version 2.1.0-beta

Then import Arch next, so that Arch and its methods are available to you...

using Arch;

And your journey can begin! Now let's take a quick look at a small example before you can dive in completely!

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 player = 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 player: {entity.Id}"); 
}); 

This example is just a foretaste, more syntax and API await you on your adventure! Even non-generic ones and some without lambdas!

Next steps

Socials

Get involved!

Support this project!

Where to next? Arch is packed with features. Look at the, play around with the or make yourself familiar with the. It's hard for me to let you go, but I'm so excited to see where it will take you.

But before you leave, take a moment to value this project. Do you notice anything? It is completely open source! You can contribute and change every aspect! So if you like it, and to support further development!

Entity Component System
Benchmark
Wiki
Extensions
documentation
examples
Extensions
Github
Discord
leave a star ⭐
buy us a coffee ☕
🌄
Page cover image