EuaconLabs Blogs Tools & Runtime Systems - Untrennbar?
Tools & Runtime Systems - Untrennbar? 11.07.2014 - 22:43 0

Wie im letzten Blogpost angekündigt wende ich immer weiter den Gameplay Foundation Systems (d.h. GameObjects, Szenen-Graphen, etc.) zu und versuche, diese möglichst einfach, wenn auch flexibel zu halten. Dafür setze ich auf sogenannte Components. Das sind isolierte Code-Brüchstücke, die innerhalb eines Objektes bestehen, und nur eine ganz klar bestimmte Aufgabe erfüllen. Ein klassisches Beispiel für derlei Components ist zum Beispiel ein MeshInstance- (im 2D-Bereich: Sprite-) Component, d.h. ein Component, welcher einen Mesh oder ein Sprite anzeigt, wenn das Objekt dazu aufgefordert wird, sich selbst zu zeichnen.

 

Doch vor zwei Tagen bemerkte ich, dass es sinnlos ist, einfach so herumzubasteln: Diese Gameplay-Foundation-Systeme (von nun an GFS genannt) sind extrem komplex und es ist daher ziemlich aufwendig, Beispiele zum Testen aufzusetzen. Aus diesem Grund werde ich zeitgleich zu den GFS auch an dem World-Editor arbeiten. Dieser soll zum einen Beispiel-Fälle liefern können, zum anderen zeigt sich dann aber auch viel schneller, was für Funktionen benötigt werden, sodass ich diese dann zielgerichtet implementieren kann. Eine frühe Version hiervon könnt ihr in Abbildung (1) sehen.

Abbildung (1)Der Editor selbst basiert auf wxWidgets und ist daher auf allen gängigen Plattformen kompilierbar. Ich habe den Editor weitestgehend von der Engine entkoppelt, was ich auch im weiteren Verlauf des Projektes beibehalten werde, wo es nur geht. Oben links, sieht man die Projekt-Struktur. Wählt man hier eine Ressource aus bekommt man diese (sofern sie ein unterstütztes Dateiformat besitzt) als Vorschau im Fenster untendran angezeigt. In Mitte wird später eine Vorschau der Spielwelt zu sehen sein, ganz rechts findet man eine Tabelle mit den Eigenschaften des jeweiligen Objektes. Diese Eigenschaften sind von Engine insofern entkoppelt, als dass sie nicht festgeschrieben im Editor existieren, sondern zur Laufzeit aus einem "Schema" geladen werden. Ein Schema ist eine XML-Datei, die einem bestimmten Aufbau folgt, um die Attribute eines Objektes zu beschreiben. Die Attribute können verschiedene Typen besitzen: Primitive Datentypen, wie etwa Booleans, Integer, Unsigned Integer, oder Floats (Intensity), fortgeschrittenere Datentypen wie 3-dimensionale Vektoren (Position), oder Farben (Diffuse Color, Specular Color), oder aber Nutzer-definierte Enumerationen (Type) werden unterstützt. In der Abbildung wurde ein Muster-Schema für eine Lichtquelle benutzt.

Man könnte mir nun unterstellen, dass die zeitgleiche Entwicklung des Editors den Rahmen sprengen würde. Allerdings erhoffe ich mir, dass eher ein gegenteiliger Effekt erzeugt wird. Der Editor erlaubt es mir relativ unkompliziert neue Funktionen in diesen sonst eher heiklen Bereichen zu testen. Das - so hoffe ich - erspart mir eine Unmenge Debugging-Arbeit, und sobald ein gewisser Funktions-Umfang vorhanden ist, können auch andere fortgeschrittenere Teilsysteme der Engine, wie etwa Szenen-Graphen, etc. einfacher umgesetzt werden.

 

Ich hoffe es hat euch gefallen, einen weiteren Einblick in die Entwicklung zu bekommen. Wie schon zuvor könnt ihr mich gerne bei Fragen, Anregungen, oder Kritik kontaktiere. Ich stehen für Fragen jederzeit offen.

 

Liebe Grüße,

~ EuadeLuxe / EuaconLabs ~


Aktualisiert: 12.07.2014 - 15:18
Grund: