ECS Basics - NocturnalWisp/Tynted-Engine GitHub Wiki

ECS

ECS stands for Entity Component System. The basic explanation before you invest the next 12 hours researching this, is that there are three functional generalizations in this system/algorithm.

Entities

The Entity's are basically objects without any attributes or functionality. They are the raw form of an object. They may have a name and tag allowing them to be accessed individually. The most common representation of this is implemented by using integer indexes. Each entity can be referenced easily by using that indexer.

Components

Component's are the basic attributes an entity may have. They define any characteristics that an entity with this component attached may have. They generally do not define any behavior, and are made up of basic raw data values.

Systems

Systems are the real meat of the algorithm. Systems control a collection, or even just one, component(s) to produce a behavior. This can be generally summed up as the brains of the program. Everything is ran through each system and implemented in them. For now, you can think of them as just behaviors.

Summary

Now with the basics in mind, combining these topics together to create a fluent working engine took time and energy. To start understanding these topics will probably not take you as long, but it's not the easiest concept. The abstract nature of this implementation takes time to learn, but once understood, there is a large chance that this engine can be faster for game creation because of its functional nature. Take a look through the rest of the wiki to learn how Tynted Engine implements this technique, and how you can utilize it.