Entity Component System

From Unify Community Wiki
Revision as of 00:45, 10 December 2018 by Isaiah Kelly (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contents

Introduction

The Unity Entity Component System (ECS) is a new data oriented framework for building games in Unity that is currently being developed by Unity Technologies as part of their “Performance by Default” initiative. The package can be used on it's own but is deigned to work with the new C# Job System and Burst Compiler packages to vastly increase engine performance through automatic native code optimization and multi-threading support. Unity claims that using these new systems together can lead to as much as x100 speed improvements over the existing “classic” GameObject and MonoBehaviour system.

Development Status

Unity ECS is currently in "preview" and not yet considered production ready. You are free to use it to develop and release games today but should be aware that it's currently in active development and you may encounter bugs or stability issues when using it. Many features are also still missing and the API is likely to change before the official 1.0 release. However, trying out the package now allows you to prepare for the future of Unity and provide feedback that will have a direct effect on the final product. Visit the official forum to get involved, ask questions or give feedback.

Third-Party Alternatives

For developers looking for production ready entity component systems to use today, there are a few alternatives. Most notable frameworks are Entitas by Simon Schmid and Svelto.ECS by Sebastiano Mandalà. Both of which have been battle tested in professional game productions.

Installation and Setup

To use the new ECS features you need to install the Entities package via the Package Manager (introduced in Unity 2018.1) which is accessible under the Window menu on the toolbar. Using this package with the latest version of Unity is recommended since older versions may not be compatible with the latest version or support all the latest features.

Example Projects

Official Documentation

Since the system is still under heavy development official documentation has not yet been created but you can view a work-in-progress draft here.

Personal tools
Namespaces

Variants
Actions
Navigation
Extras
Toolbox