aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax-001 <80035972+Max-001@users.noreply.github.com>2024-09-18 18:11:19 +0200
committerMax-001 <80035972+Max-001@users.noreply.github.com>2024-09-18 18:11:19 +0200
commitc69c8815df1c0e1e6ef155a9cfc4747132e0e1c6 (patch)
tree4b5dc709dca24393ca23264fdec9746d252fe808
parenta839cc46f72a8702def434672c7ad4a8ef1221d1 (diff)
Made a begin for the ECS
-rw-r--r--research.tex30
1 files changed, 11 insertions, 19 deletions
diff --git a/research.tex b/research.tex
index 052a5b2..1ca5a2e 100644
--- a/research.tex
+++ b/research.tex
@@ -49,7 +49,7 @@ layers are divided into the following categories:\noparbreak
\item[AI] Provides artificial inteligent behavior.
\end{description}
-\subsubsection{Structure}
+\subsubsection{Structures}
The above mentioned layers should be structured, somehow. One of the requirements is
that the game engine's API uses a so-called gameObject (with one or more component(s)).
@@ -78,24 +78,16 @@ programming harder. \autocite{man:DecoratorDesignPattern} \autocite{man:Decorato
\label{fig:decorator}
\end{figure}
-Another very popular design pattern, is the Entity Component System (\gls{ecs}). ...
-
-\paragraph{ECS}
-
-A game engine must have the ability to keep track and update several game objects. To
-do this most game engines employ an \gls{ecs} model which uses modulair components to
-give entities properties and features. The need for an entity component system arises
-because multiple game objects are required to create a scene in a game. These game
-objects exist within the scene and perform actions, such as a UI display for a score.
-This game object does not need to be rendered; it could be a script running in the
-background. It could also be a player sprite that is controlled. These entities need
-to be aware of other entities, for example, during collisions. For this to function,
-a scene is required to host all game objects. Within this scene, the game objects
-must be stored efficiently, and entities must be provided with the required behavior,
-such as audio, position, or physics. To create diverse entities with specific
-functions: A scene can contain many different kinds of entities, each with different
-properties and functions. But no matter how different each entity is, it remains an
-entity. To assign properties and functions to entities, components are used.
+TODO: Add Extension Objects design pattern (if this is applicable)!
+
+Another (very popular) design pattern to structure the game engine, is the Entity Component
+System (\gls{ecs}). The \gls{ecs} is made out of three main subsystems, namely entities,
+components and systems. Entities are just IDs. An entity is made out of a gameObject and one
+(or more) components. Components are the classes that hold the data. The components determine
+what kind of entity it is (e.g. a sprite, audio, and so on). Systems take care of the behavior
+of the entities. Systems mainly read and write the enity's components data. The \gls{ecs}
+clearly distinguishes the data (components) from the functionality (systems).
+TODO: Continue this explanation (also add some diagrams to make the ECS more clear)!
There are many C/C++ libraries available, completely dedicated to \gls{ecs}. The most
popular libraries are shown in \cref{tab:popularECSLibraries}. The popularity is based