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

Was this helpful?

Edit on GitHub
  1. Misc

FAQ

FAQ, frequently asked questions.

PreviousRoadmap

Last updated 2 months ago

Was this helpful?

Can i support this project?

Of course you can! By either becoming a and actively participating in the ecosystem or by ! We are happy about any help!

Which projects is Arch suitable for?

Especially for games or simulations... but also data-oriented applications where it is important to have and query a lot of flexible data!

Why do other ECS-Frameworks claim to be faster?

You may have seen that Arch performs well in some benchmarks, but slower than some ECS frameworks. Does this mean that Arch is slow or poorly optimized? No, its the opposite! Every benchmark is implemented differently and sometimes uses a different (often outdated) Arch version. In addition, Arch has something that many other ECS do not have, . allow you to create huge amounts of entities at runtime and even remove them later to free up memory, but this adds a bit of overhead. It's a trade-off that's worth it though!

Why doesn't Arch have XYZ?

Arch's mantra is to be . A basic ECS that can be quickly and easily integrated anywhere with the possibility to expand it according to your own wishes. Thus we support clean code, separation of concerns and KISS as programming principles. Arch only does what it is supposed to do, to be a high-performance ECS that is easy to use and gives YOU the tools. Nothing more and nothing less, no hidden operations in the background. For everything else there is , a collection of tools and libraries that extend Arch.

Can i use Arch in an Engine?

You can do that too. You can use Arch anywhere you use .Net Framework 2, .Net 6 to .Net8. This means you can use Arch in a pure C# project or in an engine like !

Is Arch AOT compatible?

Arch also works in AOT environments. Depending on how you use it, however, you may have to in advance or simply use .

Can i use managed structs and classes as components with Arch?

You can do that too! In arch you can simply use classes and structs as components without having to play around with pointers or forcing only structs. This even has some advantages, it is faster to develop with it! If you want to get the maximum performance out of it, we still recommend using only unmanaged structs as components.

ECS for everything?

ECS is a tool not a silver bullet. Sooner or later you will encounter problems that simply cannot be mapped as well with an ECS. Don't use an ECS for everything, but complement it with other tools that help you. Forcing it never works!

How do i make queries run spatial?

You don't. ECS is not intended to do everything, for this case you will likely require an additional data structure on top of Arch that is being used together.

✏️
contributor
supporting Arch financially
Chunks
Chunks
Arch.Extended
Unity, Godot or Stride
register the components
Arch.Aot-SourceGenerator
bare minimum