Content Pipeline Ersatz

Schon länger habe ich hier im Blog nichts mehr geschrieben und das hat selbstverständlich auch einen Grund: Ich bin Vater von Zwillingen geworden und hatte die letzten Wochen und Monate ein ziemlich turbulente Zeit. Die beiden haben sich außerplanmäßig dazu entschlossen gut 3 Monate zu früh zur Welt zu kommen. Mittlerweile haben sich die beiden aber sehr gut gemacht und sind auch schon seit einigen Wochen zu Hause. Dies ist natürlich eine Erleichterung (Fahrten ins Krankenhaus fallen weg), aber natürlich auch eine ganz andere Herausforderung und ziemlich streßig. Daher bleibt für den Blog nicht mehr so viel Zeit.

Trotzdem – und gerade weil hier täglich mehrere hundert Besucher „landen“ – möchte ich diesen Blog nicht „versauern“ lassen.

In den letzten Tagen und Wochen habe ich mich hauptsächlich mit zwei Themen beschäftigt: ANX und C++/DirectX. Bei ersterem habe ich einen Ersatz für die Content Pipeline von XNA entwickelt und bei zweiterem habe ich mich mit ähnlichen Themen beschäftigt. Dabei habe ich etwas interessantes entdeckt…

XNA’s Content Pipeline ist eine tolle Sache. Vorne werden Dateien reingeschmissen und hinten kommen Assets (XNB) raus, die von XNA geladen und verwendet werden können. Dies kann durch den Entwickler (auch wenn dies deutlich seltener gemacht wird als von Microsoft geplant) durch eigene Importer, Processoren, Reader und Writer erweitert werden. Ein sehr flexibles System.

Die Content Pipeline setzt dabei auf MSBuild. Das ist das Build-Tool von Microsoft und hat ein paar Erweiterungen spendiert bekommen um aus einem Content-Projekt XNB-Dateien zu machen.

In der Zwischenzeit wird – mit der Einführung von Windows 8 – XNA immer mehr von DirectX/C++ verdrängt oder gar ersetzt. Leider gibt es keinen vollwertigen Ersatz für die Content Pipeline, aber zumindest etwas, daß einem das Leben leichter macht. Visual Studio verwendet für alle Projekte MSBuild als Build-Tool. Dies gilt also auch für C++. Wir haben dabei die Möglichkeit eigene Aktionen (sei es eine MSBuild-Extension oder nur ein CLI-Kommando) zu starten. Damit können wir also eigene Assets „bearbeiten“. Was genau gemacht wird, kann bequem über Visual Studio eingestellt werden. Dateien können zum Projekt hinzugefügt werden und Custom-Build-Actions können eingestellt werden.

Was machen wir also jetzt genau? Wir erzeugen uns kleine Tools die folgendes machen:

  • Datei öffnen und lesen
  • Dateiinhalt verarbeiten / übersetzten
  • Datei in einem für das Spiel verwendbare Format speichern

Herzlichen Glückwunsch! Das ist genau das, was die Content Pipeline mit dem Importer, Processor und Writer macht. Kein Hexenwerk also.

Das Laden, welches die Content Pipeline mittels des Readers vornimmt ist auch nicht sonderlich schwer. Wir müssen lediglich die Binärdatei die wir im letzten Punkt gespeichert haben wieder in den Arbeitsspeicher einlesen. Das ist nicht weiter schwer, ich werde da sicherlich zukünftig und bei Bedarf noch was auf indiedev zu schreiben (Tutorial-Spoiler?!?!).

Für zwei der wichtigsten Formate hat Microsoft in Visual Studio 2012 – etwas versteckt – bereits eine tolle Sache eingebaut. FBX-Dateien (3D-Format, welches von den meisten 3D-Programmen exportiert werden kann) können durch eine Extension zu MESH-Dateien kompiliert werden und gängige Bildformate können zu DDS-Texturen konvertiert werden. Wie dies geht, habe ich hier beschrieben.

Wie ihr seht sieht die Welt auf den ersten Blick recht düster aus, aber eigentlich ist die Welt nur anders geworden. Die Content Pipeline ist nach wie vor eine tolle Sache, aber auch ohne kann man sich relativ zügig eine Toolchain aufbauen und bequem Assets „kompilieren“…

Advertisements

Veröffentlicht am 19.12.2012 in C/C++, DirectX, Grundlagen, Grundlagen, Tutorial, Windows 8 und mit , , , , , , , getaggt. Setze ein Lesezeichen auf den Permalink. 2 Kommentare.

  1. vinzthesecond

    Yeah!

    Ich wünsche dir alles Gute und viel Spass beim regelmäßigem Windelwechseln, Pupse aus den kleinen Bäuchlein massieren und nachts halb 3 Spaziergänge mit den Kleinen zu unternehmen 😉

    Ich bin selber seit 2 Wochen Vater einer wunderbaren Tochter und habe großen Respekt, dass du nebenbei noch schaffst zu bloggen!

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: