en:toolworks:docs:apparatus:ecs

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
en:toolworks:docs:apparatus:ecs [2021/04/14 14:56] vladiusen:toolworks:docs:apparatus:ecs [2021/12/03 20:28] vladius
Line 3: Line 3:
 ===== OOP Quirks & Limitations ===== ===== OOP Quirks & Limitations =====
  
-Prior to discussing some ECS concepts, we have address the [[wp>Object-oriented_programming|object-oriented programming (OOP)]] and its issues, since the current state of Unreal Engine's user-level API is basically OOP-based. The actor's component model is also kind of limited and is mostly static in nature.+Prior to exploring the ECS main concepts, we should address the [[wp>Object-oriented_programming|object-oriented programming (OOP)]] pattern and some of the issues related to it. That's because the current state of Unreal Engine's user-level API is basically OOP-based. Even the actor's component model is somewhat limited and is mostly static in nature. It really shouldn't be confused with a data-oriented approach we're presenting you with.
  
-While developing games (and software in general) OOP-way, we decompose of all the available entities and concepts into hierarchies of their corresponding types. In terms of Unreal Engine those are mainly called Objectsor [[ue>API/Runtime/CoreUObject/UObject/UObject|''UObjects'']] if we are talking about C++ coding, so we create hierarchies of types (classesderived from a single root ''UObject'' ancestor. Every time we create a new Blueprint (or a C++ class) it basically derives from this root class.+A large portion of C++ language is also OOP and it was one of the main reasons behind its original design. It seems like the general top-level UE's architecture was heavily based on C++ some features, or at least was heavily inspired by them. That's quite logical if you think of it. In the end C++ is the main language behind the tech. The Unreal build toolset (UBT and UHT) is implemented in C# which is also an OOP language by the way. 
 + 
 +So, when we develop games (and software in general) the OOP-way, we usually decompose all of the available entities and concepts into the hierarchies of their corresponding types. In terms of Unreal Engine those are mainly called Objects (or ''[[ue>API/Runtime/CoreUObject/UObject/UObject|UObjects]]'' if we are talking about C++ coding part). We create hierarchies of classes that are all derived from a single root ''UObject'' ancestor. Every time we create a new Blueprint (or a C++ class) it basically derives from this root class.
  
 As the time goes we notice that our classes become more and more in common and begin to [[wp>Code_refactoring|refactor]] the codebase (or the Blueprint assets), while extracting those common facilities into some separate base classes. Those in turn become the ancestors and we derive certain types from them, that should share their functionality. As the time goes we notice that our classes become more and more in common and begin to [[wp>Code_refactoring|refactor]] the codebase (or the Blueprint assets), while extracting those common facilities into some separate base classes. Those in turn become the ancestors and we derive certain types from them, that should share their functionality.
  • en/toolworks/docs/apparatus/ecs.txt
  • Last modified: 2021/12/18 15:19
  • by jispar