A high-performance Entity Component System framework for C# game development, prioritizing simplicity and minimal constraints.
DefaultEcs is an Entity Component System framework for C# designed specifically for game development. It provides a simple API to manage game entities and their data components while optimizing for performance through contiguous memory layouts and parallel processing capabilities.
C# game developers and engine creators who need a high-performance, flexible ECS framework for building games or simulations with complex entity interactions.
Developers choose DefaultEcs for its balance of simplicity and performance, offering a minimal-constraint API with features like multi-threading support, command recording for thread safety, and built-in serialization without requiring extensive boilerplate.
Entity Component System framework aiming for syntax and usage simplicity with maximum performance for game development.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Encourages struct components for contiguous memory storage, optimizing cache performance as highlighted in the component management section.
Offers a fluent API with rules like With, Without, WhenAdded, and WhenChanged for precise entity queries, enabling complex data access patterns.
Supports parallel system execution via IParallelRunner and thread-safe entity modifications with EntityCommandRecorder, as detailed in the threading and command sections.
Includes TextSerializer and BinarySerializer for saving and loading world states, providing out-of-the-box save/load functionality despite some limitations.
The versioning strategy (v0.major.minor) admits that breaking changes can occur, making it risky for projects requiring long-term stability without frequent updates.
Built-in serializers lack support for multi-dimensional arrays, cyclic object graphs, and are incompatible with AOT platforms like Xamarin.iOS, as noted in the serialization section.
Achieving thread safety requires careful use of EntityCommandRecorder for structural changes, adding overhead and complexity to multi-threaded game logic.