FAQ
FAQ, frequently asked questions.
Can i support this project?
Of course you can! By either becoming a contributor and actively participating in the ecosystem or by supporting Arch financially! 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, Chunks. Chunks 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 bare minimum. 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 Arch.Extended, 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 Unity, Godot or Stride!
Is Arch AOT compatible?
Arch also works in AOT environments. Depending on how you use it, however, you may have to register the components in advance or simply use Arch.Aot-SourceGenerator.
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.
Last updated
Was this helpful?