
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 immer meine Prämisse. Ich habe lange Zeit nichts gepostet, da ich immer wieder Rückschläge auf vielschichtigen Ebenen verzeichnen musste. Ich das Gefühl hatte, obwohl ich jeden Abend nach Feierabend mehrere Stunden an dem Projekt arbeitete, keine nennenswerte Fortschritte verzeichnen würde. Jedenfalls keine, so dachte ich, die zielführend zu einer spielbaren ersten Version von AOW wären.
Zudem liegt die Implementierung nun vorerst wieder in meinen alleinigen Händen. Ich halte jeden Tag die Ohren und Augen offen, Gleichgesinnte zu finden, die Lust haben mir an diesem ehrgeizigem Epos zu helfen. Da dies jedoch noch eine ganze Weile ein Hobbyprojekt bleiben wird, ist es nicht einfach nach hauptberuflicher Volltätigkeit, andere Menschen zu motivieren, und selbst am Ball zu bleiben.
Nichtsdestotrotz, so denke ich habe ich einen für mich gangbaren Weg gefunden, dieses Projekt unermüdlich fortzuführen. Hiervon möchte ich Euch nun Berichten. Es ist ein Lebenswerk geworden, in denen ich bereits über 5 Jahre Planung und Entwicklung gesteckt habe. Es ist zu wertvoll, als es in eine Schublade zu legen, oder halbherzig zu behandeln. Ich denke behaupten zu können, wirklich extrem tiefgründig den Markt nach Möglichkeiten bestehender Realisierungen, Game Engines und Tools durchforstet zu haben, hier sogar die Implementierung einer eigenen dedizierenden Game Engine (AWE) begonnen zu haben, um Bezüge an Anforderungen und Machbarkeiten den Kampf anzusagen. Ich wollte das Rad nie neu erfinden.
In den letzten 15 Monate haben mich immer wieder von erfolgsversprechenden Wegen in Sackgassen führen lassen, um festzustellen, das gewisse Dinge im Konzept einfach nicht adäquat umgesetzt werden können. Ich bin ein Mensch, der extrem ungern Kompromisse bezogen auf meinem Anspruch macht, Dinge so, oder dann lieber gar nicht tut. Mein Spielkonzept jedoch voll von diesen technologischen Sackgassen zu scheinen ist. Ich habe für sehr viele spielerische Anwendungsfälle in AOW mittlerweile funktionstüchtige Proof of Concept´s (PoC) erstellen können.
Die meisten von mir gewünschten Funktionalitäten kann ich nun technisch realisieren. Mein Kopf ist voll von Dingen, auf kritische Fragestellungen, nun eine lösungsorientierte Antwort präsentieren zu können. Dies kostete jedoch viel Zeit, gab und gibt mir aber die Kraft und den Mut unaufhaltsam an meinem Lebenswerk weiter zu machen. Auch wenn es die Erkenntnis bedeutet, manchmal von hinten durchs Auge, seine Ziele realisieren zu müssen. Alles ist mit Kompromissen behaftet, die eine Engine kann dieses sehr gut, die andere Engine wieder andere Dinge gut. Entscheidungen haben tiefgehende, fast Butterfly Effekt artige Verhaltensweisen.
Für mich und mein AOW Konzept zählt in erster Linie komplexe Funktionalität in Simulation abzubilden. Wir sprechen hier von verdammt vielen User Storys, respektive Use Cases, die ich im Laufe der Jahre ausgearbeitet habe. Auch möchte ich die Freiheiten nicht verlieren, vielleicht später doch noch auf eine eigene und/oder andere Engine gehen zu wollen, wenn es die Kapazitäten oder Möglichkeiten zulassen. Die Lösung besteht darin, alles in einer Headless Server Simulation unterbringen zu können. Dem Spieler es über Schnittellen zu ermöglichen, in diese AOW Simulation eingreifen zu lassen. So die Views komplett über diese Schnittstellen, z.b. gegenüber einem Drittsystem, wie Unity3D, Unreal, etc. zu entkoppeln. Die Simulation muss nicht wissen, das sie transparent durch eine Spielengine gemacht wird. Dies hat enorme Vorteile.
So viel die Wahl für mich auf ein Softwaremuster (Paradigma) mit dem Namen Entity Component System (ECS). Dieses Framework ist einfach prädestiniert für mein MMORPG. So führte mich die Reise zur einer Evaluierung aller am Markt befindlichen ECS Frameworks in Hinblick auf die Nutzung von Unreal und der Unity3D. Auch eine ECS Eigenentwicklung in C++ wurde daraufhin als POC implementiert. Auf Grund der Tatsache, jedoch auch das AOW ein Indy-Projekt ist, blieb mir vorerst keine andere realistische Möglichkeit, als auf ein bestehendes am Markt befindliches ECS System zurück zu greifen. Ich sollte diesmal nicht enttäuscht werden. Alle meine Evaluierungen und Tests sind diesmal sehr vielversprechend.
Kommen wir aber zum Punkt. Mein heutiger Kenntnisstand erlaubt es mir eine Entscheidung treffen zu müssen. Antares Open World (AOW), genau genommen ein erster kleiner Teil mit Namen The Awakening, wird in Unity 3D mittels dem ECS System Entitas implementiert werden. Auch im Hinblick der von Unity3D selbst angestrebten Bemühungen ihres eigenen ECS/Jobs Systems, für mich der einzige aktuell pragmatische und zulässige Schluss. So kann ich die gesamte simulierte Spiellogik entkoppeln und die Vorteile aus beiden Welten nutzen, bis neue Erkenntnisse die Veränderung erfordern, zu bedenken sind. Meine POC´s im Bereich Unity3D und Entitas waren äußerst positiv und ich bin überzeugt diesen Weg nun weiter gehen zu können.
Wer sich hier weiter informieren möchte, dem empfehle ich die unten aufgeführten Entitas Links. Das ECS Muster löst sicherlich nicht alle meine Herausforderungen, jedoch verdammt viele.
Da ich selber hauptberuflich Data Engineer bin, ist ECS für mich auch sehr nahe an der “Daten” Wahrheit. Von “DownToTop” Modellierung, “Data Driven” orientiert ist für mich, wie Stored Procedures in einem DBMS zu schreiben, was wiederum den Systemen in einem ECS Muster sehr nahe kommt. UUID´s entsprechen hierbei den Entitäten, und Komponenten den Daten. Ich denke quasi schon immer DownTop datenorientiert, statt TopDown generalisierend OOP vergleichbar. Ich möchte Euch jetzt aber nicht weiter mit meinen persönlichen Erkenntnissen langweilen, viel mehr Euch aufzeigen, welche Gründe hinter meiner tiefgehenden Entscheidung fruchten, hier diesen ECS Pattern Weg gehen zu wollen.
Mein Aufruf, Meldet Euch, helft am Projekt mitzuwirken. Ich arbeite agile und SCRUM nah mit Jira, Confluence, Enterprise Architect, einen eigenen Game Server, Slack, Unity3D, Entitas, iClone, Maya, Houdini, Voxelfarm, WWISE, Azure, AWS und all die kleinen Tools.
Es lohnt sich mitzumachen! Lasst uns endlich ein Spiel von und für Gamer machen. Wir brauchen keine Kopie von einer Kopie mit besserer Grafik in Version 5/6/7! Wir brauchen umgesetzte einzigartige Ideen mit Innovation und nextgen Gameplay!
Ich halte Euch weiter auf dem Laufenden.
Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity von Simon Schmid
0 comments