Samstag, 24. November 2012

IC 1 Ende & IC 2 Start

IC 1


Am 06.10.2012 habe ich die Dokumentation meiner Arbeit mit der iodoom3 Engine abgegeben. Wer will, kann diese hier lesen: https://docs.google.com/open?id=0B-DgjzoFZxxwTFl4em53UnRwYnc



Abstrakt:
Mit der Veröffentlichung des Quellcodes von Doom3 ist in mir das Interesse daran geweckt worden. Seit der Veröffentlichung ist etwas Zeit vergangen und ein wenig hat sich an der Engine getan. Neuigkeiten, dass Entwickler nun auf diese Engine setzten, sind kaum zu sehen. Um sich mit der Engine auseinandersetzen zu können, ist mir die Idee gekommen, ein Entwicklerkit dafür zu erstellen. Die frei verfügbaren Daten der Demo und des SDKs von Doom3 sollten dabei helfen. Neben diversen Werkzeugen für die Entwickler sollte auch ein Beispiellevel, wie es in etwa im Startprojekt von UDK zu finden ist, enthalten sein. Durch diverse integrierte Beispiele ist es einfacher sich in die Engine bzw. die Entwicklung von Spielen mittels der Engine einzuarbeiten. Aufbauend auf Gespräche und Erfahrungen anderer, sowie diverser Hilfeseiten, konnte ich mich langsam in der Handhabung der Engine nach vorne tasten. Mit diesen Grundlagen stellte ich das Startpaket zusammen. Am Ende steht jetzt ein Repository mit plattformunabhängigen Assets und diversen Repositories mit Quellcode auf iodoom3-Basis, sowie einem speziellen Startpaket für Windows, in dem Assets und ausführbare Binärdateien integriert sind. Im Anhang dieser Dokumentation befinden sich unterschiedliche Webseiten, die mir besonders zum Verständnis der Engine und dessen Nutzung beigetragen haben.

Die Hauptarbeit lag weniger im C++ Code, sondern mehr im Testen und Probieren und Verstehen, wie und wo die Assets eingebaut werden müssen. Dabei half, dass die Script- und Beschreibungsdateien in normalem Textformat vorlagen. So konnte ich letztendlich auf ein demonstratives Level mit u.a. Daten der Demo-Version erstellen. Mit den Demo-Daten, dem Source-Code und einigen kleinen Anpassungen lässt sich recht gut mit der Engine arbeiten.
Mit Verbesserungen, wie Dante [https://github.com/omcfadde/dante] und Sikk [http://www.moddb.com/mods/sikkmod] hatte ich leider weniger Erfolg. Sikk zeigt deutlich, dass aus der Engine noch einiges herauszuholen ist. Der Code, der auf das SDK aufsetzt, ist mit im Paket. Dante bringt GL ES und GLSL ins Spiel, wobei noch ein paar Shader für Doom3 fehlen.
Die in iodoom3 vorhandenen Editoren funktionieren. Mehr oder weniger. Und nur unter Windows. Anfangs waren die Abstürze des Editors sehr schnell herbeigeführt. Scheinbar werden gewisse Daten und Definitionen einfach vorausgesetzt und wenn diese fehlen, ist Ärger vorprogrammiert.

Letztendlich war die Arbeit mit iodoom3, bzw. besser dhewm3, recht interessant. Ein Weiterführen, wie anfangs geplant, wird es jedoch nicht geben. Neben der Portierung der Editoren müssten diverse Codes und Grafiken neu erstellt werden, um nicht in eventuelle rechtliche Probleme wegen Nutzung derer aus dem Demo-Version zu kommen. Hinzu käme die Zusammenführung von Dante und dhewm3, und auch die Integration von Sikk wäre wünschenswert, was natürlich zu sehr viel Testen führen würde.
Zudem ist noch die Frage offen, wie sich wohl Doom3 BFG in diese ganze Suppe herein mischen ließe, wenn dann dessen Code da ist [https://twitter.com/ID_AA_Carmack/status/259369191369502720]. Wahrscheinlich ist auch deswegen gerade etwas weniger im Umkreis von iodoom3 los [http://www.phoronix.com/scan.php?page=news_item&px=MTIzMjU].

Mal sehen, was die Zukunft bringt…



IC 2

Für dieses Semester ist ein neuer Independent Coursework angesetzt. Der Plan lautet wie folgt:


=====> Independent Coursework 2 <=====

Titel:
Entwicklung eines Rennspiels nach dem Vorbild "Ballistics"

Typ:
Independent Production

Kurzbeschreibung:
Im Rennspiel Ballistics(1) aus dem Jahr 2001 steuert der Spieler sein Hoverbike mit Hochgeschwindigkeit durch Röhren und weicht dabei Hindernissen und Gegenspielern aus. Booster erhöhen die Geschwindigkeit. Cooler senken den erlittenen Schaden.

Im Independent Coursework 2 soll der Prototyp eines Klons des Spiels Ballistics erstellt werden.

Der Spieler steuert sein Gefährt durch ein Tunnelsystem. Anders als im Original sollen Abzweigungen enthalten sein. Nach einem kurzen Streckenabschnitt führen diese wieder zusammen. Dem Spieler stehen dadurch alternative Routen zur Verfügung, wodurch er unter anderem sich von seinen Mitspielern kurzzeitig entfernen oder unterschiedliche Power-Ups einsammeln bzw. nutzen kann.
Neben "Super Booster", "Flip-Score" und "Ice" sind weitere Power-Ups vorgesehen, wie zum Beispiel Gegner verlangsamen, Booster des Gegners entfernen oder "Ghosten", bei dem der Spieler kurzzeitig durch Hindernisse hindurch kann.
Die Steuerung ist mittels Maus-Tastatur-Kombination bzw. Gamepad angedacht. Haftet der Spieler an der Wand, so kann er sich seitwärts, vorwärts und rückwärts bewegen. Ist er losgelöst, so kann er sich zusätzlich um seine Achsen drehen. Der Einsatz des Boosters und des Coolers erfolgen auf Tastendruck.
Neben den bekannten Hindernissen, dem roten X, I, dem kleinen Bumper und diversen Wänden, sollen auch wandfüllende Hindernisse vorhanden sein, sodass der Spieler gezwungen ist seine Haftung zu lösen und durch das Loch des Hindernisses zu fliegen. Eine Fahrer-KI soll dem Prototyp nicht enthalten sein. Dafür soll aber ein weiterer Spieler über Split-Screen mitspielen können. Multiplayer über Netzwerk ist für einen späteren Zeitpunkt vorgesehen. Die Erstellung des Spiels soll mit Hilfe von Blender und der Blender Game Engine geschehen.
Die grafische Ausrichtung ist an das Spiel "Megagolf"(2) angelehnt.

Ablauf:
- Erstellung einer Beispielröhre und einem einfachen Gefährt
- Erstellung der Steuerung
- Testen von Geschwindigkeit und Kollisionen
- Einbau von Split-Screen
- Erstellung von Power-Ups
- Einbau von Netzwerk-Multiplayer
- Erstellung von Assets (verschiedene Fahrzeuge, Hindernisse,
Röhrenabschnitte, Power-Ups, Shader)
- Aufbau eines Levels
- Einbau eines HUD
- Einbau eines Menü
[extra: Portierung auf Android]

Zielplattformen: Windows, Linux, evtl. Android

Stichwörter:
Gaming, Prototyping, Blender, Blender Game Engine, Multiplayer

Abgabe:
Spiel + Dokumentation

Links:
(1) http://en.wikipedia.org/wiki/Ballistics_%28video_game%29
(2) http://blenderartists.org/forum/showthread.php?158258-Megagolf