The Matter of the GUI System

 von Kilian Reisenegger Bereits am Anfang des Projekts war für uns klar, dass wir das GUI-System für unser Spiel nicht selbst entwickeln, sondern eine bereits bestehende Implementierung verwenden möchten. Unerfahren wie wir waren verließen wir uns dabei auf die Aussage unseres Lektors, dass libRocket die beste Wahl im Sektor der frei verfügbaren Bibliotheken sei. Doch bereits die Integrierung der Bibliothek in unsere Engine machte meinen Kollegen einigen Ärger. Damals wusste…

von Kilian Reisenegger

Bereits am Anfang des Projekts war für uns klar, dass wir das GUI-System für unser Spiel nicht selbst entwickeln, sondern eine bereits bestehende Implementierung verwenden möchten. Unerfahren wie wir waren verließen wir uns dabei auf die Aussage unseres Lektors, dass libRocket die beste Wahl im Sektor der frei verfügbaren Bibliotheken sei. Doch bereits die Integrierung der Bibliothek in unsere Engine machte meinen Kollegen einigen Ärger. Damals wusste ich nicht, dass auch ich noch in diesen Genuss kommen würde. Im Laufe der Implementierung stellte sich jedoch heraus, dass die Bibliothek nicht ganz unseren Erwartungen entsprach und trotz der einfachen Layouterstellung per HTML und CSS einige Probleme seitens der Implementierung bereitete (Alpha bei Bildern, Skalierung, Animationen, etc.).

CEGUI

Meine Unzufriedenheit und den Implementierungsärger zum Anlass nehmend, machte ich mich also auf die Suche nach Alternativen und stieß letztendlich auf die ebenfalls freie Bibliothek CEGUI. Nach eingehenden Recherchen und einer Spiel-unabhängigen Testimplementierung zeigte sich schnell, dass die umfangreiche Bibliothek all unsere Anforderungen erfüllte. Darüber hinaus gibt es einen eigens entwickelten Layouteditor, mit dem man die verschiedenen GUI-Layouts erstellen und bearbeiten kann, sowie eine lebhafte Community und ein motiviertes Entwicklerteam, das stetig an der Bibliothek arbeitet. Der auf Events basierende Aufbau der Bibliothek ermöglicht eine bessere Strukturierung der Implementierung, sowie die einfache Integration spezieller Anforderungen.