#pragma once

class ThomasHilbert
{
    struct Person
    {
        Motivation;
        Games;
        Kontakt;
    };

    struct Projekte
    {
        Pläne;

        CCM;
        NESulator;
        Abutroid;
        UOSharp;
    };
    
    Downloads;
    Links;

} GameProgrammer;

Ein Blick in die Zukunft

Die folgenden Ideen wecken in mir den Reiz, mich auf mein nächstes Projekt zu stürzen. Dieses Projekt wird kein Bewerbungsprojekt in diesem Sinne sein. Es geht mir dabei viel mehr um die Erweiterung meines Horizonts und das Erproben neuer Ideen für Verbesserungen des Programmierprozesses.

An erster Stelle steht das Konzept eines Game-Frameworks, in welchem die Entities lediglich aus Komponenten zusammengesetzt werden. Ziel ist es, möglichst flache Klassen-Hierarchien zu verwenden und jegliche Gamelogik-bezogene Spezialisierung nicht durch Vererbung, sondern durch die Entwicklung wiederverwendbarer, frei kombinierbarer Komponenten zu implementieren.
Die Idee ist natürlich keinesfalls neu, aber in der Branche bisher nicht weit verbreitet, obwohl Pioniere große Produktivitäts- und Stabilitätgewinne damit verzeichnen.
Letztlich werde ich mir selbst ein Bild davon machen und mein nächstes Projekt auf Komponenten aufbauen.

Desweiteren wird es Zeit, eine große Lücke endlich zu schließen: in allen meinen bisherigen Projekten hatte ich bisher nicht die Gelegenheit, Erfahrung mit Scripting zu sammeln. Weder im eigentlichen Schreiben von Scripts, noch im Implementieren einer Scripting-Schnittstelle in die Host-Anwendung. UOSharp zählt nicht, da das Scripting dort durch die Verwendung des CSharpCodeProviders eher einer Art Late-Binding von Programmcode entspricht.
Diese Lücke muss geschlossen werden, also wird mein nächstes Projekt Lua, TCL und/oder Python supporten.

Tools sind wichtig. Bei der Entwicklung von CCM (meinem ersten Team-Projekt) wurde mir das mehr denn je bewusst, denn zum ersten Mal arbeiteten auch andere Leute an dem Spiel. Also mussten Wege geschaffen werden, Models in das Spiel zu integrieren, Game-Balancing-Werte anzupassen etc. Die Implementierung solcher Tools in CCM war immer ein ziemlicher Aufwand. Sie integrierten sich nicht sauber in das Projekt und waren schlecht am Leben zu erhalten, wenn sich wichtige Aspekte des Spiels änderten.
Also werde ich mir für das nächste Projekt schon in der Planungsphase Gedanken machen, welche Anforderungen ein guter Tool-Support an ein Spiele-Framework stellt, und wie ich diese Anforderungen möglichst produktiv erfüllen kann.

Das "Produkt"

Diese Ideen und manch andere in einem Projekt zu vereinen wird eine interessante Herausforderung. Ziemlich schnell kommt mir da die Idee eines WYSIWYG-Editors, in dem man das Spiel entwickelt während man es spielt. So gesehn in den Editoren von UNITY und CryEngine. DAS wäre ein interessantes Projekt.