Inhalt:
Ressourcen:
Xemio GameLibrary
UFO.zip
1. Projekt erstellen
Zuerst brauchen wir ein WinForms Projekt bzw. eine Form, die uns als Darstellungsobjekt dient. XGL kann prinzipiell auch in Panels oder andere Controls rendern, allerdings sollte ein Spiel im Normalfall in einer Form laufen, vorausgesetzt man arbeitet nicht gerade an einem Mapeditor.
Zusätzlich fügen wir die beiden sich im Zip-Ordner befindenen DLLs als Verweis hinzu.
2. XGL initialisieren
XGL bietet ab v0.1.9 eine Vereinfachung der Komponenteninitialisierung, auf die ich in diesem Tutorial zurückgreifen werde. Die automatisierte Initialisierung fügt Komponenten wie Grafikausgabe, Maus- und Tastatureingaben und Scene Management hinzu und sofern weitere Komponenten benötigt werden sollten, können diese manuell hinzugefügt werden.
Um XGL also für unsere Form zu initialisieren, benötigen wir folgende 2 Aufrufe:
Die Größe des Backbuffers muss dabei nicht zwangsläufig der Größe der Form entsprechen, sollte unsere Form z.B. 800x600 sein und der Backbuffer mit 400x300 initialisiert werden, entsteht ein aus Emulatoren bekannter x2-Effekt, der vor allem für auf Pixel Art basierende Indiegames äußerst praktisch ist.
Beim Starten unseres Projektes sollten wir vorerst einen komplett schwarzen Bildschirm zu Gesicht bekommen, der über GDI auf unsere Form gezeichnet wird.
3. Gamescenes und unser UFO
XGL bietet von sich aus direkten Support für Gamescenes, die ähnlich aufgebaut sind wie die aus XNA bekannte
Nachdem mithilfe des
Um unser UFO also darstellen zu können, müssen wir zuerst die bereitgestellte UFO.png Datei laden und in einer Variable speichern. XGL bietet dafür die
Anschließend implementieren wir noch den Render-Aufruf, der unser UFO an einer bestimmten Position darstellt:
Außerdem wollen wir, dass sich unser UFO langsam diagonal in Bewegung setzt. Die
Sollten wir unser Projekt jetzt starten, fällt sicherlich auf, dass sich an unserem schwarzen Bildschirm noch nicht viel verändert hat. Das liegt daran, dass wir unsere Scene zwar implementiert haben, der SceneManager aber noch keine Informationen erhalten hat, dass er unsere Scene überhaupt darstellen und updaten soll. Wir erweitern also unseren Code in der
Starten wir jetzt unser Projekt, sollten wir ein UFO an der Position 10x10 auf unserem Bildschirm sehen, das sich langsam diagonal bewegt.
Downloads:
Examples.VisualBasic.zip
- Projekt erstellen
- XGL initialisieren
- Gamescenes und unser UFO
Ressourcen:
Xemio GameLibrary
UFO.zip
1. Projekt erstellen
Zuerst brauchen wir ein WinForms Projekt bzw. eine Form, die uns als Darstellungsobjekt dient. XGL kann prinzipiell auch in Panels oder andere Controls rendern, allerdings sollte ein Spiel im Normalfall in einer Form laufen, vorausgesetzt man arbeitet nicht gerade an einem Mapeditor.
Zusätzlich fügen wir die beiden sich im Zip-Ordner befindenen DLLs als Verweis hinzu.
2. XGL initialisieren
XGL bietet ab v0.1.9 eine Vereinfachung der Komponenteninitialisierung, auf die ich in diesem Tutorial zurückgreifen werde. Die automatisierte Initialisierung fügt Komponenten wie Grafikausgabe, Maus- und Tastatureingaben und Scene Management hinzu und sofern weitere Komponenten benötigt werden sollten, können diese manuell hinzugefügt werden.
Um XGL also für unsere Form zu initialisieren, benötigen wir folgende 2 Aufrufe:
XGL.Initialize
nimmt dabei einen IGraphicsInitializer
entgegen, der sich um die Initialisierung des GraphicsProviders kümmert. Die Run
-Methode nimmt die Größe des Backbuffers (in dem Fall 400x300) und die Framerate entgegen und initialisiert XGL für ein entsprechendes Handle, in unserem Fall die Form.Die Größe des Backbuffers muss dabei nicht zwangsläufig der Größe der Form entsprechen, sollte unsere Form z.B. 800x600 sein und der Backbuffer mit 400x300 initialisiert werden, entsteht ein aus Emulatoren bekannter x2-Effekt, der vor allem für auf Pixel Art basierende Indiegames äußerst praktisch ist.
Beim Starten unseres Projektes sollten wir vorerst einen komplett schwarzen Bildschirm zu Gesicht bekommen, der über GDI auf unsere Form gezeichnet wird.
3. Gamescenes und unser UFO
XGL bietet von sich aus direkten Support für Gamescenes, die ähnlich aufgebaut sind wie die aus XNA bekannte
Game
-Klasse. Um also eine Gamescene zu unserem Spiel hinzuzufügen, erstellen wir eine neue Klasse und beerben die bereitgestellte Xemio.GameLibrary.Game.Scene
-Klasse:Nachdem mithilfe des
Overrides
-Keywords die Methoden für LoadContent
, Tick
und Render
überschrieben wurden sollte unsere UfoScene-Klasse folgendermaßen aussehen:Um unser UFO also darstellen zu können, müssen wir zuerst die bereitgestellte UFO.png Datei laden und in einer Variable speichern. XGL bietet dafür die
ITextureFactory
-Schnittstelle an, die für das jeweilige Rendering-System Texturen erstellt und verwaltet. Um unsere Grafik zu laden, verwenden wir die CreateTexture
-Methode der ITextureFactory
:Anschließend implementieren wir noch den Render-Aufruf, der unser UFO an einer bestimmten Position darstellt:
Außerdem wollen wir, dass sich unser UFO langsam diagonal in Bewegung setzt. Die
Vector2
-Implementierung in XGL unterstützt alle Standard-Operatoren, um also die Position zu erhöhen müssen wir lediglich einen weiteren Vector2
dazuaddieren:Sollten wir unser Projekt jetzt starten, fällt sicherlich auf, dass sich an unserem schwarzen Bildschirm noch nicht viel verändert hat. Das liegt daran, dass wir unsere Scene zwar implementiert haben, der SceneManager aber noch keine Informationen erhalten hat, dass er unsere Scene überhaupt darstellen und updaten soll. Wir erweitern also unseren Code in der
Form1_Load
-Methode um eine weitere Zeile:Starten wir jetzt unser Projekt, sollten wir ein UFO an der Position 10x10 auf unserem Bildschirm sehen, das sich langsam diagonal bewegt.
Downloads:
Examples.VisualBasic.zip
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Krissel095“ ()