Entitas Game Architecture
04
Apr

Entity Component System (ECS) Framework

Antares Open World [AOW] – DEV Update 04.04.19

Der Weg ist das Ziel – In eigener Sache

Der Weg ist das Ziel, das war schon im­mer mei­ne Prämisse. Ich ha­be lan­ge Zeit nichts ge­pos­tet, da ich im­mer wie­der Rückschläge auf viel­schich­ti­gen Ebenen ver­zeich­nen muss­te. Ich das Gefühl hat­te, ob­wohl ich je­den Abend nach Feierabend meh­re­re Stunden an dem Projekt ar­bei­te­te, kei­ne nen­nens­wer­te Fortschritte ver­zeich­nen wür­de. Jedenfalls kei­ne, so dach­te ich, die ziel­füh­rend zu ei­ner spiel­ba­ren ers­ten Version von AOW wären.

Zudem liegt die Implementierung nun vor­erst wie­der in mei­nen al­lei­ni­gen Händen. Ich hal­te je­den Tag die Ohren und Augen of­fen, Gleichgesinnte zu fin­den, die Lust ha­ben mir an die­sem ehr­gei­zi­gem Epos zu hel­fen. Da dies je­doch noch ei­ne gan­ze Weile ein Hobbyprojekt blei­ben wird, ist es nicht ein­fach nach haupt­be­ruf­li­cher Volltätigkeit, an­de­re Menschen zu mo­ti­vie­ren, und selbst am Ball zu bleiben.

Nichtsdestotrotz, so den­ke ich ha­be ich ei­nen für mich gang­ba­ren Weg ge­fun­den, die­ses Projekt un­er­müd­lich fort­zu­füh­ren. Hiervon möch­te ich Euch nun Berichten. Es ist ein Lebenswerk ge­wor­den, in de­nen ich be­reits über 5 Jahre Planung und Entwicklung ge­steckt ha­be. Es ist zu wert­voll, als es in ei­ne Schublade zu le­gen, oder halb­her­zig zu be­han­deln. Ich den­ke be­haup­ten zu kön­nen, wirk­lich ex­trem tief­grün­dig den Markt nach Möglichkeiten be­stehen­der Realisierungen, Game Engines und Tools durch­fors­tet zu ha­ben, hier so­gar die Implementierung ei­ner ei­ge­nen de­di­zie­ren­den Game Engine (AWE) be­gon­nen zu ha­ben, um Bezüge an Anforderungen und Machbarkeiten den Kampf an­zu­sa­gen. Ich woll­te das Rad nie neu erfinden.

In den letz­ten 15 Monate ha­ben mich im­mer wie­der von er­folgs­ver­spre­chen­den Wegen in Sackgassen füh­ren las­sen, um fest­zu­stel­len, das ge­wis­se Dinge im Konzept ein­fach nicht ad­äquat um­ge­setzt wer­den kön­nen. Ich bin ein Mensch, der ex­trem un­gern Kompromisse be­zo­gen auf mei­nem Anspruch macht, Dinge so, oder dann lie­ber gar nicht tut. Mein Spielkonzept je­doch voll von die­sen tech­no­lo­gi­schen Sackgassen zu schei­nen ist. Ich ha­be für sehr vie­le spie­le­ri­sche Anwendungsfälle in AOW mitt­ler­wei­le funk­ti­ons­tüch­ti­ge Proof of Concept´s (PoC) er­stel­len können.

Die meis­ten von mir ge­wünsch­ten Funktionalitäten kann ich nun tech­nisch rea­li­sie­ren. Mein Kopf ist voll von Dingen, auf kri­ti­sche Fragestellungen, nun ei­ne lö­sungs­ori­en­tier­te Antwort prä­sen­tie­ren zu kön­nen. Dies kos­te­te je­doch viel Zeit, gab und gibt mir aber die Kraft und den Mut un­auf­halt­sam an mei­nem Lebenswerk wei­ter zu ma­chen. Auch wenn es die Erkenntnis be­deu­tet, manch­mal von hin­ten durchs Auge, sei­ne Ziele rea­li­sie­ren zu müs­sen. Alles ist mit Kompromissen be­haf­tet, die ei­ne Engine kann die­ses sehr gut, die an­de­re Engine wie­der an­de­re Dinge gut. Entscheidungen ha­ben tief­ge­hen­de, fast Butterfly Effekt ar­ti­ge Verhaltensweisen.

Für mich und mein AOW Konzept zählt in ers­ter Linie kom­ple­xe Funktionalität in Simulation ab­zu­bil­den. Wir spre­chen hier von ver­dammt vie­len User Storys, re­spek­ti­ve Use Cases, die ich im Laufe der Jahre aus­ge­ar­bei­tet ha­be. Auch möch­te ich die Freiheiten nicht ver­lie­ren, viel­leicht spä­ter doch noch auf ei­ne ei­ge­ne und/oder an­de­re Engine ge­hen zu wol­len, wenn es die Kapazitäten oder Möglichkeiten zu­las­sen. Die Lösung be­steht dar­in, al­les in ei­ner Headless Server Simulation un­ter­brin­gen zu kön­nen. Dem Spieler es über Schnittellen zu er­mög­li­chen, in die­se AOW Simulation ein­grei­fen zu las­sen. So die Views kom­plett über die­se Schnittstellen, z.b. ge­gen­über ei­nem Drittsystem, wie Unity3D, Unreal, etc. zu ent­kop­peln. Die Simulation muss nicht wis­sen, das sie trans­pa­rent durch ei­ne Spielengine ge­macht wird. Dies hat enor­me Vorteile.

So viel die Wahl für mich auf ein Softwaremuster (Paradigma) mit dem Namen Entity Component System (ECS). Dieses Framework ist ein­fach prä­de­sti­niert für mein MMORPG. So führ­te mich die Reise zur ei­ner Evaluierung al­ler am Markt be­find­li­chen ECS Frameworks in Hinblick auf die Nutzung von Unreal und der Unity3D. Auch ei­ne ECS Eigenentwicklung in C++ wur­de dar­auf­hin als POC im­ple­men­tiert. Auf Grund der Tatsache, je­doch auch das AOW ein Indy-Projekt ist, blieb mir vor­erst kei­ne an­de­re rea­lis­ti­sche Möglichkeit, als auf ein be­stehen­des am Markt be­find­li­ches ECS System zu­rück zu grei­fen. Ich soll­te dies­mal nicht ent­täuscht wer­den. Alle mei­ne Evaluierungen und Tests sind dies­mal sehr vielversprechend.

Kommen wir aber zum Punkt. Mein heu­ti­ger Kenntnisstand er­laubt es mir ei­ne Entscheidung tref­fen zu müs­sen. Antares Open World (AOW), ge­nau ge­nom­men ein ers­ter klei­ner Teil mit Namen The Awakening, wird in Unity 3D mit­tels dem ECS System Entitas im­ple­men­tiert wer­den. Auch im Hinblick der von Unity3D selbst an­ge­streb­ten Bemühungen ih­res ei­ge­nen ECS/Jobs Systems, für mich der ein­zi­ge ak­tu­ell prag­ma­ti­sche und zu­läs­si­ge Schluss. So kann ich die ge­sam­te si­mu­lier­te Spiellogik ent­kop­peln und die Vorteile aus bei­den Welten nut­zen, bis neue Erkenntnisse die Veränderung er­for­dern, zu be­den­ken sind. Meine POC´s im Bereich Unity3D und Entitas wa­ren äu­ßerst po­si­tiv und ich bin über­zeugt die­sen Weg nun wei­ter ge­hen zu können.

Wer sich hier wei­ter in­for­mie­ren möch­te, dem emp­feh­le ich die un­ten auf­ge­führ­ten Entitas Links. Das ECS Muster löst si­cher­lich nicht al­le mei­ne Herausforderungen, je­doch ver­dammt viele.

Da ich sel­ber haupt­be­ruf­lich Data Engineer bin, ist ECS für mich auch sehr na­he an der Daten” Wahrheit. Von DownToTop” Modellierung, Data Driven” ori­en­tiert ist für mich, wie Stored Procedures in ei­nem DBMS zu schrei­ben, was wie­der­um den Systemen in ei­nem ECS Muster sehr na­he kommt. UUID´s ent­spre­chen hier­bei den Entitäten, und Komponenten den Daten. Ich den­ke qua­si schon im­mer DownTop da­ten­ori­en­tiert, statt TopDown ge­ne­ra­li­sie­rend OOP ver­gleich­bar. Ich möch­te Euch jetzt aber nicht wei­ter mit mei­nen per­sön­li­chen Erkenntnissen lang­wei­len, viel mehr Euch auf­zei­gen, wel­che Gründe hin­ter mei­ner tief­ge­hen­den Entscheidung fruch­ten, hier die­sen ECS Pattern Weg ge­hen zu wollen.

Mein Aufruf, Meldet Euch, helft am Projekt mit­zu­wir­ken. Ich ar­bei­te agi­le und SCRUM nah mit Jira, Confluence, Enterprise Architect, ei­nen ei­ge­nen Game Server, Slack, Unity3D, Entitas, iClone, Maya, Houdini, Voxelfarm, WWISE, Azure, AWS und all die klei­nen Tools.

Es lohnt sich mit­zu­ma­chen! Lasst uns end­lich ein Spiel von und für Gamer ma­chen. Wir brau­chen kei­ne Kopie von ei­ner Kopie mit bes­se­rer Grafik in Version 5/6/7! Wir brau­chen um­ge­setz­te ein­zig­ar­ti­ge Ideen mit Innovation und next­gen Gameplay!

Ich hal­te Euch wei­ter auf dem Laufenden.

Entitas is a su­per fast Entity Component System (ECS) Framework spe­ci­fi­cal­ly ma­de for C# and Unity von Simon Schmid

Alle wei­ter­füh­ren­den Informationen zum ECS Framework fin­det ihr hier:

Überblick in PDF Form: AOW Konzept
Community Forum: AOW ADG Forum
Facebook: AOW FB Seite
Mitarbeit: ADG Slack Portal