So, ich war in letzter Zeit sehr beschäftigt und konnte daher nicht viel an der qEngine arbeiten, von der ich Anfang letzten Jahres berichtet hatte. Demnächst ändert sich die verfügbare Zeit wieder zum positiven.
Ich habe vor allem meine Tasks erarbeitet und die Versionsplanung strukturiert. Implementiert habe ich in letzter Zeit unter anderem folgendes (unsortiert):
* Assimp zum Model Loading
* Hierarchischer Profiler (Laufzeitstatistiken, Profiling von Variablenwerten)
* View Frustum Culling
* Umstellung des Projektes und der Library auf CMake, Nutzung von Hunter zum Package Management
* Weitere Parametrisierung aller grafischen Features
* Input-System mit Support Tastatur, Maus und Gamepad
* Abstraktion Window-Framework und konkrete GLFW-Implementierung
* Debug Rendering
* Depth Prepass
* Umstellung des kompletten Projektes auf ein Eventbus-basiertes System
* 3rd Person Kamera-Controller
* Timersystem (framebasierter Countdown, Stopwatch, Intervall)
* Reimplementierung Logger mit verschiedenen Sinks (aktuell Filesystem + Standard Console Output)
* Transformationsmatrix-Stack
In Arbeit sind aktuell folgende Features:
* Umstellung ECS-Systeme zur Filterung der relevanten Entities mit bestimmten Komponenten inklusive entsprechenden Triggern, um die Liste zur Laufzeit zu verändern
* Überarbeitung AssetManager inklusive Asset Reloading
* Szenentransitionen
* Implementierung spielbarer Charakter und Follow Target-Kamera
* Point Light Normal Mapping, Specular Mapping
* Spotlichtquellen
* Lichteffekte (Flackern etc.)
* Entity-Transformationsbaum
* Optimierung Shadow Mapping (Berechnung Shadow Frustum Boundaries und kaskadierende Shadow Maps)
Mit diesen Features wird Version 0.2 abgeschlossen.
Roadmap für 0.3 (v. A. Rendering):
* Renderer refactoren, v. A. intelligentes Batching / Instancing
* Heightmap Chunks, Culling, Splatmaps
* Kamerapfade
* GUI-System, Text Rendering
* Callback / Task-System
* Game-Statusmaschine
* Renderpasses und Postprocessing
0.4 wird sich vor allem auf Architektur-Aspekte berufen, unter anderem Nutzung von Handles (z. B. für Assets) statt Zeigern und auch das Thema Physik angehen. Hier werden ansonsten auch noch weitere Grafikfeatures implementiert, nachdem in 0.3 die Grundlage gelegt wurde. Weiterhin werde ich hier die spatiale Unterteilung der Szenen durchführen und mich um das Thema Forward+ Rendering kümmern.
0.5 wird neben Bugfixing vor allem die Implementierung von Lua und entsprechenden Triggern behandeln. Weiterhin werde ich verstärkt Fokus auf den Editor legen. Dieser wird in Qt geschrieben.