Browserspielentwicklung: Teil 2b - Technisches Design
Um das Interesse der Community an neuen Konzepten und Einblicken in die Realisierung von Browserspielen zu stillen, möchte das Spacetale-Entwicklerteam in fünf Erfahrungsberichten das Vorgehen von der ersten Idee bis zum fertigen Spiel vorstellen. Der vorliegende zweite Artikel aus dem Teilbereich Spieldesign stellt das Vorgehen bei der Ableitung der theoretischen Gedanken in ein Technisches Design vor. Einen weiteren Einblick in die Entwicklung von Spacetale gewährte die Präsentation "Echtzeit in Browserspielen". Die Besucher der Browsergame Conference 2006 wählten diese zum besten Vortrag der Veranstaltung.
Unten stehende Tabelle stellt Struktur und Inhalt dieser Serie im Überblick dar. Zunächst muss ein Projekt gut geplant werden. In dieser ersten Phase, die der Einleitungsartikel der Serie beschreibt, werden die Weichen für die zukünftige Arbeit gestellt.
Ohne eine ansprechend verpackte, begeisternde Spielstruktur und ohne eine flüssig laufende technische Umsetzung lockt man allerdings heutzutage keine Spieler mehr hinter dem Ofen hervor. Der vorangegangene Artikel hat die Theorien des Spieldesigns am Beispiel von Spacetale erläutert. Dieser Artikel beschäftigt sich mit der Überführung jener Grundgedanken in das Technische Design.
Die dritte Phase der Entwicklung – die Implementierung – beinhaltet die wesentlichen Schritte zur Realisierung des in Phase 2 erstellten Designkonzepts. Wenn das Spiel fertiggestellt ist, muss dafür gesorgt werden, dass es auch gespielt werden kann und dass die Spieler ihre aufgewendete Zeit bestmöglich genießen. Die vierte und fünfte Phase beschreiben deshalb, worauf geachtet werden muss, wenn ein Spiel schließlich online geht.
Teil 2b – Technisches Design
"Das Spiel ist das einzige, was Männer wirklich ernst nehmen. Deshalb sind Spielregeln älter als alle Gesetze der Welt." (http://www.zitate.de)
Technisches Design – Bauplan für die Programmierer
Nachdem nun das Spieldesign feststeht, könnte man erneut der Versuchung verfallen, voreilig mit PHP und MySQL loszulegen. Doch auch jetzt ist es sinnvoller, sich zunächst ein paar Gedanken über das Wie zu machen.
Wie bei jeder Softwareentwicklung sollte die Arbeit am Papier und nicht am Rechner beginnen. Neben der Wahl der zu verwendenden Technologien muss man sich überlegen wie man sein Spiel am besten umsetzt. Grundsätzlich sollte das Technische Design-Dokument für alle Features aus dem Design- Dokument ein Realisierungskonzept enthalten.
Anforderungen – Ein Browserspiel ist auch nur eine Software
Die Anforderungen an die Technologie eines Browserspiels sind grundsätzlich dieselben, die auch an andere Softwareprodukte bzw. Webseiten gestellt werden.
-
Effizienz
Die Bearbeitung einer Aktion und das Ausliefern einer HTML-Seite muss natürlich schnell gehen. Aus Kostengründen müssen außerdem soviele Spieler wie möglich auf einem Server spielen können.
-
Skalierbarkeit
Mit steigender Spielerzahl muss das System nicht nur zurechtkommen, es muss auch gut damit zurechtkommen, d.h. der Ressourcenbedarf sollte möglichst linear sein. Ein Browserspiel das bei einer Verdopplung seiner Spielerzahl die vierfache Serverzahl benötigt wird nicht sehr weit kommen.
-
Erweiterbarkeit
Da Browserspiele häufig eine Dauerbaustelle bleiben, sollte es wenig Aufwand machen neue Features einzubauen.
-
Wartbarkeit
Änderungen müssen immer gemacht werden, sei es die Behebung eines Fehlers, die Veränderung der Funktionalität oder das Hinzufügen eines neuen Features. Damit diese Änderungen nur möglichst kleine Teile des Systems betreffen, sollte das Programm möglichst modular aufgebaut sein. Die Kapselung von Daten und Funktionalität sollte man Kopieren & Einfügen eindeutig vorziehen.
-
Internationalisierung
Mittlerweile werden viele Browserspiele in verschiedenen Sprachen und Ländern veröffentlicht. Steckt man sich dieses Ziel, sollte man Internationalisierung und Lokalisierung von Anfang an berücksichtigen.
Technologie – Mit MIPS programmiert man keine Browserspiele
Basierend auf den genannten Anforderungen, den eigenen Qualifikationen und den verfügbaren Ressourcen muss man sich nun für die Technologien entscheiden, mit denen man sein Browserspiel zu realisieren plant. Die meisten werden sicherlich HTML, PHP und MySQL verwenden. Diese Kombination ermöglicht sehr schnelle Ergebnisse und der Einsatz ist auf praktisch jedem Webhosting-Paket möglich.
Für die serverseitige Entwicklung stehen außer PHP eine große Anzahl weiterer Technologien zur Verfügung. Neben den traditionellen Web-Technologien Perl, JSP, Servlets, ASP und XML/XSL stehen für die Anwendungslogik auch klassische Programmiersprachen, wie beispielsweise C, C++ oder Java zur Verfügung.
Auch für die Clientseite, also den Browser, gibt es eine Vielzahl verfügbarer Technologien. Neben (X)HTML und JavaScript stehen hier vorzugsweise Flash, Java Applets und XML/XSL zur Auswahl. Bei der Wahl der clientseitigen Technologien sind Browserkonformität und breite Verfügbarkeit besonders wichtig. Um möglichst wenige Spieler auszuschließen, sollte die Anzahl an unterschiedlichen Technologien so gering wie möglich gehalten werden.
Auch die Übertragung der Daten vom Server zum Client lässt Raum für Entscheidungen. Neben der klassischen Kombination HTML/HTTP kann man auch Ajax verwenden oder eine Verbindung über Flash oder Java Applets aufbauen.
Für die persistente Speicherung der Daten empfiehlt sich eine Datenbank. Für die meisten Browserspiele ist dabei sicherlich MySQL die beste Alternative, aber es lohnt sich auch ein Blick auf die Merkmale von PostgreSQL zu werfen.
Nun muss ein Server her. Ein stabiles Betriebssystem, regelmäßige Software-Updates und Daten- Backups sowie ein Webserver sind dabei wichtig.
Entwurf – Von Mustern und Modellen
Nun geht es daran sich zu überlegen, wie man das Spiel technisch umsetzen kann. Wählt man den objektorientierten oder doch lieber den prozeduralen Ansatz? Wir können für ein Softwareprojekt im Umfang eines Browserspiels uneingeschränkt den objektorientierten Ansatz empfehlen.
Für objektorientierte Software gibt es eine Vielzahl von Entwurfsmustern [Gamma et al 1995]. Diese bieten eine abstrakte Lösung für häufig vorkommende Probleme in der Softwareentwicklung. Es ist sinnvoll, sich einen Überblick über diese Muster zu verschaffen, um bei einer entsprechenden Problemstellung darauf zurückgreifen zu können.
Es hat sich bewährt, eine Softwarearchitektur zu wählen, die auf dem MVC-Prinzip beruht. MVC steht nicht für die Mainzer Vereinigung der Carnevalisten, sondern für Model, View und Controller. Nach diesem Prinzip sollte Software in drei voneinander getrennte Bereiche aufgeteilt werden: Das Model ist die Repräsentation der Daten, View stellt die Daten aus dem Model dar und der Controller beinhaltet die Anwendungslogik der Software.
Eine Visualisierung der abstrakten Softwarearchitektur bietet einen leicht verständlichen Überblick und begünstigt das eigene Verständnis der Software. Eine Grafik ist auch ideal dafür geeignet, anderen Teammitgliedern die Funktionsweise der Software zu verdeutlichen.
Die Unified Modeling Language (UML) [Booch et al 1999] ist eine genormte Darstellungsform von häufig vorkommenden Software- Zusammenhängen. Von den Anwendungsfällen der Software über den Klassenentwurf bis zum Ablauf eines Programms kann man mit UML alles darstellen. UML ist in der Softwareentwicklung nicht mehr wegzudenken und sollte auch bei einem Browserspiel eingesetzt werden.
Spiel-Engine – Das Herzstück des Spiels
Innerhalb eines Browserspiels gibt es Abläufe, die sich wiederholen und die unabhängig von den speziellen Features des Spiels sind. Dazu gehören zum Beispiel das Ausliefern einer HTML-Seite, die Bearbeitung einer Spieler-Aktion sowie der Zugriff auf statische und dynamische Daten.
Damit man das Rad nicht jedes Mal neu erfinden muss, empfiehlt es sich eine Spiel-Engine zu entwickeln, die in der Lage ist diese Aufgaben zu übernehmen. Das hat den Vorteil, dass bei der Erweiterung des Spiels mit neuen Features nur einige weitere Klassen, XML-Dateien oder Datenbank-Tabellen erstellt werden müssen. Man muss sich keine Gedanken mehr über die grundlegenden Abläufe machen, sondern kann sich auf die Implementierung des Features konzentrieren.
Die Entwicklung einer flexiblen Spiel-Engine macht zwar anfangs mehr Arbeit, die Erweiterbarkeit des Spiels wird dadurch jedoch erheblich verbessert und Wartung wird einfacher, sodass sich der Aufwand schon nach kurzer Zeit lohnt.
Spacetale – Der Bauplan des Cascadis-Sektors
Auch bei der Technik wollen wir euch natürlich nicht vorenthalten, welchen Weg wir bei der Entwicklung von Spacetale gewählt haben.
Auf unserem Server läuft ein Debian Linux mit einem Apache HTTPServer und einem Apache Tomcat. Bei der serverseitigen Entwicklung arbeiten wir mit "normalem" Java sowie Java Servlets. Als Datenquelle verwenden wir eine MySQL-Datenbank zur persistenten Speicherung der dynamischen Daten und XML-Dateien für die statischen Daten. Die Datenbank wird nur zur persistenten Speicherung verwendet, beim Hochfahren werden die Daten aus der Datenbank mittels Apache OJB in Java-Objekte geladen und beim Herunterfahren wieder gespeichert – alle Änderungen werden direkt in den Java-Objekten durchgeführt.
Auf dem Client setzen wir XHTML und eine Menge JavaScript ein, das auch unter Verwendung von Ajax die Darstellung im Browser automatisch aktualisiert. Dabei haben wir die negative Erfahrung gemacht, dass bei so komplexen HTML-Seiten, wie sie bei Spacetale vorkommen, immer noch für die verschiedenen Browser separat entwickelt werden muss.
Spacetale verwendet eine eventbasierte Physik, welche den Spielablauf in Echtzeit gestattet [Wolf 2006].
Wie entsteht aus dem Konzept ein fertiges Spiel? Der nächste Artikel beschäftigt sich mit der Umsetzung der Designvorgaben in Programmcode, Grafiken,Webseiten und eine Spielwelt.
Literaturempfehlungen
Als (Browser-)Spieleentwickler ist es sinnvoll, auf die Kenntnisse anderer Entwickler zurückzugreifen und von deren Erfahrungen zu profitieren. Auch wir von Spacetale haben diesen Rat beherzigt und einige Bücher undWebseiten zur Hilfe genommen. Die wichtigsten davon – sowie die zitierten Quellen – stellen wir euch hier kurz vor:
-
Browserspielmagazine
Browserspielmagazine wie zum Beispiel Galaxy-News, bieten neben einer Browserspielübersicht auch Foren, in denen wir nützliche Informationen zur Browserspielentwicklung gefunden haben.
-
Gamasutra (Englisch)
Gamasutra hält eine umfassende Sammlung von Artikeln zur Spieleentwicklung bereit. Die Web- seite richtet sich aber nicht ausschließlich an Browserspielentwickler, sondern vielmehr an Computerspieleentwickler im weiteren Sinn. Grundlegende Informationen zum Thema Design sind jedoch auch für Browserspiele relevant und interessant.
-
Massively Multiplayer Game Development I & II (Englisch)
Die beiden Bücher enthalten eine Sammlung von Artikeln zum Spieldesign, technischem Design, Community-Management und Produktionstechniken. Die Autoren sind Entwickler großer grafischer Online-Spiele und Berichten von ihren Erfahrungen bei der Produktion dieser Spiele.
-
Zieleinlauf mit Java
Dieser Artikel in der iX präsentiert die Ergebnisse eines Vergleichs der Geschwindigkeit von Perl, PHP, C, JSP und Java Servlets bei der Erstellung von HTML-Seiten.
-
Design Patterns
Das Buch von Gamma, Helm, Johnson und Vlissides präsentiert 23 Entwurfsmuster als Elemente wiederverwendbarer Objektorientierter Software.
-
The Unified Modeling Language User Guide (Englisch)
Das Buch von Booch, Rumbaugh und Jacobson stellt die Unified Modeling Language ausführlich vor. Verschiedene Modelle werden erklärt und mit Anwendungsfällen und Beispielen präsentiert.
-
Echtzeit in Browserspielen
In diesem Vortrag beschäftigt sich Michael Wolf, Projektleiter von Spacetale, mit der technischen Umsetzung von Echtzeit in Browserspielen. Die Präsentation wurde auf der Browsergame Conference 2006 zum besten Vortrag der Veranstaltung gewählt.
-
Browsergame Developers Forum
Das Forum der Browsergame Developer Conference wurde im September 2005 gestartet. Diese Plattform bedient speziell den Informationsbedarf von Browserspielentwicklern. Seit geraumer Zeit ist dieses Forum sehr ruhig, es gibt allerdings durchaus noch einige lesenswerte Themen im Archiv.