Einleitung
Ein erstes Bild entstand schon für XPlore: der prozedurale Planet in seiner ersten sehr rohen Form, dargestellt mit Features aus DirectX9. Da ich aber keine Lust habe, für jede weitere Machbarkeitsüberprüfung immer wieder die selben Projektionen und Matrizen zu erstellen, habe ich mich entschieden, als erstes mal eine grundlegende Engine für alles zu schreiben, was mit XPlore zu tun hat
Basis der Engine
Die Engine basiert auf XNA, einem kostenlosen Game-Framework von Microsoft für die Xbox und PC. Geschrieben in C# ist die Engine bisher noch sehr limitiert. Durch den Einsatz der SlimDX-Library soll die Engine künftig aber für alle aktuellen und kommenden DirectX-Versionen anpassbar sein. Die Engine ist natürlich mehrheitlich auf Spiele ausgelegt, die im Weltraum stattfinden oder Fliegen beinhalten.
Was sie bisher beinhaltet und kann (v.0.1)
- Component Manager der alle anderen Komponenten initialisiert und überwacht und bei Fehlern das Schliessen der Applikation veranlasst
- GameState Manager zur Überwachung des Spielstandes
- Camera Manager der aktuell eine First-Person- und Third-Person-Camera zu jedem physischen Objekt automatisch erstellen kann und Methoden zur Verfügung stellt um benutzerdefinierte Kameras zu erstellen
- Shader Manager zur Verwaltung von einer unbegrenzten Anzahl an Shader-Files bisher implementierte Shader: Simples Point-Light (Omnidirectional Light), simpler Bloom post-processing Shader.
- Physics Manager der bisher nur Gravitation berechnet, dafür aber 4 verschiedene Modi unterstützt: Single-Point Gravity (bei einer einzigen Gravitationsquelle), Multi-Point-Gravity (kann komplexe Gravitationsverhältnisse simulieren), Surface-Gravity (ideal für Flug über flache Oberflächen - Flugsimulator-Style) und No-Gravity (für Arcade-Games ohne Gravitation). Kann Sterne auf Basis aktueller Forchungsdaten mit korrekten Masse/Spektralklassen-Verhälttn issen berechnen.
- Planet Manager welcher in der Lage ist, zufällige erdähnliche Planeten darzustellen
- Audio Manager kann Sounds spielen und Musikplaylisten - wahlweise als Einzeltitel-Loop oder Playlist-Loop.
- Logging Component die wahlweise alles loggt oder aber nur Fehler. Damit es performant bleibt, wird das Log jewels erst bei Ende der Application in ein File geschrieben.
- Model Manager der Modelle lädt, transformiert, skaliert und an die Worldmatrix anpasst
- FPS-Counter der die aktuellen und die durchschnittlichen FPS anzeigt.
- Sprite Manager zum Anzeigen von Texturen auf der Projektionsfläche (z.B. GUI / HUD)
- FontManager zum Anzeigen von Text auf der Projektionsfläche (z.B. GUI / HUD)
- XML Manager der XML-Files korrekt durch die XNA-Contentpipeline verarbeitet (Fremd-Klasse des XNAMag)
Ausblick auf v0.2
- Darstellung von Sternen durch Omni-Directional Lights mit Crespular Rays Shader unter Einbehaltung der Spektrallklasse des Sterns (korrekte Licht- und Farbverhältnisse)
- Media Manager zum Anzeigen von Videos auf Surfaces (z.B. um auf grossen Schiffen Fenstereinblicke zu realisieren) und generell um Cutscenes anzuzeigen
- Komplettierung der Simulation stellarer Systeme
- Erste Tech-Demo: Steuerung eines einfachen Schiffes in einem stellaren System, welches Experimentieren mit der Gravitation ermöglicht