Game Engine

oder: Wie ich (mal wieder) an Windows verzweifelt bin

Autor: Mika Herrmann

PixelSpace nutzt eine eigene Engine, die sich (kreativerweise) PixelEngine nennt.

Warum eine eigene Engine?

Keiner von uns hat Erfahrung in einer bekannten Game Engine. Und keiner von uns hatte Zeit (oder Lust), um C# für das einsteigerfreundlichere Unity zu lernen. Ich habe allerdings schon Erfahrung mit SDL und OpenGL und habe mich dann dafür entschieden, eine eigene Engine zu schreiben.

Aufbau der Engine

Die Engine ist in mehrere Module aufgeteilt (siehe rechts). Diese basieren auf früheren Projekten von mir, die ich aufgegriffen und stark weiterentwickelt habe. Die Module abstrahieren verschiedene Datentypen (Low-Level und High-Level), sowie Funktionen von Betriebssystem und OpenGL. Außerdem definiert sie mehrere eigene Dateiformate für Modelle, Shader und Einstellungen.

Zusätzliche Programme

Um die eigenen Dateiformate für Modelle und Einstellungen erstellen und bearbeiten zu können, habe ich zwei externe Programme geschrieben.

Die Module im Detail

Modul Verwendung Modul/Library Verwendung
High-Level Low-Level/OS-Level
Window
  • Fenstermanagement (Verbindung mit OS)
  • OpenGL Verbindung
  • Input Grabbing (Maus-/Tastatureingaben lesen)
SDL
  • Low-Level Cross-Platform Window/Input/Sound-Library
  • Kommuniziert mit OS und erstellt OpenGL Kontext
Mixer
  • Musik mit Queue
  • 16 Soundkanäle, einzeln ansteuerbar
  • Zusammengemischt zu einem Masterkanal (32 Bit, 48 kHz)
Buffer
  • Low-Level Wrapper um OpenGL-Buffer
  • Daten nicht änderbar
I/O
  • Logging
  • Lesen und Kompilieren von Shadern
  • Lesen/Schreiben von Modell- und Konfigurationsdaten
Shader
  • Low-Level Wrapper um OpenGL Shader
  • High-Level API für Uniform Variables
Model
  • Verwaltung von Modellen
  • Rendern aus der Perspektive einer Kamera
OpenGL
PixelRenderer
  • Früheres Projekt
  • 2D Software Renderer
  • Rendert simple Formen, Bilder und Text
Betriebssystem
Zurück