# sschmid/entitas

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/sschmid-entitas).**

7,658 stars · 1,132 forks · C# · MIT

## Links

- GitHub: https://github.com/sschmid/Entitas
- awesome-repositories: https://awesome-repositories.com/repository/sschmid-entitas.md

## Topics

`c-sharp` `code-generation` `csharp` `design-pattern` `design-patterns` `ecs` `entity` `entity-component-system` `game` `game-development` `game-engine` `gamedev` `performance` `tdd` `unity` `unity3d`

## Description

Entitas is a data-oriented Entity Component System framework for Unity. It is designed to separate game state into components and logic into systems, utilizing a data-oriented design to optimize CPU cache usage, memory usage, and processing speed.

The framework includes a C# source code generator that automatically produces boilerplate classes, entity accessors, and context singletons to reduce manual coding. It also provides a Unity editor debugging tool for real-time runtime state visualization, system performance monitoring, and visual entity inspection.

The system manages entity lifecycles through context-based memory segmentation and index-based retrieval for high-speed access. It further optimizes performance using bitmask-based querying and reactive component tracking to process only the specific entities that have changed.

The project also covers network state synchronization and supports loading and saving configuration data via JSON.

## Tags

### Game Development

- [Entity Component Systems](https://awesome-repositories.com/f/game-development/engine-architecture/entity-component-systems.md) — Provides a high-performance Entity Component System for organizing game state into contiguous memory blocks.
- [Data-Oriented Design Libraries](https://awesome-repositories.com/f/game-development/data-oriented-design-libraries.md) — Implements a data-oriented design that organizes game data into memory pools for CPU cache optimization.
- [Entity Queries](https://awesome-repositories.com/f/game-development/entity-queries.md) — Filters entities based on the presence or absence of specific components to target precise subsets of objects. ([source](http://sschmid.github.io/Entitas/))
- [Game Performance Optimizations](https://awesome-repositories.com/f/game-development/game-performance-optimizations.md) — Optimizes game engine performance by utilizing reactive tracking to process only modified entities.
- [Data Access Optimizations](https://awesome-repositories.com/f/game-development/simulation-engines/entity-simulation-engines/data-access-optimizations.md) — Implements index-based retrieval to ensure high-speed access to entities without full collection searches. ([source](https://github.com/sschmid/Entitas/wiki/Example-projects))
- [Game Design Patterns](https://awesome-repositories.com/f/game-development/data-oriented-design-libraries/game-design-patterns.md) — Implements data-oriented architectural patterns to separate game state from behavior for flexible entity creation.
- [ECS Boilerplate Generators](https://awesome-repositories.com/f/game-development/ecs-boilerplate-generators.md) — Automatically generates the C# classes and interfaces needed for efficient game entity management.
- [Entity Inspectors](https://awesome-repositories.com/f/game-development/entity-inspectors.md) — Visual entity inspection in the tool displays entities and components in the editor hierarchy for real-time observation and modification. ([source](https://github.com/sschmid/Entitas/wiki/Unity-integration))

### Software Engineering & Architecture

- [Data-Logic Separation](https://awesome-repositories.com/f/software-engineering-architecture/data-logic-separation.md) — Separates game state into plain data components and logic into systems to optimize CPU cache and memory usage.
- [Component Change Tracking](https://awesome-repositories.com/f/software-engineering-architecture/component-change-tracking.md) — Tracks modifications to specific components to trigger logic only when data changes, avoiding unnecessary per-frame iterations.
- [Data-Oriented Component Storage](https://awesome-repositories.com/f/software-engineering-architecture/data-oriented-component-storage.md) — Implements data-oriented storage by attaching plain data objects to entities to separate state from behavior. ([source](http://sschmid.github.io/Entitas/))
- [ECS Libraries](https://awesome-repositories.com/f/software-engineering-architecture/ecs-libraries.md) — Provides a complete Entity Component System framework that separates game state into components and logic into systems. ([source](https://cdn.jsdelivr.net/gh/sschmid/entitas@main/README.md))
- [Accessor Generators](https://awesome-repositories.com/f/software-engineering-architecture/compile-time-code-generation/iterative-code-generation/accessor-generators.md) — Generates simplified interfaces for manipulating entity components based on field configurations to reduce boilerplate. ([source](https://github.com/sschmid/Entitas/wiki/Code-Generator))

### Data & Databases

- [Entity Search & Indexing](https://awesome-repositories.com/f/data-databases/entity-search-indexing.md) — Provides high-speed retrieval of entities via specific identifiers to avoid iterating through the entire entity collection.
- [Data Class Generators](https://awesome-repositories.com/f/data-databases/data-structure-definitions/data-class-generators.md) — Automatically generates classes and methods to clarify data-logic interactions and reduce manual coding effort. ([source](https://cdn.jsdelivr.net/gh/sschmid/entitas@main/README.md))

### Development Tools & Productivity

- [C# Source Code Generators](https://awesome-repositories.com/f/development-tools-productivity/c-source-code-generators.md) — Automatically generates boilerplate classes, entity accessors, and context singletons to reduce manual coding.
- [Boilerplate Generators](https://awesome-repositories.com/f/development-tools-productivity/code-generators/boilerplate-generators.md) — Automatically produces C# classes and accessors at build time to eliminate manual boilerplate and runtime reflection.
- [Bitmask Filtering](https://awesome-repositories.com/f/development-tools-productivity/developer-utilities-libraries/programming-logic-libraries/entity-filtering-tools/bitmask-filtering.md) — Utilizes high-performance bitmask filtering to quickly identify entities with specific component sets for system processing.
- [State Visualizations](https://awesome-repositories.com/f/development-tools-productivity/editor-visualizations/state-visualizations.md) — Offers visual indicators in the editor to debug contexts, entities, and components during execution. ([source](https://cdn.jsdelivr.net/gh/sschmid/entitas@main/README.md))
- [Unity Editor Extensions](https://awesome-repositories.com/f/development-tools-productivity/game-editor-extensions/unity-editor-extensions.md) — Provides custom Unity editor extensions for real-time monitoring of entities and system performance.

### Operating Systems & Systems Programming

- [Contextual Entity Pools](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/custom-memory-allocators/memory-object-pools/scoped-memory-pools/contextual-entity-pools.md) — Divides entities into isolated context-based pools to reduce the memory footprint and scope of logic processing.

### Web Development

- [Unity Game Frameworks](https://awesome-repositories.com/f/web-development/cross-platform-development/game-development-frameworks/unity-game-frameworks.md) — Ships as a framework specifically designed to manage complex object interactions and state within Unity.

### Networking & Communication

- [Game State Synchronization](https://awesome-repositories.com/f/networking-communication/packet-engines/packet-redirection/game-state-synchronization.md) — Implements real-time synchronization of game entity data across network clients to maintain consistent game states. ([source](https://github.com/sschmid/Entitas/wiki/Example-projects))

### System Administration & Monitoring

- [Performance Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/performance-monitoring.md) — Tracks the execution of logic systems to identify and resolve processing bottlenecks. ([source](https://github.com/sschmid/Entitas/wiki/Unity-integration))
