Vor einiger Zeit hatte ich mit DevUrandom ein Spezialinterview zu 2.1 geführt. 2.1 ist so gut wie fertig, es ist also an der Zeit für ein weiteres Spezialinterview. Dieses Mal habe ich mit EvilGuru und Elio über das neue Widget-System gesprochen.
Kreuvf: Zuallererst: Was ist ein Widget und was macht ein Widget-System?
EvilGuru: Ein Widget ist etwas, mit dem der Spieler interagiert. Es könnte sich um einen Knopf, einen Schieber, Farbwähler oder eine Textbox handeln. Ein Widget-System ist für die Darstellung und Verwaltung von Widgets auf dem Bildschirm zuständig.
Kreuvf: Was sind die Hauptvorteile des neuen Widget-Systems, betawidget?
EvilGuru: Betawidget hat viele Vorteile gegenüber dem derzeitigen Widget-System, für Entwickler als auch für Benutzer.
Vorteile für Benutzer:
- ein ansehnlicheres und helleres Interface;
- die Fähigkeit sich an die Bildschirmauflösung anzupassen, was es einfacher macht Warzone mit höheren Auflösungen (auch Breitbild) zu spielen;
- deutlich einfacher anpassbar als das jetzige System.
Die Hauptmotivation hinter der Entwicklung von betawidget war es jedoch es für uns (die Entwickler) einfacher zu machen dem Benutzerinterface etwas hinzuzufügen und es zu verändern. Dies ist besonders schwierig mit dem jetzigen Widget-System zu erreichen, wo selbst etwas so Einfaches wie das Hinzufügen eines Knopfes Unmengen an Code braucht.
Vorteile für Entwickler und Modder:
- deutlich vereinfachter Umgang damit;
- Möglichkeit das Benutzerinterface zum einen aus Skripten aufzubauen und zum anderen mit Skripten zu verändern;
- weniger Code für die selbe Aufgabe benötigt als mit dem jetzigen Widget-System, was auch weniger Fehler bedeutet
Kreuvf: Wird das neue Widget-System auf Warzone 2100 beschränkt sein oder plant ihr es auch für andere Anwendungen anzubieten?
Elio: Betawidget hat absichtlich einen Qt-Unterbau, der die Verwendung in Qt-Anwendungen wie Warzone Studio erlaubt. Warzone Studio ist eine eierlegende Wollmilchsau, die jeden Aspekt des Moddings abdeckt:
- Scripting
- Bearbeitung des Technologiebaumes
- Kartenerstellung
- Bearbeitung des Interface
EvilGuru: Tatsächlich findet der Großteil der Entwicklung in einem externen Simulator statt. Andere Warzone-verwandte Anwendungen wie Karteneditoren und Modeditoren können Teile davon für ihre Interfaces benutzen. Selbstverständlich sind viele dieser Anwendungen noch am Reißbrett, aber es ist schön sich alle Möglichkeiten offen zu halten.
Da betawidget wie Warzone Open Source ist, gibt es nichts, das andere davon abhalten könnte es zu nehmen und in ihre eigenen Anwendungen einzubauen. Es ist jedoch wichtig zu verdeutlichen, dass, so flexibel betawidget auch sein möge, es als Ersatz für Warzones derzeitiges Widget-System konzipiert wurde und nicht als Mehrzweck-Werkzeugkasten.
Kreuvf: Wie kann die GUI mit dem neuen Widget-System verändert werden?
Elio: Die komplette GUI ist aus Lua-Skripten erstellt. Dies erlaubt Moddern eine GUI mitzuliefern ohne den Quelltext anfassen zu müssen. Die klassenmäßige Architektur ist einfach zu verstehen und die API unterstützt auch Animationen. Deswegen wird die neue GUI dynamischer und nutzerfreundlicher sein.
EvilGuru: Es wird möglich sein die UI auf eine von zwei Arten zu ändern. Zuerst durch die Verwendung eines Lua-Skripts zum fliegenden Ändern eines bestehenden Interface. Ein Modentwickler könnte also ein Skript verwenden, um das Bild/Logo im Hauptmenü zu verändern. Dies sähe dann in etwa so aus:
widgetGetById(„warzoneLogo“):setImage(„myOwnLogo.svg“).
Obwohl dies ein triviales Beispiel ist (ein Modder könnte das derzeitige Logo einfach mit einer Datei im Mod, die den gleichen Namen trägt, überschreiben), zeigt es, was möglich ist.
Zweitens, da geplant ist einen großen Anteil der UI in Lua zu implementieren im Gegensatz zu kompiliertem C-Code wird es für Modder möglich einfach Skriptdateien zu öffnen und zu bearbeiten (auf die gleiche Art und Weise wie sie es jetzt für Einheiten/Gebäude-Eigenschaften tun würden). Durch das Ausliefern des Mods mit der veränderten Skriptdatei haben sie die Möglichkeit die UI auf eine viel fundamentalere Art zu verändern. Daher wird es nur ein wenig schwerer das Interface zu verändern als Eigenschaften (von Einheiten, Waffen, Forschungsthemen) zu verändern.
Aber nicht nur die Modding-Community wird von einer zum Großteil in Lua geschriebenen UI profitieren auch Entwickler profitieren. Das liegt daran, dass es sehr viel einfacher ist Lua-Code (high-level) zu schreiben und zu warten als C-Code (low-level).
Kreuvf: Was sind die Vorteile skalierbarer Vektorgrafiken (SVG) und gibt es schon Bilder der neuen GUI?
Elio: Es gibt da einige Bilder der neuen GUI.
Wie du sehen kannst ist die Grundfarbe der neuen GUI mehr bläulich-gräulich, das gibt dem Spiel einen maßvollen und eleganten Look und bringt das Gameplay in den Vordergrund. Es gibt auch weitere Skizzen möglicher neuer GUI-Elemente.
Zusätzlich dazu sieht es unter jeder Auflösung scharf und schön aus, weil die GUI sich anpasst. Du kannst also eine wundervolle, sexy GUI erwarten, egal, ob es unter 640×480 (4:3) oder 1280×720 (16:9) ist. Mit den alten Rastergrafiken können wir dies nicht tun, weshalb wir skalierbare Vektorgrafiken brauchen. Um diese zu erhalten, müssen wir die bestehenden Rastergrafiken von Hand in skalierbare Vektorgrafiken „umwandeln“ und die meiste Arbeit habe ich bereits erledigt.
EvilGuru: Derzeit wird die SVG-Unterstützung durch die Cairo-Vektorgrafikbibliothek gestellt, die auch in Firefox 3 verwendet wird. Dank Elio hauptsächlich sind viele der Symbole im Spiel bereits konvertiert. SVG ist ein Vektorgrafikformat, das gute Unterstützung durch Cairo und andere Anwendungen Dritter erfährt. (Inkscape und Adobe Illustrator sind wohl die bekanntesten.) Auch das wird wieder der Anpassbarkeit helfen da jeder die Symbole öffnen und ändern kann auf eine Art und Weise, die mit Bitmaps einfach nicht möglich ist. Dies könnte es Moddern ermöglichen hochqualitative Symbolpakete zu erstellen ohne von 0 anfangen zu müssen oder bestehende Symbole pixelweise zu verändern.
Dieses Interview ist eine Übersetzung des englischen Originals.
Kommentare zu diesem Artikel abgeben (benötigt Boardaccount)