Entwurf und Implementierung einer Middleware für mobile
Transcrição
Entwurf und Implementierung einer Middleware für mobile
Freie Universität Berlin Institut für Informatik Diplomarbeit Entwurf und Implementierung einer Middleware für mobile MMOGs Betreuer: Prof. Dr.-Ing. habil. Jochen H. Schiller Dipl.-Inform. Tobias Fritsch Michael Schran Matrikel-Nr. 3677732 Hänselstrasse 6 12057 Berlin 1 Eidesstattliche Erklärung Hiermit erkläre ich an Eides statt, die Arbeit bis auf die dem Aufgabensteller bereits bekannte Hilfe selbständig angefertigt, alle verwendeten Hilfsmittel vollständig und genau angegeben und alles kenntlich gemacht zu haben, was aus Arbeiten anderer unverändert oder mit Abänderung entnommen wurde. Berlin, den 26. September 2006 3 Inhaltsverzeichnis Abkürzungsverzeichnis ..........................................................................................................7 1. 2. Einleitung........................................................................................................................9 1.1. Motivation ...............................................................................................................9 1.2. Aufgabenstellung ..................................................................................................10 1.3. Aufbau der Arbeit ..................................................................................................11 Multiplayerspiele im Desktop- und Konsolenbereich.....................................................13 2.1. 2.1.1. Actionspiele...................................................................................................14 2.1.2. Strategiespiele ..............................................................................................16 2.1.3. Abenteuerspiele / Adventures .......................................................................18 2.1.4. Simulationen .................................................................................................19 2.1.5. Sport- und Rennspiele...................................................................................20 2.2. Technische Realisierungen für Multiplayer-Umgebungen..............................22 2.2.2. Populäre Multiplayer-Genres.........................................................................27 Einführung in den MMOG-Bereich ........................................................................27 2.3.1. Netzwerkstrukturen .......................................................................................28 2.3.2. Beeinflussung der Spielbarkeit ......................................................................32 2.3.3. Fallbeispiel: World of WarCraft......................................................................36 Mobile Netzwerke..........................................................................................................39 3.1. Übertragungstechniken.........................................................................................40 3.1.1. Bluetooth (802.15).........................................................................................40 3.1.2. Wireless LAN (802.11) ..................................................................................41 3.1.3. GSM und GPRS............................................................................................42 3.1.4. UMTS............................................................................................................43 3.1.5. WMAN (802.16) ............................................................................................45 3.2. 4. Multiplayer-Spiele .................................................................................................22 2.2.1. 2.3. 3. Allgemeine Computerspiel-Genres .......................................................................13 Beeinflussung drahtloser Kommunikation .............................................................45 3.2.1. Netzauslastung und Zellatmung ....................................................................46 3.2.2. Ausbreitung der Funksignale.........................................................................46 3.3. Eignung drahtloser Übertragungstechniken für mobile Spiele ...............................47 3.4. Einführung in Standortbasierte Dienste.................................................................48 3.4.1. Global Positioning System (GPS)..................................................................48 3.4.2. Netzwerk-basierte Positionsbestimmung.......................................................49 3.4.3. Assisted GPS (A-GPS)..................................................................................50 3.4.4. Weitere Ansätze............................................................................................51 Verwandte Arbeiten.......................................................................................................53 5 4.1. Mobile MMOGs .................................................................................................... 53 4.1.1. TibiaME ........................................................................................................ 53 4.1.2. Undercover 2: Merc Wars............................................................................. 54 4.2. Middleware für mobile Umgebungen.................................................................... 55 4.2.1. 5. Entwurf und Implementierung der Middleware.............................................................. 59 5.1. Middlewarekonzepte ............................................................................................ 59 5.2. Middleware für MMOGs ....................................................................................... 60 5.2.1. Vorteile......................................................................................................... 60 5.2.2. Anforderungen ............................................................................................. 61 5.3. Gaming-Schnittstelle .................................................................................... 62 5.3.2. Netzwerk-Schnittstelle .................................................................................. 64 5.3.3. Programmiersprache.................................................................................... 66 Entwurf und Implementierung .............................................................................. 66 5.4.1. Struktur ........................................................................................................ 66 5.4.2. Nachrichtensystem....................................................................................... 71 5.4.3. Gesamtübersicht .......................................................................................... 77 5.4.4. Area of Interest............................................................................................. 78 5.4.5. Flooding Algorithmus.................................................................................... 79 5.5. Implementierung in eine Anwendung ................................................................... 81 Evaluierung und Test.................................................................................................... 83 6.1. Testumgebung und Vorgehensweise ................................................................... 83 6.2. Verhalten des Flooding Algorithmus..................................................................... 86 6.2.1. Erwarteter Versuchsausgang ....................................................................... 86 6.2.2. Versuchsausgang und Auswertung .............................................................. 86 6.3. 7. Design- und Implementierungskriterien ................................................................ 62 5.3.1. 5.4. 6. GASP – Gaming Service Platform................................................................ 55 Einfluss der „Area of Interest“............................................................................... 88 6.3.1. Erwarteter Versuchsausgang ....................................................................... 89 6.3.2. Versuchsausgang......................................................................................... 89 Zusammenfassung und Ausblick .................................................................................. 91 7.1. Gaming-Architekturen .......................................................................................... 92 7.2. I/O Multiplexing .................................................................................................... 93 7.3. Umsetzen eines Clients auf J2ME........................................................................ 93 7.4. Location based Services ...................................................................................... 94 7.5. Weitere mögliche Funktionen............................................................................... 94 Verwendete Hilfsmittel......................................................................................................... 95 Quellennachweis ................................................................................................................. 97 6 Abkürzungsverzeichnis CSMA/CA Carrier Sense Multiple Access with Collision Avoidance CSMA/CD Carrier Sense Multiple Access with Collision Detection DSL Digital Subscriber Line EDR Enhanced Data Rate FPS First Person Shooter GPRS General Packet Radio Service GPS Global Positioning System GSM Global System for Mobile Communications http Hypertext Transfer Protocol J2ME Java 2 Micro Edition LAN Local Area Network LBS Location Based Services MMOG Massive(ly) Multiplayer Online Game MMORPG Massive(ly) Multiplayer Online Role-Playing Game MOM Message-oriented Middleware P2P Peer to Peer PC Personal Computer PDA Personal Digital Assistant RPC Remote Procedure Calls RPG Role-Playing Game RTS Realtime Strategy RTT Round Trip Time SNES Super Nintendo Entertainment System TCP Transmission Control Protocol UDP User Datagram Protol UMTS Universal Mobile Telecommunications System VE Virtual Environments WAN Wide Area Network WAP Wireless Application Protocol WEP Wired Equivalent Privacy WLAN Wireless Local Area Network WMAN Wireless Metropolitan Area Network WPAN Wireless Personal Area Network XML Extensible Markup Language 7 1. Einleitung “Eine gute Theorie ist das Praktischste was es gibt.” – Gustav Robert Kirchhoff, deutscher Physiker 1.1. Motivation Der Computerspielemarkt hat in den vergangenen Jahren einen riesigen „Boom“ erfahren, der mittlerweile zum Beispiel in Deutschland sogar die Umsatzzahlen der Filmindustrie in den Schatten stellt [diepresse04]. Insbesondere Multiplayerspiele mit wenigen bis zu mehreren tausend Mitspielern (MMOGs) sind sehr populär geworden. Mit der stark gestiegenen Verbreitung mobiler Endgeräte ist auch die Nachfrage nach Spielen auf solchen Geräten immer größer geworden. Verfolgt man den Trend auf Desktop-Computern und Spielekonsolen, so werden MMOGs künftig auch im mobilen Spielesektor von großem Interesse sein. Im Mobilbereich bietet sich insbesondere die Möglichkeit des so genannten „Pervasive Gamings“1, also Spiele, die durch die gegebene Mobilität der Endgeräte die reale Welt in die virtuelle Spielwelt mit einbeziehen. In diesem Zusammenhang sind ortsbezogene Dienste (LBS) von besonderem Interesse für künftige mobile Multiplayerspiele. Insbesondere ist dies für VE (Virtual Environments) und kurzzeitiges Spielen (z.B. auf dem Weg zu Arbeit) ein immer weiter wachsender Markt. Während bei mobilen Computerspielen bisher technische Größen wie Speicher-, Video- und Rechenleistung limitierende Faktoren bei Nachahmungen erfolgreicher Computerspiele waren, ergeben sich bei mobilen Multiplayerspielen vor allem Probleme durch zugrunde liegende Netzwerkstrukturen, die Funktionen des Spiels entscheidend beeinflussen. Die Entwicklung eines jeden Multiplayerspiels muss sich folglich mit den Möglichkeiten und Begrenzungen der verschiedenen mobilen Netzwerkstrukturen und der Verwaltung der vielen tausend Spieler auseinandersetzen. Eine einheitliche Plattform für den Zugang und die Nutzung der Netzstrukturen, aber auch die Verwaltung der gesamten MMOG-Umgebung stellt eine sinnvolle Lösung für Entwickler mobiler Mehrbenutzerspiele dar, die sich dadurch fast ausschließlich Implementierung des Spielkonzepts konzentrieren können. Der Entwurf 1 auf die einer solchen pervasive (engl.) = durchdringend, tiefgreifend 9 Middleware erlaubt die einfache Verwaltung und Kontrolle von Funktion und Sicherheit verschiedener für mobile Mehrbenutzerspiele in Frage kommender Netzwerkstrukturen. Sie ermöglicht die Zusammenführung und Abstraktion der Parteien Programmierer, Spielesoftware, Netzwerk und Netzwerkbetreiber unter Einhaltung der gegenseitig geforderten Funktionsansprüche. Da die Anzahl der bisher veröffentlichten mobilen Multiplayerspiele noch stark begrenzt ist und dieser Marktsektor noch in Kinderschuhen steckt, ist dem Entwurf und insbesondere der Implementierung einer solchen Middleware für MMOGs auf mobilen Endgeräten bisher nur wenig Beachtung geschenkt worden. 1.2. Aufgabenstellung Eine Middleware für mobile Endgeräte, die Funktionen der Schnittstelle zum Netzwerk realisiert, als auch Datenverwaltung eines Spiels für mehrere tausend Spieler unterstützt, wird im Rahmen dieser Diplomarbeit entworfen und in grundsätzlichen Strukturen implementiert. Die Implementierung umfasst dabei im Wesentlichen: Abstraktion von der Netzwerkschnittstelle durch ein entsprechendes Nachrichtensystem Bereitstellung diverser Methoden zur lokalen Verwaltung der Spieldaten einer MMOG-Umgebung Entwurf zusätzlicher Schnittstellen für spätere Erweiterungen Die Middleware wird dabei in Java implementiert, um später Umsetzungen für verschiedene mobile Plattformen, die beispielsweise J2ME unterstützen, leicht realisieren zu können. Dies ist insbesondere von großer Relevanz, da im mobilen Sektor durch die J2ME Umgebung zum ersten mal ein gemeinsamer Standard versucht wird zu schaffen, auf dessen Grundlage allgemeine Spielentwicklung möglich ist. Unabhängig von der Implementierung werden ortsbezogene Dienste für künftige Mehrbenutzerspiele im Bereich des „Pervasive Gamings“ betrachtet, die eine mögliche Erweiterung des mobilen Middlewarekonzepts in späteren Versionen sein können. 10 1.3. Aufbau der Arbeit Kapitel 2 gewährt zuerst einen Einblick in den Multiplayer-Bereich in nicht-mobilen Umgebungen. Dazu werden allgemein Computerspiel-Genres betrachtet, bevor der Übergang zu Multiplayer-Spielen erfolgt, dessen technische Realisierungen vorgestellt werden. Der dritte Teil des Kapitels leitet schließlich in den MMOG-Bereich über und präsentiert mögliche Netzwerkstrukturen und damit verbundene Faktoren, die die Spielbarkeit beeinflussen können. Abschließend wird exemplarisch ein MMOG-Spiel aus dem Desktop-Bereich betrachtet. Im dritten Kapitel werden mobile Netzwerke untersucht. Aktuelle und künftige mobile Übertragungstechniken werden vorgestellt. Da mobile Systeme hauptsächlich in drahtlosen Umgebungen genutzt werden, ergeben sich weitere Faktoren, die eine Übertragung beeinflussen und erschweren. Diese Faktoren werden analysiert, und es wird auf die Eignung mobiler Umgebungen für MMOGs eingegangen. Als weiteres Thema dieser Diplomarbeit werden Techniken, die Standort basierte Dienste ermöglichen, diskutiert. Das vierte Kapitel stellt die bisher noch seltenen Umsetzungen massiver Mehrbenutzerspiele im Handheldbereich vor und präsentiert einen verwandten Ansatz einer MiddlewareImplementierung für mobile Mehrbenutzerspiele. Kapitel 5 erarbeitet die wichtigsten Komponenten einer Middleware für MMOGs, deren Merkmale schließlich auch für die mobile Variante übernommen werden sollen. Es folgt der eigentliche Entwurf der Middleware, der grundlegende Strukturen vorstellt und einige implementierte Features erklärt. Im sechsten Kapitel werden Testergebnisse, die mit der entwickelten Middleware erzielt wurden, präsentiert. Hierbei steht die Frage der Leistungsfähigkeit der Middleware anhand entstehender Verzögerungszeiten im Vordergrund. Hierbei soll die Skalierbarkeit des Systems durch implementierte zusätzliche Funktionen deutlich verbessert werden. Kapitel 7 fasst die erarbeiteten Ergebnisse noch einmal kurz zusammen und gibt einen Ausblick für zukünftige Weiterentwicklungen der Middleware. 11 2. Multiplayerspiele im Desktop- und Konsolenbereich “I think there is a world market for maybe five computers.” – Thomas J. Watson, Gründer von IBM, 1943 Dieses Kapitel gibt zunächst eine Übersicht über Multiplayerspiele und Genres, die sich im Heimcomputerbereich – also im Markt für Spielekonsolen und Desktop PCs – etabliert haben. Dazu werden sowohl die populärsten Spiel-Genres vorgestellt als auch die verschiedenen (technischen) Multiplayer-Varianten und deren entsprechend benötigte Netzwerkstrukturen. Im Mittelpunkt der Betrachtungen stehen dabei Onlinespiele, die mehrere tausend Spieler unterstützen. Die möglichen technischen Realisierungen und Anforderungen, um eine akzeptable Spielbarkeit dieser so genannten Massive Multiplayer Online Games zu erreichen, sind dabei von besonderem Interesse im Hinblick auf die spätere Übertragung auf mobile Netzwerke. 2.1. Allgemeine Computerspiel-Genres Computerspiele können anhand diverser Kriterien in Genres eingeteilt werden. Dabei ist sowohl eine eindeutige Aufstellung der Genres selbst als auch die Einteilung der Spiele in ein bestimmtes Genre nur schwierig möglich. Durch innovative Ideen und dem Streben der Spielhersteller, ein möglichst breites Spektrum an potentiellen Käufern zu erreichen, werden neue Spielfelder kreiert oder Spiele entwickelt, die gleichzeitig in mehrere Kategorien fallen. Dass eine eindeutige und zeitlose Klassifizierung nicht möglich ist, liegt unter anderem auch an der rasanten Weiterentwicklung der Technik (schnellere Prozessoren/Grafikkarten, größerer Arbeitsspeicher), die die Entstehung neuer Spiele und somit auch Genres fördert. Umgekehrt haben Spielhersteller heutzutage ebenfalls einen großen Einfluss auf die 13 Hardware der nächsten Generationen. So werden neue Spiele mit innovativen Features oftmals in Absprache und im Gleichschritt mit der Hardware der Zukunft entwickelt. Die hier betrachtete Einteilung orientiert sich an [Myers90] und [Wiec02] und dem darin vorgestellten Ansatz aus „Computerspiele: Design und Programmierung“ [DoMü02]. Hierbei wird eine pragmatische Aufteilung vorgeschlagen, die dem Spieler durch Faktoren wie technische Kriterien (z.B. 2D- oder 3D-Grafik) aber vor allem Thematik (analog zu Einteilungen von Filmen in Kategorien) bereits von außen einen groben Eindruck vermittelt, um welche Art Spiel es sich handelt. In [DoMü02] wird folgende Gruppierung vorgeschlagen: Actionspiele Strategiespiele Abenteuerspiele Simulationen Rennspiele Sportspiele Zusätzlich zu dieser Aufteilung ist die Betrachtung weiterer Unterkategorien - wie im Folgenden aufgeführt - möglich. 2.1.1. Actionspiele Actionspiele gehören zu den Vorreitern der Computerspielindustrie. Sie werden häufig auch als Arcade2-Games bezeichnet, da die ersten elektronischen Spiele den Spielern hauptsächlich durch Automaten in Spielhallen zugänglich gemacht wurden. Actionspiele fordern in erster Linie die Geschicklichkeit des Spielers, insbesondere erfordern Sie „Reflexe und die Koordination von Hand und Augen“ [Myers90]. Eine weitere Unterteilung dieses Genres ist in folgende Unterkategorien möglich: 2 Arcade (engl.) = Spielhalle 14 Jump ’n’ Run Der Spieler steuert eine Spielfigur durch die Spielwelten (meist durch so genannte Levels3) und überwindet dabei Hindernisse und Fallen. Ein populäres Beispiel ist das Spiel „Super Mario Land“ [SuML89], welches 1989 bereits auf dem tragbaren Handheld Gameboy [Gboy89] erhältlich war. Abbildung 2.1: Super Mario Land (Gameboy) Beat’em Up Diese Variante legt den Schwerpunkt auf das Bekämpfen/Schlagen von Gegnern. Dabei kann noch zwischen Spielen mit Bildschirm-Scrolling (die Levels werden durchlaufen ähnlich wie bei Jump ‚n’ Runs) und reinen Kampfspielen mit Eins-gegen-Eins (1 vs 1) Kämpfen, wie etwa „Streetfighter“ [StFi87], unterschieden werden. Abbildung 2.2: Streetfighter 2 Turbo (SNES) 3 Unterteilung des Spiels in einzelne Spielabschnitte (auch „Stages“) unterschiedlicher Schwierigkeit 15 Shooter / Shoot’em Up Bei den Shootern werden Gegner (Computer oder Mitspieler) durch Schießen bekämpft. Dieses Genre erfuhr mit dem Klassiker „Doom“ [Doom93] einen enormen Schub. Während vorherige Shooter mit verschiedenen Bildschirmtechniken wie Single-Screen (z.B. Space Invaders [SpIn78]) oder Bildschirm-Scrolling (zum Beispiel Raumschiff- oder Hubschrauberspiele) in 2D-Grafik dargestellt wurden, gelang es id Software 1993 das erste mit fließender 3D- Grafik und Netzwerkfähigkeit ausgestatte Spiel auf den Markt zu bringen, welches als Shareware als Download erhältlich war und somit schnell starke Verbreitung fand. Abbildung 2.3: Doom (PC Version) „Doom“ wurde zu einem so großen Erfolg, dass Nachahmer nicht lange auf sich warten ließen und der Computermarkt in den folgenden Jahren regelrecht von 3D Shootern überschwemmt wurde. Shooter im Stile von „Doom“, die direkt aus der Sicht des Spielers gesteuert werden, bilden eine weitere Unterkategorie, die heute allgemein als First Person Shooter (FPS) bekannt sind. Dank immer schneller werdender Rechner und dem Einsatz zusätzlicher Prozessoren auf Grafikkarten, die 3D Berechnungen und Rendering beschleunigen, werden FPS immer realistischer. 2.1.2. Strategiespiele Strategiespiele verlangen vom Spieler „kreative und logische Denkfähigkeit“ ([Wiec02] und [DoMü02]). Strategisches Planen und Denken stehen im Vordergrund. Man kann wie folgt unterscheiden: 16 Echtzeitstrategiespiele Die Entscheidungen des Spielers und die Entwicklung der Spielwelt geschehen in Echtzeit. Dies bedeutet, dass die Spielzeit ständig voranschreitet und somit in Echtzeit agiert (z.B. Verteilen von Aufgaben an seine Spielfiguren) und reagiert werden muss (auch bekannt als Realtime Strategy). Echtzeitstrategiespiele erfreuen sich insbesondere im Mehrspielermodus großer Beliebtheit. Ein beliebter Vertreter dieses Genres ist die „WarCraft“-Serie [WarCraft94]. Abbildung 2.4: WarCraft III: Reigns of Chaos (PC-Version) Rundenbasierte Strategiespiele Das strategische Denken und Handeln erfolgt in einzelnen Runden. In jeder Runde trifft der Spieler eine Entscheidung, die anschließend in das Spielgeschehen übertragen wird. Dabei hat der Spieler genug Zeit, bevor er sich für einen Spielzug entscheiden muss. Ein typisches Beispiel wäre Schach (ein „Hybrid“, da es ebenfalls in die Kategorie „Sportspiel“ passt). Aufbauspiele Hier steht das Aufbauen und Verwalten einer Spielwelt im Vordergrund, so zum Beispiel die Entwicklung einer Stadt oder die Evolution eines virtuellen Volkes. 17 Wirtschaftssimulationen Der Spieler leitet ein Unternehmen oder ein Imperium, dessen wirtschaftlicher Erfolg Ziel des Spieles ist. Es werden betriebswirtschaftliche und volkswirtschaftliche Entscheidungen und entsprechendes Vorgehen vom Spieler verlangt. 2.1.3. Abenteuerspiele / Adventures Die wichtigsten Elemente eines Abenteuerspiels sind die Story und der Dialog. Der Spieler muss anhand der gelieferten Story und Interaktionen mit Gegenständen und Charakteren des Spiels (insbesondere Dialoge) Zusammenhänge erkennen und Rätsel lösen. Abenteuerspiele haben ihren Ursprung in den Text-Adventures. Hier wurde das Spielgeschehen durch eine textbasierte Geschichte getragen. Der Spieler bekam die Story wie in einem Buch präsentiert und konnte durch Eingabe von simplen Befehlen („gehe nach links“, „benutze Taschenlampe“) die Geschichte und somit das Spiel vorantreiben. Anfang der 90er Jahre gingen die Entwickler aufgrund verbesserter (Grafik-) Hardware zu Grafik-Adventures über. Die Steuerung der Spielfigur(en) wurde durch den Einsatz der Computermaus vereinfacht, und die Geschichte wurde neben dem Dialog nun vor allem von grafischen Elementen unterstützt. Besonders erwähnenswert sind hier die Adventures von LucasArts4, die durch speziellen Witz und liebevoll gezeichnete Grafiken beeindruckten. Abbildung 2.5: The Secret of Monkey Island (PC-Version) 4 bis 1991 LucasFilm Games 18 Rollenspiele Computer-Rollenspiele (auch bekannt als Role-Playing Games) stammen von ihren Brettspiel-Vorbildern ab, die wiederum von entsprechender Literatur, wie den Werken von J.R.R. Tolkien, inspiriert wurden. In einem Rollenspiel übernehmen die Spieler die Rolle eines Charakters in einer Fantasiewelt und versuchen unter vorgegebenem Regelwerk, die Entwicklung ihres eigenen Charakters voranzutreiben (Hinzugewinnen neuer Fähigkeiten wie „Zauberkräfte“, Sammeln von Gegenständen), um diverse Abenteuer in der Spielwelt zu meistern. Dabei werden den Spielern verschiedene Aufgaben, so genannte Quests, gestellt, die es zu lösen gilt. Rollenspiele müssen kein vorgesehenes Ende haben, so dass die Fantasiewelten parallel zur „echten Welt“ ständig weiterleben und weiterentwickelt werden können. Wie im nächsten Abschnitt aufgeführt, sind Rollenspiele durch diese fiktiven Welten und Charaktere ein besonders interessantes Mehrspieler-Genre. Die starke Verbreitung des Internets in den letzten Jahren hat dafür gesorgt, dass Rollenspiele mit mehreren tausend Spielern möglich geworden sind (MMORPGs). Abbildung 2.6: Diablo II LOD (PC-Version) 2.1.4. Simulationen Simulationsspiele versuchen, Teile der realen Welt abzubilden, indem bestimmte Szenarien so realitätsnah (dies kann sich sowohl auf die Grafik als auch auf die inhaltlichen Elemente beziehen) wie möglich dargestellt werden. Die virtuellen Umgebungen sind dabei von 19 besonderer Bedeutung, da sie dem Spieler den Eindruck einer wirklichen Umgebung suggerieren sollen. Hierbei seien insbesondere Flugsimulationen zu erwähnen, die teilweise so realistisch gestaltet wurden, dass aufgrund diverser Kritik nach Terroranschlägen durch entführte Flugzeuge eine Überarbeitung bzw. Rücknahme der Spiele nötig war (siehe [Siegen02]). Abbildung 2.7: Microsoft Flight Simulator 2004 (PC-Version) 2.1.5. Sport- und Rennspiele In diesem Genre werden fast alle Sportarten auf den Computer übertragen, unter anderem auch als Kollektionen wie z.B. Olympische Sportarten. Computer-Sportspiele erfahren einen ähnlichen Trend, wie die entsprechenden Sportarten selbst. Ein Sport, der in den Medien und beim Publikum an Beliebtheit gewinnt, wird nicht lange mit einer Umsetzung als Computerspiel auf sich warten lassen. Da die Identifizierung mit Sportidolen ein nicht zu unterschätzender Faktor in der Kaufentscheidung eines Computerspielers ist, wird die ständig verbesserte Hardware vor allem für eine realitätsnahe Verwirklichung der Idole auf dem Computerbildschirm genutzt. Rennspiele, wie Autorennen, können als eigenes Genre oder Unterkategorie betrachtet werden, da sie teilweise etwas aus dem Sportrahmen fallen können - so sind beispielsweise auch futuristische Autorennen denkbar. 20 Abbildung 2.8: FIFA 2005 (PC und PS2 Version) 21 2.2. Multiplayer-Spiele Nachdem im ersten Abschnitt ein kurzer Einblick in eine mögliche Einteilung der Computerspiel-Genres gegeben wurde, werden nun solche Spiele detaillierter betrachtet, die für mehrere Spieler besonders interessant und gefragt sind. Dazu wird in erster Linie auf die technischen Möglichkeiten zur Implementierung eines Mehrbenutzer-Modus in Spielen im Heimcomputerbereich – insbesondere die Realisierung durch Netzwerkunterstützung – eingegangen. 2.2.1. Technische Umgebungen Realisierungen für Multiplayer- Es ist bemerkenswert, dass „Pong“ [Pong72], das erste populäre Videospiel der Welt5, bereits für zwei Spieler entwickelt wurde und wenig später sogar Varianten mit 4 Spielern (vergleichbar mit einem Tennis-Doppel) vorgestellt wurden. Abbildung 2.9: Pong für 4 Spieler Single-Screen Während „Pong“ aufgrund technischer Limitierungen einen Mehrspielermodus auf einem einzigen Bildschirm (Single-Screen, d.h. alle Spieler benutzen denselben Bildschirm) bot, wurde diese erste Möglichkeit mehrere menschliche Spieler gleichzeitig an derselben Konsole spielen zu lassen, wiederholt in den ersten Generationen der Videospiele 5 es wurden bereits Videospiele vor „Pong“ entwickelt, allerdings wird „Pong“ aufgrund der weltweiten Verbreitung als „Urvater“ der Videospiele bezeichnet [Wiki06] 22 genutzt. Die Entwicklung hin zu „bewegten“ Bildern (horizontales und vertikales Scrolling) übertrug sich ebenfalls auf die Multiplayer-Spiele, auch wenn es hier zu möglichen Problemen bei der Steuerung kommen konnte, da zwei Spieler den Bildschirm nicht gleichzeitig in zwei Richtungen verlassen und somit zum Weiterscrollen bringen konnten. Eine weitere Variante eines Single-Screen Multiplayer-Modus sind runden basierte Spiele, in denen die einzelnen Benutzer abwechselnd eine gewisse Zeit für ihre Spielzüge haben und dabei mitunter sogar dieselben Eingabegeräte benutzen. Ein Beispiel hierfür ist das Spiel „Giana Sisters“ [GiSi87], bei dem die Spieler sich nach jedem „virtuellen Sterben“ der Spielfigur abwechselten. Split-Screen Eine andere weit verbreitete Technik, Mehrbenutzerspiele an einem einzigen Bildschirm zu ermöglichen stellt die Bildschirmaufteilung (Split-Screen) dar. Single-Screen Spiele präsentieren jedem beteiligten Spieler die gleiche Perspektive auf die Spielwelt. Durch die (meist horizontale) Aufteilung des Bildschirms ist hingegen die Realisierung mehrerer Blickwinkel durchführbar, so dass jedem Benutzer seine eigene Perspektive eingeräumt werden kann. Der Nachteil dieses Ansatzes ist – neben der beschränkten Anzahl an Spielern (meist nur zwei Benutzer) – die optische Irritation, die speziell bei schnellen, mit 3D-Grafik ausgestatteten Videospielen auftritt. Abbildung 2.10: Super Mario Kart (SNES-Version) als Beispiel der Split-Screen Technik 23 Netzwerklösungen Die bisher beschriebenen Mehrspieler-Modi basieren auf Veränderungen der Software und zeitlicher beziehungsweise räumlicher Aufteilung der gemeinsam verwendeten Hardware-Ressourcen. Computernetzwerke erlauben eine neue Art des Mehrspielerbetriebs, indem jeder Spieler das gemeinsame Spiel auf seiner eigenen Hardware laufen lässt und demnach jeder Benutzer seinen eigenen Blickwinkel (getrennt von den übrigen) erhält. Basis dieses gemeinsamen Spiels sind verschiedenartige Netzwerke, die getrennte Spielgeräte verbinden und so den Informationsaustausch zwischen der parallel laufenden Spielsoftware ermöglichen. Der entscheidende Unterschied liegt also vor allem in der Tatsache, dass mehrere Versionen derselben Software (Clients) gleichzeitig laufen. Somit taucht unweigerlich das Problem der Verwaltung der gemeinsamen Spielwelt, also der Synchronisation auf. Jeder Spieler sollte zu nahezu jedem Zeitpunkt möglichst dieselbe Spielwelt wahrnehmen, um eine logische Wahrnehmung im Sinne des Spielprinzips zu gewährleisten (Synchronisationsprinzip). Dazu ist ein Austausch an Informationen zwischen den Softwares erforderlich. Aus diesem Grund muss die verwendete Netzwerkstruktur, die diesen Informationsaustausch bewerkstelligt, gewissen Anforderungen genügen. Unter anderem muss die Spielbarkeit des Mehrbenutzerspiels akzeptabel gestaltet werden (siehe Abschnitt 2.3.2). Die Vernetzung zweier Spieler wurde anfangs durch eine direkte Verbindung zwischen den Spielgeräten, die in den meisten Fällen über serielle Schnittstellen der Geräte zustande kam, verwirklicht. Im PC-Bereich wurden zunächst vor allem die COMSchnittstellen genutzt, die mit Hilfe eines Nullmodem-Kabels verbunden wurden. Auch im mobilen Handheldbereich konnten durch eine direkte Verkabelung des Nintendo Gameboys über das so genannte DirectLink-System bereits Spiele mit zwei menschlichen Spielern durchgeführt werden. Die einfachste Form der Vernetzung mehrerer Spieler geschieht über Local Area Networks (LAN) mit fester Verkabelung, also kleine Netzwerke mit geringer Reichweite (etwa für die Vernetzung in einem Gebäude). Der am weitesten verbreitete Standard für LANs ist das Ethernet. Im Zuge der technischen Entwicklung durchlief das Ethernet verschiedene Versionen, die in Bezug auf die Datenübertragungsrate stetig verbessert wurden. Zuerst dominierte ein Ethernet-Standard, der einen Datendurchsatz von 10 Mbit/s gestattete. In nächsten Generationen wurden Standards mit 100 Mbit/s (Fast Ethernet) und 1Gbit/s (Gigabit Ethernet) und sogar 10 Gbit/s entwickelt. Die einzelnen Standards arbeiten mit unterschiedlichen 24 Technologien, wie verschiedenen Verkabelungen oder Modulationstechniken. Durch Router/Splitter ist die maximale Anzahl an Netzwerkteilnehmern eines LANs auch nicht mehr auf 2 beschränkt. Anfangs wurden Koaxialkabel verwendet, wobei der Standard 10Base2 bei dieser Verkabelung der damals am häufigsten verwendete Typ war. 10Base2, auch bekannt als Thin Ethernet (da die Kabel im Vergleich zum Standard 10Base5 – dessen Kabel etwa daumendick waren - vergleichsweise dünn und daher biegsamer waren), unterstützte Geschwindigkeiten bis zu 10 Mbit/s und eine Kabellänge von maximal 185m (als Resultat war die maximale Anzahl der Teilnehmer oft auf 14-16 beschränkt). Der Anschluss der maximal 30 (eher 14-16) Rechner an das Koaxialkabel erfolgt durch so genannte TStecker, mit denen die Bus-Schiene von den einzelnen Knoten (also Rechnern) „angezapft“ wurde. Um das Netzwerk „abzuschließen“ wurde an den beiden Enden der Schiene je ein Endwiderstand (10 Ohm) positioniert. Neben der Netzwerkhardware der beteiligten Knoten selbst wurde nur wenig Hardware benötigt, so dass dieser Standard kostengünstig und beliebt im Heimanwenderbereich war. Der Nachteil einer solchen Bus-Topologie ist jedoch, dass der Ausfall eines einzigen Kabelsegments (z.B. durch einen Kabelbruch) den Ausfall des gesamten Netzwerks bedeutete. Daher ging man zu der Einführung einer zusätzlichen Hardware, eines Hubs (später auch Switches) über, der mit jedem einzelnen Knoten verbunden war und den Netzwerkverkehr regelte (Stern-Netzwerktopologie). Für diesen Verkabelungstyp wurden Twisted-Pair-Kabel benutzt, die bereits bei der Telefonverkabelung Einsatz fanden. Der Hub ermöglichte nicht nur die leichte Entfernung oder das Hinzufügen neuer Knoten ohne den Netzverkehr zu stören - durch ihn wurde ebenfalls gesichert, dass der Ausfall eines einzigen Knotens beziehungsweise Kabels keinen Einfluss auf das restliche Netzwerk hatte. Nachteilig hierbei ist allerdings die begrenzte Länge eines Kabels auf 100m bzw. 200m (je nach verwendetem Kabeltyp), so dass für etwas längere Verbindungen andere Techniken zum Einsatz kommen müssen (zum Beispiel Glasfaser). Möchte man die Verkabelung der Rechner umgehen, so kann man den Netzwerkverkehr auch drahtlos über Wireless LANs abwickeln, die ebenfalls eine Verbreitung des Netzwerks in einem Gebäude möglich machen. Mit dem Datenverkehr über Funk sind Datenraten von 11 Mbit/s bis 54 Mbit/s realisierbar. Für WLANs existieren zwei Betriebsmodi, der Infrastruktur- und der Ad-Hoc-Modus. Im Infrastruktur-Modus gibt es eine Basisstation (auch Access Point), über welche die gesamte Kommunikation läuft; während im Ad-Hoc-Modus die Rechner direkt miteinander kommunizieren. Obwohl WLANs offensichtlich den großen Vorteil bieten, dass eine Verkabelung erspart bleibt und somit die Mobilität der Spielgeräte ermöglicht wird, steht demgegenüber vor allem noch die Frage der Sicherheit und Zuverlässigkeit, da die Kommunikation über Funk abgehört und gestört werden kann (eingesetzte Sicherungsprotokolle: z.B. WEP). Weitere drahtlose Verbindungen sind durch Kurzstreckenfunktechniken wie Infrarot oder Bluetooth möglich. 25 Um über das Ethernet vernetzte Spiele synchron zu halten, schickt die Spielsoftware regelmäßig (oder bei Bedarf) Pakete über das LAN an andere Netzwerkteilnehmer, um Veränderungen in der lokalen Version des Spiels mitzuteilen (wie etwa Spielzüge). Andere Rechner empfangen Pakete und führen entsprechende Berechnungen durch, die zu einem Update des Spielstatus führen und unter Umständen weitere Benachrichtigungen des Netzwerks nach sich ziehen. Damit die Synchronisation des Spiels garantiert werden kann, muss sowohl die Ankunft der Statusupdate-Pakete bei den anderen Rechnern gesichert als auch die Verzögerungszeiten (Latenz) bei der Paketauslieferung in Grenzen gehalten werden. Da LANs in ihrer Größe beschränkt sind (je nach Struktur sind auch LAN Parties mit mehr als 2500 Teilnehmern möglich), ergeben sich nur selten Probleme in Hinblick auf die Latenz. Ein Paketverlust ist hingegen nie auszuschließen. Benutzen zwei Rechner das gemeinsame Medium (das Kabel des LANs) gleichzeitig, so kollidieren die Pakete und zerstören sich gegenseitig. Damit Kollisionen reduziert werden, wird bei Ethernet das CSMA/CD-Verfahren angewendet: Jeder Rechner, der Pakete über das Netzwerk schicken will, überprüft zunächst die Leitung (Carrier Sense), ob nicht schon ein Paket übertragen wird. Ist das Medium unbenutzt, so sendet er sein Paket. Sollten nun trotzdem zwei Rechner das ungenutzte Medium benutzen wollen, und es kommt zu einer Kollision, so erkennen die beteiligten Rechner den Fehler (Collision Detection) und jeder wartet eine zufällige Zeit ab (damit eine erneute Kollision verhindert wird), bevor ein erneuter Versuch gestartet wird. Somit wird ein flüssiger Spielverlauf im Multiplayer-Betrieb nur selten gestört. Bei drahtlosen Netzwerken findet CSMA/CD keine sinnvolle Anwendung (siehe [Tan03]), da unter anderem viele Funkgeräte nicht gleichzeitig Senden und das Medium nach Kollisionen und Störungen abhören können (also halbduplex arbeiten). Daher wird versucht, Kollisionen vorausschauend zu vermeiden (CSMA/CA). Das Versenden der Pakete über Funk ist insgesamt viel unzuverlässiger als bei Kabelverbindungen, da Funkverkehr durch eine Vielzahl von Faktoren gestört und beeinflusst werden kann (anderer Funkverkehr, Hindernisse wie Wände). Typische maximale Spieleranzahlen im LAN-Bereich liegen bei 8 bis 16 Spielern (in seltenen Ausnahmen 32+, oder LAN-Parties im großen Stil). Mit der Etablierung des Internets ergab sich für Spieler von Mehrbenutzerspielen die Gelegenheit, eine enorm große Spielergemeinde zu erreichen. Mit Hilfe des Internets war es möglich, Mitspieler zu finden, die in der ganzen Welt verteilt waren. Sowohl durch Internet-Schnittstellen lokaler Spielsoftware (client-basierte Spiele) als auch über das World Wide Web selbst, in Form von browser-basierten Spielen, entstand eine neue Dimension der Mehrbenutzerspiele, die nun Spieleranzahlen im hohen tausendstelligen Bereich gestatteten. 26 Netzwerke, die Verteilungen der Spieler auf verschiedene Länder oder sogar Kontinente unterstützen, werden als Wide Area Networks bezeichnet. Wegen der teilweise sehr großen Distanzen zwischen den Teilnehmern eines WAN-Spiels, treten nun Faktoren wie Latenzzeiten verstärkt in den Vordergrund. Nicht nur der Umgang mit großen Distanzen (die meist durch sehr schnelle Verbindungen wie Glasfaserkabel überbrückt werden) ist dabei Ausschlag gebend, um eine gewisse Qualität bzw. eine akzeptable Ausführung des Spiels zu erreichen. Auch die so genannte letzte Meile, das heißt der Anschluss des Spielteilnehmers am Internet selbst kann eine einschneidende Limitierung darstellen. Dieser Zugriff eines Endnutzers auf das Internet kann auf vielfältige Weise erfolgen und mit unterschiedlichen Bandbreiten gestaltet sein. Im Rahmen dieser Diplomarbeit sind in erster Linie Verbindungen interessant, die den Zugriff von mobilen Geräten aus gestatten und somit Zugang zu Spielen mit vielen tausend Spielern verwirklichen können. Übertragungstechniken (wie Bluetooth Deshalb stehen oben erwähnte Funkund WLAN), die eine Verbindung zur Internetspielgemeinde herstellen können, im Mittelpunkt der nachfolgenden Kapitel. 2.2.2. Populäre Multiplayer-Genres Eine Umfrage bei etwa 11.000 Internetnutzern, die im Rahmen einer Bachelorarbeit [Schob03] der Carl von Ossietzky Universität Oldenburg auf mehreren deutschen Gaming- und Clan-Webseiten durchgeführt wurde, ergab, dass die beliebtesten Genres bei deutschsprachigen Spielern First Person Shooter (51.3% der Befragten), Rollenspiele (30.4%) und Strategiespiele (RTS 7.5%, andere Strategiespiele 7.1%) sind. Anhand der angemeldeten Spieler bei einzelnen Online-Spielen [GamSur05] ist ebenfalls ersichtlich, dass FPS und RPGs auch international einen großen Zulauf verzeichnen. Im MMOG-Bereich nehmen die Rollenspiele eine dominierende Position ein, wie die Anzahl der Teilnehmer ([MMOGChart]) an Online-Rollenspielen wie „World of Warcraft“ oder „LineAge II“ [LineAge2] zeigen. Für die nachfolgenden Untersuchungen im MMOG-Bereich werden daher im Wesentlichen MMORPGs betrachtet. 2.3. Einführung in den MMOG-Bereich Online-Spiele, die über das Internet abgewickelt werden unterliegen verschiedenen Problemen, die hauptsächlich in der Verzögerungszeit beim Datenaustausch über das Internet begründet sind. Abgesehen von geographischen Gegebenheiten und der 27 genutzten Bandbreite der Spielteilnehmer, entsteht bei massiven Multiplayerspielen vor allem ein erheblicher Verwaltungsaufwand der vielen tausend Spieler, der technisch gehandhabt werden muss (siehe z.B. Serverstatistiken von Eve Online [EveOnl06]). Um den Anforderungen der verschiedenen Online-Spiele gerecht zu werden, müssen demnach vor allem die verwendeten Netzwerkstrukturen und Verwaltungsmöglichkeiten der MMOGs untersucht werden. 2.3.1. Netzwerkstrukturen Client-Server-Systeme Die häufigsten eingesetzte Netzwerkstruktur für Onlinespiele (insbesondere MMOGs) im Internet ist das Client-Server-System. Hierbei steht ein ausgezeichneter Rechner, der Server, bereit und wartet auf die Kontaktaufnahme durch die anderen Rechner (Spielteilnehmer), die Clients. Der Server stellt den Clients einen Dienst zur Verfügung, der in Anspruch genommen werden kann. Für Mehrbenutzerspiele bedeutet dies speziell, dass Spielzüge wie Bewegungen und Aktionen der Spielfiguren, über das Netzwerk an den Server gesendet werden, der somit alle Anfragen zentral überprüfen und verwalten kann. Nach der Auswertung durch den Server wird der Client, also der jeweilige Spieler, entsprechend informiert und kann die Änderungen lokal darstellen. Abbildung 2.11: Client Server System Spielhersteller stellen der Online-Gemeinde Spielserver zur Verfügung, auf denen sich die lokal betriebene Spielsoftware einloggen kann (in manchen Fällen kann auch der Rechner 28 eines Spielers die Rolle des Hosts übernehmen). Die Server verwalten die komplette Spielwelt indem sie Anfragen der einzelnen Clients annehmen, auf Gültigkeit prüfen und in die Spielwelt integrieren. Anschließend wird der Client entsprechend benachrichtigt. Möchte beispielsweise ein Spieler auf ein Monster schießen, so sendet der Client Informationen über Position und Richtung des Geschosses an den Server. Der Server berechnet dann, ob der Schuss ein „Erfolg“ oder „Misserfolg“ war und informiert den Client über das Ergebnis. Die lokale Software kann dann entsprechend darstellen, ob das Monster getroffen wurde oder nicht (lokales Rendering). Da alle Aktionen eines jeden Spielers über den Server erfolgen, hängt der Spielfluss somit von der Verbindung des Clients zum Server, aber in erster Linie von der Rechenleistung und Bandbreite des Servers ab. Verzögerungen können also ebenfalls durch hohe Auslastungen der Server bedingt sein, die nicht immer alle Anfragen gleichzeitig beantworten können. Aus diesem Grund wird die Anzahl der Spieler pro Server begrenzt, und die Spieler werden auf verschiedene Server verteilt. Dies führt zur Aufteilung der Spielwelt in so genannte Shards6, das heißt in Kopien der Spielwelt, die parallel existieren, aber dessen Teilnehmer einer Kopie der Spielwelt nicht mit Teilnehmern einer anderen Kopie interagieren können [Wiki06a] (Ausnahme ist das Chatten zwischen Servern). Standardmäßige Client-ServerSysteme sind nicht gut skalierbar, da mit ansteigender Spielerzahl immer mehr Bandbreite beim Server benötigt wird: Angenommen jeder der n Netzwerkspieler schickt in gleichen Abständen eine Statusmeldung der Größe x an den Server. Dann hat der neue Gesamtstatus, der anschließend vom Server an alle n Teilnehmer zurückgeschickt wird eine Größe von n * x. Die benötigte Bandbreite beim Server steigt somit quadratisch (sofern keine Optimierungen an der Gesamtstatusmeldung vorgenommen werden, was die Situation zwar etwas verbessert, allerdings immer noch keine annehmbare Skalierbarkeit erreicht) [PeDo03]. Ein weiterer entscheidender Schwachpunkt des Client-Server-Ansatzes ist die Tatsache, dass ein Serverausfall (auch durch Einspielen eines Updates) bedeutet, dass kein Spiel während der Ausfallzeit möglich ist. Leider können oder wollen viele Spieler in einem solchen Fall nicht auf einen anderen Server ausweichen, da „ihr“ Server meist den Status und somit die Fähigkeiten des eigenen Charakters speichert, um ein Modifizieren (cheaten) dieser Daten offline von der Seite des Spielers aus zu vermeiden. Dynamische Spiel Updates sind in verschiedenen MMOGs versucht worden, doch als momentan nicht realisierbar abgelehnt worden. Dies wiederum ist jedoch ein wesentlicher Vorteil des Client-Server-Systems. Da die gesamte Kommunikation über den Server geschieht, der Berechnungen für die Spielwelt 6 engl. Scherben 29 durchführt und Inkonsistenzen ausgleicht, ist ein Cheating zumindest nur erschwert möglich - hauptsächlich durch die eben erwähnte Vorsichtsmaßnahme, den Status der Spieler online auf dem Server zu speichern. Um die Skalierbarkeit eines Client/Server-Systems zu verbessern, können auch softwareseitig Maßnahmen getroffen werden, die das Nachrichtenaufkommen und somit die Gesamtlast reduzieren. Peer-to-Peer Systeme Neben der zentralisierten Variante, existiert ein dezentrales Netzwerk-System, dass als Peer-to-Peer (P2P) bezeichnet wird. Bei P2P-Systemen sind alle Rechner gleich berechtigt und können Dienste wie ein Server anbieten, aber auch Dienste von anderen „Peers“ in Anspruch nehmen. P2P auf Multiplayerspiele angewendet bedeutet dann, dass jeder beteiligte Rechner die Spielwelt selbst berechnen muss. Somit muss gewährleistet sein, dass jeder einzelne Peer entweder die komplette Spielwelt oder zumindest die für ihn relevanten Teile hält. Abbildung 2.12: Peer to Peer System (Beispiel von 4 Clients) Update-Nachrichten werden an alle beteiligten Peers gesendet, wobei jeder einzelne Peer für die korrekte Berechnung der Spielwelt verantwortlich ist. Dadurch wird die Handhabung von Inkonsistenzen erschwert und im Gegenzug die Chancen einer Manipulation erhöht (siehe hierzu MiMaze [MiMaze06], die erste wirklich skalierbare Implementation einer P2P Variante, die auch cheating-protection enthält). Da die Kommunikation nicht über einen Server erfolgt, können Latenzen zwischen Teilnehmern reduziert werden und man umgeht den Schwachpunkt, dass ein Serverausfall auch den Ausfall eines Spiels bedeutet. Die begrenzte Bandbreite des 30 Servers als Flaschenhals entfällt ebenfalls, da die Bandbreite auf die Peers „verteilt“ wird. Da immer mehr Internetnutzer Breitbandanschlüsse nutzen, sind P2P-Systeme daher im Vergleich zum Client-Server-Ansatz in diesem Sinne besser skalierbar. P2P-Systeme sind im Multiplayerbereich bisher kaum vertreten. Dies liegt einerseits an der teilweise schwierigen Implementierung (zum Beispiel Vermeidung von Inkonsistenzen), andererseits ist es schwierig, ein geeignetes Abrechnungssystem für kostenpflichtige Spiele zu integrieren (es ist bisher nicht möglich). [PeDo03] Ein Hybrid-Ansatz: P2P mit Central Arbiter Die Vorteile der Client-Server-Systeme (Konsistenzverwaltung) und P2P-Netzwerke (geringere Latenzen) werden in dem in [PeDo03] vorgestellten Hybrid-System „Peer-toPeer with Central Arbiter“ vereint. Die hauptsächliche Struktur ist dabei ein P2P-Netzwerk, welches um einen zusätzlichen Knoten, den Central Arbiter (CA), erweitert wird. Die Nachrichten werden an alle Peers und den CA geschickt. Der CA verhält sich dabei wie ein Zuhörer des Netzverkehrs und simuliert anhand der gelieferten Nachrichten die Spielwelt. Die Peers berechnen den Zustand der Spielwelt weiterhin selbst. Wird eine Inkonsistenz vom CA festgestellt, so werden alle Peers davon informiert und die lokal berechneten Spielwelten müssen unter Umständen korrigiert werden. Abbildung 2.13: Peer to Peer mit Central Arbiter (4 Clients, 1 Arbiter) Tests einer Implementierung dieses Systems haben gezeigt, dass die Bandbreitenanforderungen bei einem Inkonsistenzausgleich von 50% (das bedeutet, jedes zweite Update der Spielwelt wird als inkonsistent erkannt) beim CA linear mit der 31 Anzahl der Spieler steigen, während in einem echten Client-Server-System unter gleichen Bedingungen quadratische Auslastungen beobachtet wurden. 2.3.2. Beeinflussung der Spielbarkeit Die in 2.3.1 angesprochene Skalierbarkeit der Netzwerkstrukturen ist im MMOG-Bereich von entscheidender Bedeutung. Während im normalen Multiplayerbetrieb mit bis zu 16 Spielern, etwa bei First Person Shootern, ein einziger Server ohne Probleme das Spiel hosten kann, benötigen Spiele mit mehreren tausend Spielern erheblich mehr Aufwand. Browser-basierte MMOGs sind nur selten streng zeitkritisch und das Spielgeschehen wird meist über übliche Datenbanken gesteuert. Ein Anbieter eines browser-basierten MMOGs hat somit kaum einen größeren technischen Aufwand als eine populäre dynamische Website zu bewältigen. Die meisten client-basierten Onlinespiele hingegen, also Spiele, die eine lokale Software benötigen, beruhen auf dem Client-Server-Prinzip, so dass der Betreiber zur Unterhaltung einer MMOG-Spielergemeinde von mehreren hunderttausend Teilnehmern, über regelrechte „Serverfarmen“ verfügen muss. Die Auslastung bei (zeitkritischen) Spielen wird dann auf verschiedene Server verteilt. Um eine gemeinsame Spielwelt zu simulieren, gibt es die Möglichkeit, die Welt in Zonen aufzuteilen, die jeweils einem Server zugeteilt werden. Jeder Server hält dann einen virtuellen geographischen Teil des Gesamten und wird nicht zu schnell überfordert (die Unterteilung der Welt geschieht nicht immer nur nach Zonen, manchmal auch nach Instanzierung oder dynamischen Auslastungsverfahren). Verlässt ein Spieler eine Zone, so kann eine Übergabe zum nächsten Server, also der nächsten Zone, erfolgen. Da dieser Handover den Aufbau einer Verbindung zu einem anderen Server bedeutet, kann es hier allerdings zu einer längeren Wartezeit kommen, die den Spielfluss merklich bremst. Können aufgrund mangelnder Kapazität nicht alle Spieler in einer Zone teilnehmen, so bleibt immer noch die Aufspaltung der Welt in „Shards“. Der Unterschied zu Servershards besteht allerdings hierbei darin, dass die Spieler in der Lage sind im Laufe der Zeit die Shards zu wechseln. Gruppen werden gegebenenfalls nicht getrennt und die Kommunikation ist über einen gemeinsamen Zonen-Channel gegeben. 32 Abbildung 2.14: Zonenserver (4 Zonenserver, 1 Hauptserver, 3 Beispiel-Clients) Abbildung 2.14 illustriert ein mögliches Zonenserversystem. Die Clients 1 und 2 sind beim ersten Server angemeldet, während Client 3 über den vierten Server spielt. Sollte der Spieler auf Client 3 seine Zone verlassen (zum Beispiel dargestellt durch das Verlassen einer Stadt der Spielwelt), so regelt der Hauptserver, welche Zone, also Server, als nächstes für Client 3 zuständig ist. Latenz und Round Trip Time Da wegen der oben beschriebenen Gründe fast ausnahmslos Client-Server-Systeme eingesetzt werden, ist die Round Trip Time7 ein wichtiger Faktor für die Spieler. Ursachen einer schlechten Verbindung zum Server und hoher Latenzzeiten sind beispielsweise 7 zu große Distanz zum Server zu hohe Server- oder Netzauslastung (siehe Artikel [GaStar06]) zu langsamer Internetzugang („letzte Meile“) Zeit, die ein Datenpaket von der Quelle zum Ziel und zurück benötigt 33 Um große Entfernung zum Spielserver zu vermeiden, werden häufig geographisch verteilte Zugangspunkte zum Spiel angeboten. Beliebte Spiele (z.B. EverQuest [EverQu99], World of WarCraft [WoW04]), die in den USA ihren Ursprung haben, sind meist auch durch einen oder mehrere Servercluster in Europa und Asien vertreten (siehe dazu Abschnitt 2.3.3) Auch das Problem des langsamen Internetzugangs verschwindet zunehmend. Laut Statistik der Bundesnetzagentur des Jahres 2005 [BuNetz05] verfügen bereits 27% der deutschen Haushalte über einen DSL-Anschluss (im Vergleich zu 17% im Jahr 2004). Im Bereich mobiler Endgeräte hingegen ist der Anschluss zum weltweiten Netz immer noch ein Faktor, der die Spielfreude erheblich beeinflussen kann. Zwar ist durch Techniken wie GPRS, welches in etwa Datenraten eines Modems ermöglicht, und vor allem UMTS mit Transferraten bis 384 kbit/s theoretisch genug Bandbreite für die Beteiligung an Onlinespielen gegeben, allerdings hängt die Konnektivität auch von der Infrastruktur der mobilen Umgebung ab (plus eventuellen Hindernissen der mobilen Umgebung, die die Ausbreitung der elektromagnetischen Wellen behindern). Auslastung der Funkzelle, Entfernung und Sicht zu den Antennen, sowie schnelle Bewegung des Benutzers und Handovers in eine andere Zelle (sofern kein Soft Handover unterstützt wird) sind störende Größen (siehe nächstes Kapitel). Ferner sind die Gebühren für die mobile Internetnutzung noch (Stand April 2005) sehr hoch und verschrecken viele Hobbyspieler (Beispiel Japan: umgerechnet 10 Euro pro übertragenem MB Daten). Die Frage nach der maximalen Latenz, die ein Onlinespiel noch „erträglich“ durchführbar macht, ist bei zeitkritischeren Spielen wie FPS noch strenger zu bewerten als bei Rollenspielen (allgemeinen Papers zufolge hat man sich bei RTS und FPS auf einen maximalen Wert von 150ms, bei RPGs in einem Bereich um 350-500ms geeinigt). Da aber auch Rollenspiele immer zeitnaher durch aufwendige 3D-Grafik dargestellt werden und Kämpfe schnelle Reaktionsfähigkeit verlangen sollen, zeigen MMORPGs mittlerweile ähnliche Toleranzschwellen bezüglich der Ping-Zeiten. Abbildung 2.15 zeigt beispielhaft auf, wie die Spielbarkeit bei Quake 3 [Quake3], gemessen an der Anzahl der Frags, das heißt der „getöteten Mitspieler“, bei zwei verschiedenen Serverstandorten mit steigender RTT, immer weiter sinkt [OpScore05]. 34 Abbildung 2.15: Beziehung Frags pro Minute zu Ping-Zeiten (Quake III Deathmatch mit äquivalenten PCs) Paketverluste Der Verlust eines Paketes kann kurzzeitig falsche Darstellungen in der Spielwelt oder in der Wahrnehmung des Spielers bewirken. Die Spielserver können dem teilweise entgegenwirken, indem sie bei einem Paketverlust anhand der zuletzt gelieferten Daten die wahrscheinlich folgenden Bewegungen und Aktionen des Spielers voraussagen (Dead Reckoning). Sollten diese Berechnungen jedoch falsch sein, so muss die Position des Spielers nachträglich korrigiert werden (dynamische Prediktion), so dass unnatürliche Änderungen an der Spielwelt vorgenommen werden (plötzliche Änderung der Position). Besonders ärgerlich bei FPS ist der Verlust von Paketen, die einen Schuss auf ein Objekt an den Server melden sollen. Der Spieler erkennt lokal, dass das Objekt getroffen wurde, erhält aber keine Bestätigung vom Server und somit auch keinen „Score“. Jitter Jitter8 ist ein weiterer unerwünschter Effekt, der die Spielbarkeit merklich beeinflussen kann. Darunter versteht man die Varianz der Latenz, also Schwankungen in den Verzögerungszeiten. 8 Jitter (engl.): Schwankung 35 Würden die Latenzen halbwegs konstant bleiben, so könnten Spieler die Verzögerungen, die durch das Netzwerk entstehen in das eigene Spiel einbauen, indem Sie die Bewegungen der Gegenspieler antizipieren und somit in Shootern zum Beispiel nicht direkt auf ihre Gegner schießen, sondern in ihre Laufbahn zielen (Vorhalten oder PreAiming). Starker Jitter macht diese Möglichkeit zunichte. Die Entstehung von Jitter kann viele Ursachen haben, wie die Verwendung unterschiedlicher Routingwege oder eine schwankende Auslastung des eigenen Internetanschlusses, wenn zusätzlicher Hintergrund-Traffic durch weitere Internetnutzer (durch LANs) oder Prozesse vorhanden ist (besonders durch das Verwenden von P2P Sharing Tools wie Edonkey, Emule oder Morpheus kann auch begrenzter Upload dazu führen, dass Antworten nicht vollständig oder stark verzögert empfangen werden). Ein sehr starkes Jittering kann einen ähnlichen Effekt wie ein Paketverlust erzeugen: werden Pakete zum Server nicht rechtzeitig ausgeliefert (Updates werden in einem vorgesehenen Intervall angenommen), so kann dieser die Datenpakete im schlimmsten Fall gänzlich ignorieren [OpScore05]. 2.3.3. Fallbeispiel: World of WarCraft Zum Abschluss dieses Kapitels wird kurz ein Spiel aus dem MMORPG-Bereich als reales Beispiel der genannten Techniken vorgestellt. Dabei handelt es sich um das im Jahr 2005 erschienene Spiel „World of WarCraft“, das im ersten Jahr weltweit über 5 Millionen Mal verkauft wurde, aktuell mehr als 6 Millionen Mitspieler besitzt und damit das zweit meist gespielte MMORPG der Welt ist. Spielablauf Jeder Spieler muss sich zunächst für eine Fraktion entscheiden, Allianz oder Horde, wobei anschließend je nach Fraktion eine Rasse (zum Beispiel Menschen, Zwerge, Orks) und Klasse (zum Beispiel Magier, Jäger, Krieger) für den eigenen Charakter gewählt wird. Die Spielwelt selbst besteht aus zwei Kontinenten, auf denen verschiedene Dörfer und Städte zu finden sind, die bereist werden können. Durch Bestreiten diverser Missionen (Quests) und Kämpfe kann der Spieler Erfahrungspunkte sammeln und so die Fähigkeiten seines Charakters weiterentwickeln. Das Spiel unterstützt vier verschiedene Modi. Im PvE-Modus (Player versus Environment) liegt der Schwerpunkt auf der Erkundung der Umgebung und das Bekämpfen gegnerischer Spieler, das heißt Spieler einer anderen Fraktion, ist nur möglich, wenn 36 beide Spieler einem Duell zustimmen. Das Hauptziel des späteren PvE-Spiels besteht im so genannten Raiding9 (40 Spieler versuchen zusammen starke Dungeons zu bezwingen). Im PvP-Modus (Player versus Player) besteht die Gefahr häufigerer Kämpfe. Die Welt ist im PvP-Modus in 3 Zonen eingeteilt: freundlich, feindlich und umkämpft. In freundlichen Gebieten kann man selbst nicht angegriffen werden, kann aber feindliche Gegner attackieren. In feindlichen Gebieten kann man hingegen ständig attackiert werden, selbst aber keinen Kampf starten. Die umkämpften Gebiete erlauben zu jeder Zeit einen gegenseitigen Angriff. Der RP-Modus (Role Playing Modus) stellt die Rolle des eigenen Charakters in der virtuellen Spielwelt in den Vordergrund. Jeder Charakter hat seine eigene Geschichte und es wird darauf geachtet, dass eine angemessene Rollenspiel-Verhaltensweise und Sprache verwendet wird. Dies kommt dem ursprünglichen Gedanken eines Rollenspiels am nächsten. Der vierte Modus, RP-PvP, entspricht einem PvP-Modus mit den Eigenschaften eines RP-Spiels. Insgesamt kann jeder Spieler mehrere Charaktere (maximal 10 pro Spielwelt) erzeugen. Eine derartige Aufteilung der Spielwelt wird als Individualisierung der Shards bezeichnet und bietet der Zielgruppe genauere Informationen über die Spielwelt. In extremen Fällen können grundsätzliche Regeln einer Spielwelt komplett verschieden im Vergleich zu „normalen“ Shards sein. [Wiki06b] Server World of WarCraft benutzt verschiedene Serverstandorte, wie beispielsweise Servercluster in Europa oder den USA. Die Server werden auch als Realms bezeichnet. Ein Spieler kann sich bei einem der vielen Realms anmelden, die sich durch oben beschriebene Spielmodi oder unterstützter Sprache unterscheiden können. Es befinden sich im Durchschnitt etwa 2.500 Spieler gleichzeitig auf dem US-Server (Abbildung 2.16 nach [WRealms06]). 9 Raiding (engl.): überfallen 37 Abbildung 2.16: Durchschnittliche WoW-Spieleranzahl in 24 Stunden auf den US-Servern 38 3. Mobile Netzwerke “Never trust a computer you can’t throw out a window.” – Steve Wozniak, Gründer von Apple Kommunikation mit mobilen (und insbesondere drahtlosen) Geräten ist auf zwei erdenkliche Weisen möglich: durch die Bildung eines Netzwerks mit Hilfe einer gegebenen Infrastruktur unter Verwendung zusätzlicher Hardware (zum Beispiel über „Hot Spots“, also Access Points) oder die spontane Vernetzung unter den Geräten selbst zu einem Ad-Hoc Netzwerk. Bei gegebener Infrastruktur können dann etwa Anschlüsse zu weiteren Netzen, wie dem Internet, hergestellt werden. Im Gebiet der mobilen Multiplayerspiele sind Ad-Hoc Netze von besonderem Interesse, wenn man an Szenarien wie das Bilden einer spontanen Spielgemeinschaft etwa beim Warten am Bahnhof oder in der Pause auf dem Schulhof denkt. Jedoch kann mit der immer weiter verbesserten Infrastruktur und besseren Übertragungstechniken wie etwa UMTS oder der großen Verbreitung von WLAN Hot Spots das Internet in naher Zukunft jederzeit und fast überall mit für Spiele annehmbaren Datenraten zugänglich gemacht werden und daher Zugang zu beliebig großen (wenige Spieler bis hin zum MMOGBereich) Spielgemeinschaften ermöglichen. Der Anschluss der mobilen Geräte an einen Zugangspunkt der Infrastruktur erfolgt über unterschiedliche Übertragungstechniken. Die Infrastruktur kann dann nicht nur ein lokales Netz für die mobilen Knoten aufspannen, sondern auch eine Schnittstelle zu einem WAN darstellen. Der Zugriff auf einen solchen Access Point (kurz AP), geschieht entweder durch eine entsprechende Verkabelung (zum Beispiel Ethernet) oder aber über drahtlose (wireless) Verbindungen. Drahtlose Kommunikation bietet ein weitaus höheres Maß an Mobilität, so dass nachfolgende Abschnitte sich auf die bedeutendsten Funkübertragungstechniken und Protokolle der mobilen Kommunikation beschränken. 39 3.1. Übertragungstechniken 3.1.1. Bluetooth (802.15) Geschichte Die Motivation hinter der Bluetooth-Funktechnik war die Abschaffung kurzer Kabel zur einfachen Vernetzung von Geräten. Bereits 1994 von Ericsson entwickelt, wurde die Grundlage zur weiten Verbreitung der Bluetooth-Technik erst mit der Gründung einer Special Interest Group (SIG) durch mehrere Unternehmen (Ericsson, IBM, Intel, Nokia, Toshiba) im Jahre 1998 geebnet [Wiki06c]. Wenig später beschäftigte sich auch das IEEE-Gremium mit dieser Technik und genehmigte 2002 den Standard 802.15.1, ein Standard für WPANs auf Basis von Bluetooth [IEEE02]. Technik Bluetooth nutzt für den Funkverkehr das lizenzfreie ISM-Band10 im Bereich von 2,4GHz. Da unter anderem WLANs diesen Frequenzbereich nutzen, können Störungen verursacht werden. Um dem entgegen zu wirken, verwendet Bluetooth das Frequency Hopping Verfahren, bei dem das gesamte Frequenzband in 79 Kanäle zu je 1MHz aufgeteilt wird und verwendete Kanäle ständig gewechselt werden (1600 Sprünge pro Sekunde). Dieses schnelle Umschalten sorgt allerdings dafür, dass der Bluetooth-Verkehr eher den anderen Verkehr stört, als selbst gestört zu werden [Tan03b]. Es gibt verschiedene Klassen von Bluetooth-Modulen, die verschiedene Sendeleistungen anbieten, mit denen Reichweiten von 10-100m ansprechbar sind. Es werden sowohl synchrone als auch asynchrone Übertragungen unterstützt. Im asynchronen Modus kann eine symmetrische Übertragung mit maximal 433,9 kbit/s erfolgen und eine asymmetrische Übertragung mit maximal 723,2 kbit/s in die eine und 57,6 kbit/s in die andere Richtung. Im synchronen Betrieb, der für die Übertragung von Sprache gedacht ist, stehen bis zu 3 Kanäle zur Verfügung mit einer symmetrischen Übertragungsrate von je 64 kbit/s. Durch das EDR-Verfahren, eine Technik, die andere Modulationsverfahren einsetzt, sind sogar Brutto-Übertragungsraten von 2 oder 3 Mbit/s möglich. Architektur Bluetooth-Geräte sind Teil eines oder mehrerer Piconetze, die jeweils maximal 8 Knoten unterstützen. Ein ausgewählter Master-Knoten regelt dabei, welcher Slave-Knoten wann, 10 Industrial, Scientific and Medical Band 40 das heißt in welchem Zeitschlitz, übertragen darf und gibt die Sprungsequenzen des Frequency Hoppings vor. Um mehrere Piconetze über Bluetooth zu realisieren, kann ein Knoten, ein so genannter Bridge-Slave, eine Brücke zwischen zwei Netzen bilden. Das Benutzen des Master-Slave-Systems ist unter anderem darauf zurückzuführen, dass Module besonders preiswert angeboten werden sollten. Da ein Slave-Modul nicht allzu viel Komplexität verlangt, können diese sehr billig produziert und angeboten werden. Es sei noch angemerkt, dass die gebildeten Piconetze zwar einem Ad-Hoc Netzwerk entsprechen, allerdings wäre auch eine Bluetooth-Kommunikation im Infrastruktur-Modus denkbar (Bluetooth-HotSpots für Handybesitzer). 3.1.2. Wireless LAN (802.11) Geschichte Mit der Entwicklung des Computermarktes hin zu mobilen Endgeräten entstand auch die Nachfrage nach einer Netzwerkanbindung der neuen Notebooks und PDAs. Man stellte sich vor, wie praktisch es wäre, wenn diese Geräte automatisch eine Netzwerkverbindung herstellen würden, wenn man seinen Arbeitsplatz wechseln würde. Dies führte zur Entwicklung der drahtlosen LANs, deren Standardisierung durch das IEEE-Gremium 1997 durchgeführt wurde. Der erste Standard mit der Bezeichnung 802.11 erreichte Datenraten von zunächst 1 Mbit/s. Da dies für viele Ansprüche nicht genügte, entstanden aus diesem ursprünglichen Standard 1999 zwei neue Standards, die als 802.11a und 802.11b bekannt sind. 802.11g ist ein weiterer Standard, der Techniken der beiden anderen Standards verbindet. [Tan03c] Technik Auch WLAN benutzt das ISM-Band im Bereich von 2,4GHz. Dieser Frequenzbereich wird abgesehen von Bluetooth auch von anderen Quellen wie Mikrowellen gestört. Die Technik, die bei 802.11a Übertragungsraten bis zu 54 Mbit/s bereitstellt, beruht auf der Verwendung eines breiteren Frequenzbandes und eines Frequenzmultiplex-Verfahrens (OFDM, Orthogonal Frequency Division Multiplexing) und arbeitet im 5GHz Band. Der Standard 802.11b hingegen benutzt ein anderes Modulationsverfahren und erzielt Datenraten bis 11 Mbit/s. Architektur Der Standard 802.11 funktioniert sowohl im Ad-Hoc-Modus als auch über eine Basisstation. Wie im vorherigen Kapitel erwähnt, gibt es bei Funknetzwerken im Gegensatz zu „verkabelten“ Netzwerken wie Ethernet, einige Probleme. Das Hidden- 41 Station Problem kann auftreten, wenn zwei Stationen nicht in Funkreichweite sind und gleichzeitig zu einer dritten Station senden wollen, die im Funkbereich beider liegt. Da die beiden Stationen sich gegenseitig nicht empfangen können, gibt die Prüfung des Mediums durch eine Station „grünes Licht“ zum Senden an die dritte Station. Wenn diese aber schon mit der Hidden Station kommuniziert, bleibt das Senden erfolglos. Ein anderes Hindernis des Funkverkehrs sind Situationen, in denen das Medium scheinbar belegt ist. Wenn nun aber zwei unbeteiligte Stationen kommunizieren, so wäre eigentlich ein Austausch zwischen zwei anderen Stationen möglich. Ferner arbeiten die meisten Funkmodule nur halbduplex, so dass ein gleichzeitiges Senden und Abhören des Kanals auf eventuelle Kollisionen meist nicht möglich ist, so dass im Standard 802.11 das CSMA/CA-Verfahren Anwendung findet. 3.1.3. GSM und GPRS Geschichte GSM (zuerst benannt nach der Arbeitsgruppe Groupe Spécial Mobile, seit 1991 bekannt als Global System for Mobile Communications) war der erste digitale Mobilfunk-Standard, der nach der analogen Technik der ersten Generation folgte. Er ist (Stand April 2006) der am weitesten verbreitete Standard und ist mit wenigen Ausnahmen (zum Beispiel Japan) in den meisten Ländern mit einem Gesamtanteil von etwa 78% aller Mobilfunkkunden vertreten. Trotz digitaler Technik, war GSM zunächst hauptsächlich für Sprachübertragung gedacht. Der rasante Aufstieg des Internets sorgte dafür, dass GSM nun auch „webtauglich“ gemacht werden sollte und einige Erweiterungen erfuhr. Diese Erweiterungen, wurden anschließend durch den Begriff 2,5G beschrieben, der einen Schritt in Richtung der Mobilkommunikation der dritten Generation bezeichnen sollte. Um Internet auf dem mobilen (Sprach-)Netz durchzusetzen, wurde ein paketvermittelter Dienst aufgesetzt, der General Packet Radio Service. [Wiki06d] Technik GSM benutzt Frequenzen im Bereich von 450MHz bis 1900 MHz, wobei in Europa insbesondere Frequenzen um 900 MHz (GSM 900) und 1800 MHz (GSM 1800) verwendet werden. Die Frequenzen werden in Bändern zu je 200 kHz eingeteilt, wobei für eine Kommunikation eines Endteilnehmers ein Uplink-Kanal zur Basisstation und ein niederfrequenter Downlink-Kanal benutzt wird (bei GSM 900 124 Kanäle à 200 kHz pro Richtung). GSM verwendet außerdem ein Zeitmultiplexing, so dass pro Kanal acht unterschiedliche Zeitschlitze existieren. Pro Kanal ist eine Übertragungsrate von 270.833 42 Bit/s möglich, das entspricht pro Zeitschlitz 33,854 kbit/s. Nach Abzug des Overheads und der Fehlerkorrektur erhält man eine Nettorate von etwa 13 kbit/s für die Sprachübertragung. [Tan03d] Im Bereich der Datenübertragung sind Datenraten von 9,6 kbit/s bis 14,4 kbit/s üblich. Für viele Internetanwendungen wie Videostreaming sind solche Datenraten zu gering, so dass andere Lösungen her mussten. GPRS ist ein paketorientierter Dienst, der die 8 zur Verfügung stehenden Zeitschlitze dynamisch nutzt. Ist die Auslastung eines Kanals nicht zu hoch, so ist es leichter, entsprechende Zeitschlitze bereit zu stellen, so dass mehrere Teile des Pakets „parallel“ gesendet werden können. In der Praxis werden meist bis zu 4 Zeitschlitze gleichzeitig für den Download und 2 Zeitschlitze für den Upload angeboten. Bei geringer Netzauslastung ist daher eine maximale Datenrate von 53,6 kbit/s realistisch. Die Reichweite von GSM kann zwischen wenigen hundert Metern und über 30km schwanken, je nachdem wie die Sichtverhältnisse der Umgebung sind. [Wiki06e] Architektur Möchte eine mobiles Endgerät (Mobile Station) über GSM kommunizieren, so muss es sich in einer Funkzelle, also „in der Nähe“ der Antennen einer Basisstation (Base Transceiver Station), befinden. Die Basisstation und ihre Steuereinheit (Base Station Controller) werden als Base Station Subsystem bezeichnet. Der Übergang vom Funkverkehr in das Festnetz wird dann von der Vermittlungsstelle, dem Network Subsystem bewerkstelligt. Bei GPRS übernimmt hier eine andere Einheit (Serving und Gateway GPRS Support Node) den Übergang in ein paketbasiertes Netz (Internet). 3.1.4. UMTS Geschichte UMTS (Universal Mobile Telecommunications System) ist ein Mobilfunk-Standard der dritten Generation (3G). Der globale Standard IMT-2000 [IMT2000] wurde Anfang der 90er Jahre vorgestellt und formulierte einige Anforderungen an Mobilkommunikationssysteme der dritten Generation, wie beispielsweise eine gewisse Bandbreite (ursprünglich geplant: 2 Mbit/s), die Multimediaanwendungen des Internets ermöglichen kann. Die neue Technik entfachte eine Euphorie bei den Mobilfunkanbietern, die scheinbar eine enorme Umsatzquelle gefunden hatten. Die Verteilung der vorhandenen UMTS- 43 Frequenzen an die Anbieter der verschiedenen Länder geschah entweder durch Bewerbungen der verschiedenen Mobilfunkanbieter („Schönheitswettbewerb“) oder – wie in Deutschland – in Form einer Versteigerung. So kam es im August 2000 zur „teuersten Auktion der deutschen Wirtschaftsgeschichte“ [FAZ05], in der sechs Unternehmen Lizenzen im Wert von etwa 100 Milliarden Deutschen Mark ersteigerten. Leider entwickelte sich der UMTS-Markt in den folgenden Jahren nicht so schnell und stark wie erwartet und erst Ende 2003 wurden die ersten Gebiete mit UMTS ausgestattet. Auch wenn die Infrastruktur weiterhin verbessert wird, so ist UMTS für die meisten privaten Anwender aufgrund der hohen Preise derzeit uninteressant. Die Frage, ob sich die Telekommunikationsunternehmen bei der Ersteigerung verspekuliert haben, ist demnach mehr als berechtigt, insbesondere in Anbetracht der Tatsache, dass das der Wunsch nach einem „allgegenwärtigen“ Internet unter Umständen durch schnellere Techniken wie WLAN, falls es Flächen deckender eingesetzt wird, verwirklicht werden kann. Technik Die verwendete Übertragungstechnik bei UMTS ist das Codemultiplex-Verfahren WCDMA (Wideband Code Division Multiple Access), bei dem ein Frequenzband von mehreren Teilnehmern gleichzeitig benutzt wird und die einzelnen Benutzer Nachrichten, die für sie bestimmt sind, anhand eines orthogonalen Codemusters zurückgewinnen können. Durch die „Spreizung“ des Signals wird die Übertragung nicht mehr all zu sehr durch starke schmale Störimpulse gestört. UMTS gibt es in zwei Varianten. Der FDD-Modus (Frequency Division Duplex) hält je einen Kanal für den Downlink (im Bereich 2.110 MHz – 2.170 MHz) und den Uplink (im Bereich 1.920 MHz – 1.980 MHz) bereit. Im TDD-Modus (Time Division Duplex, 1.900 MHz – 1.920 MHz und 2.020 MHz – 2.025 MHz) senden mobiler Endteilnehmer und Basisstation Zeit versetzt in der gleichen Frequenz. Die Datenübertragungsrate hängt wieder von verschiedenen Faktoren ab, wie der Auslastung der Funkzelle und der Bewegung des Endteilnehmers. Um den Ansprüchen des ursprünglichen Standards gerecht zu werden, sollte eine Rate von 2 Mbit/s angestrebt werden. In der Praxis können UMTS-Kunden in einem FDD-Netz Datenraten bis zu 384 kbit/s erhalten. TDD kann zwar noch höhere Übertragungsraten erzielen, wird aber bisher kaum eingesetzt. T-Mobile beispielsweise erhält mit einem UMTS-TDD-Netz in Tschechien Geschwindigkeiten bis zu 4,5 Mbit/s. Allerdings lag die durchschnittliche Übertragungsrate mit 512 kbit/s deutlich niedriger. [Telek05] 44 3.1.5. WMAN (802.16) WMAN steht für Wireless Metropolitan Area Networks und beschäftigt sich mit Breitbandanschlüssen, die drahtlos in größeren Reichweiten, wie einem gesamten Stadtbereich, verfügbar und zum Beispiel eine Alternative zu DSL auf der „letzten Meile“ sein sollen. Viele Regionen sind immer noch nicht mit DSL Anschlüssen versorgt und durch WMAN soll eine kostengünstige Alternative entstehen, die keiner teuren Infrastruktur (Verkabelung) bedarf. Die Arbeitsgruppe IEEE 802.16 entwickelt diverse Standards im WMAN-Bereich, der auch als WiMAX (Worldwide Interoperability for Microwave Access) bekannt ist. Zunächst für den Anschluss stationärer Teilnehmer gedacht, wird seit Juli 2002 im Standard 802.16e versucht, WiMAX auch für mobile Benutzer zugänglich zu machen. Es wird erwartet, dass innerhalb einer Reichweite von 3 km eine Bandbreite von 15 Mbit/s oder mehr für mobile Kommunikation realistisch ist und im Jahr 2007 erste HandheldComputer mit entsprechenden Funkkarten ausgestattet werden [WiMAX06]. Eine weitere Arbeitsgruppe der IEEE arbeitet an dem Standard 802.20, der vergleichbar mit 802.16e ist, allerdings in einem anderen Frequenzband sendet und Übertragungsgeschwindigkeiten im DSL-Bereich auch bei schnellen Bewegungen bis zu 250km/h bieten soll. [802.20] Ob 802.16e oder 802.20 eine Alternative, Ergänzung oder sogar bessere Lösung als UMTS darstellt, ist eine heftige Diskussion, die wohl erst in den nächsten Jahren gelöst werden kann. Eine sachliche Einschätzung des mobilen WMAN scheint derzeit nicht möglich, wenn man bedenkt, dass Unternehmen, die Milliarden teure Lizenzen ersteigert haben, nicht einfach UMTS fallen lassen werden, um auf die nächste Technik „aufzuspringen“ und daher UMTS vehement verteidigen. 3.2. Beeinflussung drahtloser Kommunikation Zwar können „verkabelte Systeme“ ebenfalls gestört oder unterbrochen werden, allerdings ist die Beeinflussung der drahtlosen Kommunikation durch verschiedene Störgrößen ungleich größer. Die Garantie einer gewissen Bandbreite (und vor allem der Erhalt der Verbindung mit einem drahtlosen Endgerät selbst) ist von Faktoren verschiedener Natur abhängig, von denen im Folgenden einige aufgezeigt werden. 45 3.2.1. Netzauslastung und Zellatmung Bei Systemen, die mehrere Teilnehmer durch Zeit- und Frequenzmultipexing verwalten, existiert das offensichtliche Problem, dass auch die Anzahl der Kanäle oder Zeitschlitze begrenzt ist und eine hohe Teilnehmeranzahl in einer Funkzelle dazu führen kann, dass keine Verbindung hergestellt werden kann oder sogar Verbindungen abgebrochen werden, wenn Anforderungen höherer Priorität wie Notrufe bereits verbundene Nutzer verdrängen. Bei GPRS drohen bei hoher Netzlast Einbrüche der Datenrate, da weniger Zeitschlitze für Datenpakete zur Verfügung stehen. Bei Codemultiplex-Systemen wie UMTS tritt ferner das Problem der so genannten Zellatmung auf. Da beim CDMA-Verfahren alle Signale „gemischt“ übertragen werden, wird das gesamte Rauschen mit jedem Teilnehmer einer Funkzelle stärker. Um weiterhin das Nutzsignal vom restlichen Rauschen unterscheiden zu können, wird die Übertragung der Endgeräte verstärkt. Da alle Endgeräte die Sendeleistung der Funkzelle teilen, kann die Kapazität der Funkzelle bei vielen Teilnehmern bereits erschöpft sein und Teilnehmer, die sich am Rand der Funkzelle befinden, werden nicht mehr versorgt. Die Funkzelle „schrumpft“ und „wächst“ daher mit der Anzahl der Teilnehmer. 3.2.2. Ausbreitung der Funksignale Leider ist es in einer realen Umgebung sehr unwahrscheinlich, dass Signale genau in der Form bei mobilen Empfängern ankommen, in der sie auch vom Sender losgeschickt wurden. Während die Empfangsleistung im freien Raum bereits quadratisch mit dem Abstand des Senders zum Empfänger abnimmt, können weitere Faktoren wie Reflektionen, Beugungen und Streuungen an Gebäuden und anderen Hindernissen die Leistung weiterhin schmälern. Durch diese „Störgrößen“ kann es zu Überlagerungen des Signals beim Empfänger kommen, da die Funkwellen teilweise mehrfach und je nach Wegewahl phasenverschoben eintreffen. Auftauchende Probleme in der Empfangsleistung können sich in „kurzzeitigen Einbrüchen“ (fast fading, durch Überlagerung der phasenverschobenen Signale) oder „langsamen Veränderungen“ (slow fading, zum Beispiel durch allmählich zunehmende Entfernung zum Sender) äußern [Schiller05]. Obwohl der Empfänger das ursprüngliche Signal aus den Überlagerungen und Dämpfungen zurückgewinnen muss, ist die Mehrwegeausbreitung des Signals durchaus sinnvoll, da so Kommunikation mit der Basisstation ohne direkten Sichtkontakt möglich wird. Ein weiteres Problem stellt die Verwaltung der sich verändernden Entfernung zwischen mobilen Endteilnehmern und Basisstation dar. Diese ständige Änderung bedeutet auch eine permanente Änderung der Signallaufzeiten. Bei GSM beispielsweise wird dem 46 entgegengewirkt, indem die Basisstation anhand der ermittelten Signallaufzeit der Mobilstation mitteilt, um wie viele Zeiteinheiten das Senden der Mobilstation verzögert werden soll, damit der Teilnehmer in seinem Zeitschlitz bleibt. Ein jeder Zeitschlitz besitzt daher einen Puffer als Schutzzeit, um Verschiebungen der Signalankunft durch wechselnde Teilnehmerentfernung zu bewerkstelligen. 3.3. Eignung drahtloser Übertragungstechniken für mobile Spiele Abgesehen von den eben beschriebenen Störfaktoren, die abhängig von der benutzten Übertragungstechnik mehr oder weniger Einfluss auf die drahtlose Verbindung haben, stellt sich die Frage, inwieweit die zur Verfügung stehende Technik überhaupt unter nahezu optimalen Bedingungen für Netzwerkspiele geeignet ist. Alle Techniken bieten anscheinend genug Bandbreite, um mehrmals pro Sekunde kleine Spielupdate Pakete in der Größenordnung von weniger als 100 Byte zu senden und zu empfangen. Der limitierende Faktor ist jedoch die Latenz, die sich gerade durch die kleinen, ständig verschickten Pakete äußert: Angenommen ein solches 100 Byte Paket wird über UMTS mit einer Übertragungsrate von 384 kbit/s verschickt, so dauert die Übertragung etwa 2ms. Hierbei wird allerdings die Latenz übersehen, die bei UMTS in etwa zwischen 200 und 300ms liegt [heise06]. Die für akzeptable Spielbarkeit von FPS geforderte maximale Latenz von 150ms [Armi01] ist daher bei UMTS und vor allem GPRS, welches teilweise Latenzen im Sekundenbereich haben kann, problematisch. Je nach Echtzeit-Charakter eines MMORPG sind etwas größere Latenzzeiten im Bereich von 500ms tolerierbar und somit mit UMTS offenbar spielbar. GPRS hingegen biete keine akzeptable Lösung für Echtzeitspiele, die eine geringe Latenz fordern. Um zeitkritische mobile Netzwerkspiele zu realisieren, muss man folglich auf Techniken mit geringerer Latenz zurückgreifen. Hier bieten sich Bluetooth (< 50ms) und das UMTSVerfahren HSDPA/HSPUA (High Speed Downlink/Uplink Packet Access) an, welches die Latenzzeit auf 100ms und weniger reduzieren soll [heise06]. Lassen sich hohe Verzögerungszeiten nicht vermeiden, so kann schließlich über das Spieldesign versucht werden, Latenzen zu verstecken, wie es beispielsweise im Spiel Die Sims geschieht [Palm03]. Die zu steuernden Charaktere bewegen sich bei diesem Spiel auch ohne Anweisungen selbständig und erzeugen so den Eindruck eines 47 kontinuierlichen Spiels. Die verzögert ausgeführten Anweisungen werden dadurch ein wenig verdrängt. Zusammenfassend lässt sich feststellen, dass mobile MMOGs im Prinzip auch mit dem aktuellen Stand der Technik (auch mit 2.5G) realisiert werden können, man aber das Spieldesign auf Kosten der Echtzeit-Interaktion je nach Übertragungstechnik anpassen muss. 3.4. Einführung in Standort basierte Dienste Standort basierte Dienste, auch als Location Based Services (LBS) bekannt, sind zusätzliche Dienste, die einem Teilnehmer eines mobilen Netzwerks anhand seiner Position, also des Ortes an dem er sich befindet, angeboten werden können. Typische LBS-Anwendungen können aus den folgenden Bereichen stammen: Navigations- und Ortungssysteme: „Wo bin ich?“, „Wie komme ich an mein Ziel?“ Points of Interest (POI): „Wo finde ich eine bestimmte Sehenswürdigkeit / den nächsten Bahnhof / das nächste italienische Restaurant?“ Buddy-Applikationen: „Wo sind meine Freunde?“ Notfall-Situationen: „Wo befindet sich der Verletzte / der Unfallort?“ Überwachung: „Wo befindet sich mein Kind?“ Ein System, dass LBS bereitstellt, muss abgesehen von der mobilen Kommunikation über entsprechende Positionierungsverfahren und Kontextwissen (dies kann sowohl geographisches Wissen als auch zusätzliche Information im Sinne eines POI-Services umfassen) verfügen. Das bekannteste Positionierungsverfahren GPS ist nicht immer die optimale Lösung, da es einige Nachteile, wie im Folgenden beschrieben, mit sich bringt. Netzwerk-basierte Positionierungstechniken bieten manchmal eine Alternative zu GPS, auch wenn diese ebenfalls einige Schwächen aufweisen. 3.4.1. Global Positioning System (GPS) Bei GPS wird die Position anhand der Signallaufzeiten und Positionen von vier Satelliten ermittelt. Insgesamt stehen mindestens 24 Satelliten für GPS zur Verfügung, die auf 6 Bahnen verteilt sind und von Bodenstationen kontrolliert und synchronisiert werden. Da 48 GPS ursprünglich für militärische Zwecke eingesetzt wurde, verwendete das amerikanische Militär zunächst einen Mechanismus, der nur Messgenauigkeiten auf ungefähr 100m erlaubte. Diese „Selective Availability“ wurde im Jahr 2000 abgeschaltet [USgov00]. Seitdem liegt die Genauigkeit bei weniger als 20m, mit so genanntem differentiellen GPS sogar bei etwa 1m. Die Positionierung selbst erfolgt durch Triangulation. Für jeden der vier benutzen Satelliten ist die Entfernung zum Empfänger und die Position der Satelliten selbst bekannt. Im Normalfall würden für die Bestimmung der dreidimensionalen Position des Empfängers drei Bezugspunkte, sprich Satelliten, reichen (für Längengrad, Breitengrad und Höhe). Um den Empfänger entsprechend zu synchronisieren, werden die Zeitsignale der Satelliten verwendet. Um die zusätzliche Unbekannte „Zeit“ in der Rechnung zu verwalten ist demnach ein vierter Bezugspunkt erforderlich [Wiki06f]. GPS hat den Nachteil, dass es bei schlechter Sicht zu den Satelliten häufig keine Signale empfangen kann. Ferner kann der initiale Verbindungsaufbau (TTFF, Time to First Fix) teilweise mehrere Minuten dauern, was vor allem in Notruf Situationen keine akzeptable Lösung ist. Bisher war GPS vorwiegend als Extra-Hardware in Form von Navigationssystemen erhältlich. Mittlerweile bauen auch Mobiltelefonhersteller immer häufiger GPS-Chips in ihre Geräte [Silicon06]. 3.4.2. Netzwerk-basierte Positionsbestimmung Trotz fehlender GPS-Module der Endteilnehmer können Netzbetreiber durch ihre vorhandenen Infrastrukturen ihren Kunden LBS anbieten. Die Berechnung der Position geschieht hierbei nicht über Satelliten, sondern durch Informationen, die die Basisstationen einer Funkzelle liefern können [Magon06]. Cell of Origin (COO) Die Position wird durch die Funkzelle identifiziert, in der sich der mobile Nutzer gerade befindet. Die Genauigkeit hängt hier von der Infrastruktur ab. Je kleiner der Bereich der Funkzelle, desto genauer die Ortung. In ländlichen Gegenden, in denen Funkmasten mehrere Kilometer abdecken ist die Ortung also nur sehr grob. Der Vorteil von COO (auch Cell-ID) ist der geringe Verwaltungsaufwand und die damit verbundenen niedrigen Kosten. Das Verfahren kann etwas verbessert werden, wenn man zusätzlich den Timing Advance Faktor berücksichtigt, der bei GSM die unterschiedlichen Laufzeiten die durch Entfernungen entstehen, ausgleichen soll. 49 Time Difference of Arrival (TDOA) TDOA benutzt die Signallaufzeiten zwischen Mobilstation und mehreren (mindestens drei) Basisstationen, um Entfernungen zu den jeweiligen Stationen zu bestimmen und so auf die Position der Mobilstation zu schließen. Die Ortungsgenauigkeiten liegen im Bereich von 100-200m [OpWa02]. Angle of Arrival (AOA) AOA analysiert die Winkel der Funkwellen bei Ankunft an einer Basisstation und erkennt so die Herkunft, sprich Richtung des Signals der Mobilstation. Die Position der Mobilstation erhält man durch Verwendung dieser Information von mindestens zwei verschiedenen Basisstationen. Die Ortungsgenauigkeit von AOA ist ähnlich wie bei TDOA. Sowohl für TDOA als auch AOA sind zusätzliche Aufrüstungen auf Seiten des Netzwerkbetreibers um Vermessungseinheiten (LMU, Location Measurement Unit) nötig, wobei zur Vermessung der Winkel bei AOA spezielle Antennen benötigt werden. Enhanced Observed Time Difference (E-OTD) E-OTD ist eine Art umgekehrtes TDOA. Hier nehmen im Wesentlichen die Mobilstationen selbst die Vermessungen vor, so dass auch auf der Seite des Endteilnehmers entsprechende Softwareveränderungen vorgenommen werden müssen. Die Ortungsgenauigkeit liegt dann bei etwa 50-200m [OpWa02]. 3.4.3. Assisted GPS (A-GPS) Bei A-GPS wird GPS durch zusätzliche Information, die aus dem Mobilfunknetz gewonnen wird unterstützt und stellt somit einen Hybridansatz aus Netzwerk-basierter und GPS-Ortung dar. Die Endgeräte sind mit einem GPS-Empfänger ausgestattet und erhalten über das drahtlose Netz Zugang zu einem so genannten Assistance Server, der dem Empfänger weitere Hilfsdaten liefern kann. Die Ortung mit GPS ist zwar sehr genau, hat aber entscheidende Nachteile: 50 Sehr große TTFF, das heißt einen lang andauernden ersten Verbindungsaufbau zu den Satelliten Beschränkter Empfang bei schlechter Sicht auf die Satelliten Hoher Stromverbrauch des Endgeräts A-GPS nutzt in den Mobilfunkzellen weitere fest installierte GPS-Empfänger mit guter Sicht zu den Satelliten, durch deren Hilfe der mobile GPS-Empfänger die Suche nach Satellitensignalen bereits stark einschränken kann und nur noch Signallaufzeiten zum Satelliten ermitteln muss (also auch keine empfangenen Signaldaten in großem Umfang dekodieren muss), während die fest installierten Empfänger bereits über alle Satellitendaten verfügen. Dadurch wird sowohl die Positionsermittlung erheblich verkürzt als auch der Stromverbrauch merklich gesenkt. Da keine Daten vom Satelliten dekodiert werden, kann das Empfangssignal um einiges schwächer sein, und durch die Hilfsdaten muss der mobile Empfänger nicht immer Sichtkontakt zu vier Satelliten haben. Letztendlich werden so alle angesprochenen Schwachstellen von GPS behoben. A-GPS ist aufgrund seiner Zuverlässigkeit die Technik, die für Standort basierte Dienste am besten in Frage kommt, wie auch der Trend, GPS Module in Mobiltelefone einzubauen, bestätigt. 3.4.4. Weitere Ansätze Zur Ortung können andere drahtlose Techniken eingesetzt werden, die die Position des Teilnehmers mit Hilfe fest installierter Punkte, deren Position bekannt ist, ermitteln. Zum Beispiel: WLAN Zugangspunkte (Hot Spots) Fest installierte Bluetooth Module (siehe [TagAttack05]) RFID Module Der Einsatz von RFID Modulen ist besonders für Positionsermittlung in kleineren Umgebungen sinnvoll. Die Ausstattung der mobilen Handhelds mit RFID-Lesern würde so beispielsweise in einem großen Einkaufscenter Anwendung finden oder auch im Bereich des Multiplayergamings könnte eine komplette Umgebung für Spiele präpariert werden (vergleichbar mit einem Gotcha-Spiel). 51 4. Verwandte Arbeiten “Jegliche Bewegung setzt ein Unbewegliches voraus.” – Thomas von Aquin, italienischer Philosoph Dieses Kapitel betrachtet bereits umgesetzte oder geplante MMOGs für mobile Geräte unter den Gesichtspunkten der beiden vorangehenden Kapitel und stellt ferner das Design einer der wenigen entwickelten Middlewares für den mobilen Spielemarkt vor. 4.1. Mobile MMOGs 4.1.1. TibiaME TibiaME vom deutschen Softwareunternehmen CipSoft [CipSoft], die „Micro Edition“ des PC Onlinespiels Tibia, startete im Frühjahr 2003 als erstes MMORPG für Handys. Das Spiel findet in der mittelalterlichen Welt „Tibia“ statt und bietet typische Merkmale eines Rollenspiels wie gemeinsames Kämpfen oder das Lösen von Quests mit menschlichen Mitspielern. Die Entwicklung des Charakters steht im Vordergrund. Abbildung 4.1: Tibia ME Das Spiel wird von allen „Series 60“ Geräten [Series60] unterstützt und beruht auf einer Client-Server-Architektur, wobei Updatenachrichten über GPRS an den Spielserver gesendet werden. Nach Angaben des Herstellers ist die Kommunikation derart optimiert, dass pro Spielstunde nur in etwa 400kB Traffic erzeugt wird um so die Kosten, die durch GPRS entstehen gering zu halten. Das Spiel selbst gibt es in einer kostenlosen Version 53 und einer „Gold Version“, die zusätzliche Spielfeatures mit sich bringt und für eine einmalige Downloadgebühr von ungefähr 5 Euro erhältlich ist. Das Benutzen der Spielserver ist derzeit (Stand April 2006) kostenlos. Ursprünglich wurde das Spiel in Zusammenarbeit mit T-Mobile entwickelt, und man einigte sich auf ein Geschäftsmodell, bei dem der Hersteller, der auch die Spielserver bereitstellte, am Umsatz durch übertragenes Datenvolumen beteiligt wurde [Nokia03]. Da bereits eine PC Version des Spiels existierte, konnten Großteile des Codes (vor allem für den Server) wieder verwendet werden. Die Clientsoftware wurde in C++ für Symbian OS implementiert. Bei der Umsetzung auf mobile Handhelds, mussten vor allem drei Probleme gelöst werden: der geringe Speicher der Handys die Umsetzung der Userinterfaces die hohe Latenz von GPRS Das Spiel konnte mit etwa 390kB Speicherbelegung im Rahmen der Hardwareressourcen bleiben, und die Komplexität des Userinterfaces des Originalspiels konnte sinnvoll heruntergeschraubt werden. Um die hohe Latenz von teilweise mehreren Sekunden zu verstecken, benutzt der Hersteller Vorhersage-Algorithmen, die bei sehr hoher Latenz zwar keine Echtzeitinteraktion mit menschlichen Spielern ermöglichen, aber zumindest das Spiel nicht zu stark ausbremsen. Je kleiner die Verzögerungszeiten, desto stärker wird der Echtzeitcharakter des Spiels. Allerdings ist zum Beispiel eine Echtzeit-Aktion wie der direkte Kampf gegen einen menschlichen Mitspieler - abgesehen von wenigen Ausnahmesituationen – untersagt. Der Traffic selbst wird nach Angaben der Entwickler gering gehalten, indem eine TCP-basierte Verbindung zum Server genutzt wird. 4.1.2. Undercover 2: Merc Wars Undercover2: Merc Wars [MercWars] ist ein MMORPG, dass Standort basierte Dienste als optionales Feature nutzen kann. Der Spieler bewegt sich in einem futuristischen Szenario der Erde. Auch hier kann der Spielcharakter Fähigkeiten dazu gewinnen und es können Allianzen mit anderen menschlichen Spielern gebildet werden. Dazu kann die ganze Welt bereist werden, während Feinde bekämpft und Missionen erfüllt werden. 54 Abbildung 4.2: Undercover2: Merc Wars Das javabasierte Spiel läuft derzeit auf etwa 30 verschiedenen Handys und ist für eine monatliche Gebühr von etwa 3 Euro plus GPRS-Kosten spielbar. Besitzt ein Spieler ein GPS-fähiges Endgerät oder benutzt einen Mobilfunkanbieter, der LBS anbietet, so kann die echte Umgebung in das Spiel miteinbezogen werden. Der Hersteller benutzt dazu digitale Landkarten und Stadtpläne des Anbieters Navteq, der Content für LBSAnwendungen wie Navigationssysteme erstellt. Die Position des Spielers in der realen Welt entspricht dann seinem Aufenthaltsort in der virtuellen Spielwelt. 4.2. Middleware für mobile Umgebungen 4.2.1. GASP – Gaming Service Platform GASP [Gasp05] ist ein Open Source Projekt zur Entwicklung einer Middleware für Multiplayerspiele, die auf mobilen Endgeräten laufen kann, die J2ME Programme unterstützen. Das Design der Middleware ist an die Spezifikationen der Open Mobile Alliance [OMA06] Game Services Arbeitsgruppe angelehnt. Diese Arbeitsgruppe, bestehend aus führenden Anbietern des Mobilfunkmarkts, legt in dieser Spezifikation Design- und Architekturstandards für die Entwicklung mobiler Computerspiele fest, wobei für den Entwurf der Middleware insbesondere das Client-Server-Interface von Interesse ist [OMA06b]. 55 Das sogenannte Domainmodell eines Spielservers besteht nach [OMA06b] aus folgenden Einheiten (Abbildung 4.3): User: teilnehmender Spieler, der sich am Server anmeldet Application: ein Spiel das auf dem Server angeboten wird, wobei unterschiedliche Spiele, also Applications pro Server möglich sind Actor: Repräsentation eines Users in einer Application, dies bedeutet ein User kann pro Application einen Actor haben Session: Spielsitzung, die für einen Actor, der an einer Application teilnimmt, erstellt wird ApplicationInstance: die verschiedenen Instanzen der Applications ActorSession: Verbindung zwischen Actor und einer Instanz einer Application, Abbildung 4.3: Das Server Domainmodell der OMA GS Spezifikation Zur Veranschaulichung der Aufgaben dieser Einheiten, wird ein erläuterndes Beispiel gegeben (siehe auch Spezifikationen [OMA06b]): Der User „John Doe“ meldet sich mit seinen Zugangsdaten beim Server an. Er kann zwischen verschiedenen Applications wie Schach oder Poker wählen. Möchte „John Doe“ eine Partie Poker spielen, so wird er dort durch seinen Poker-Actor repräsentiert und eine Session erzeugt. Dabei können beispielsweise beim Pokerspiel verschiedene Pokertische oder –partien, also ApplicationInstances laufen. Meldet sich „John Doe“ bei mehreren Pokertischen simultan an, so wird je Pokertisch (ApplicationInstance) eine ActorSession erstellt. 56 GASP nutzt ein leicht verändertes Modell, das jedoch wesentliche Bestandteile wie die Idee der Sessions und Actors erhält. Da viele J2ME Geräte und Mobilfunk-Netzwerke auf das http-Protokoll über GPRS beschränkt sind, ist der Server als Servlet implementiert, der http-Anforderungen durch Clients bearbeitet und beantwortet. Das GASP-Design wird durch folgende Einheiten beschrieben (Abbildung 4.4): Platform Representation: zentrale Instanz, Verwaltung der Spielinstanzen und dazugehöriger Actors bzw. ActorSessions Servlet Container: Annahme und Bearbeitung der Anforderungen von Clients über http (Communication Management) Game Server: serverseitige Logik des Spiels Datenbank: persistente Daten wie Accounts Mobile: clientseitige Logik des Spiels sowie Kommunikationsschnittstelle Abbildung 4.4: GASP Design Zusätzlich nutzt GASP ein eigenes Nachrichtenprotokoll. Um die Größe der gesendeten Pakete zwischen Client und Server möglichst gering zu halten, werden Daten nicht stur serialisiert sondern unterschiedliche Pakettypen werden anhand eindeutiger IDs erkannt. 57 Die unterschiedlichen Nachrichten werden dafür in einer XML Struktur definiert ähnlich wie es der Ansatz in [Hsiao05] vorsieht. 58 5. Entwurf und Implementierung der Middleware “To err is human, but to really foul up requires a computer.” – Dan Rather, amerikanischer Journalist Unter Middleware versteht man allgemein Software, die zwischen der Anwendungsschicht und Betriebssystemschicht (beziehungsweise der Schnittstelle zur Hardware) angesiedelt werden kann und Dienstleistungen für oben aufgesetzte Anwendungen bereitstellt, indem sie Funktionen der darunterliegenden Schicht nutzt. Middleware arbeitet unabhängig von der aufgesetzten Anwendung, so dass diese beliebig sein kann und wird häufig in verteilten Systemen eingesetzt. Dort agiert die Middleware einem Protokoll ähnlich und vereinfacht die horizontale Kommunikation zwischen Applikationen, die auf verschiedenen (heterogenen) Systemen im Netzwerk verteilt sein können. 5.1. Middlewarekonzepte Nach [Emmer00] kann man Middleware wie folgt klassifizieren: Transaktionsorientierte Middleware Nachrichtenorientierte Middleware (MOM – message-oriented middleware) Prozedurale Middleware (RPC – remote procedure calls) Objektorientierte Middleware Bei transaktionsorientierter Middleware steht das Konzept der Transaktion, wie es in Datenbanksystemen üblich ist, als Mittel der Kommunikation im Vordergrund. MOM-Systeme kommunizieren klassisch über Nachrichtenaustausch und können somit gegenseitige Anfragen senden und empfangen. Dabei werden Warteschlangen genutzt, die Nachrichten zwischenpuffern. Prozedurale Systeme erlauben den Zugriff auf Prozeduren entfernter Rechner, die dem aufrufenden System daher wie lokale Prozeduren erscheinen. Der entfernte Aufruf (RPC) wird hierbei mit allen Parametern versehen für die Übertragung serialisiert (auch bekannt 59 als marshalling) und beim Empfänger wieder deserialisiert (unmarshalling). Der Ablauf ist standardmäßig synchron, so dass der aufrufende Prozess solange wartet, bis er eine Rückmeldung vom Server erhält. Objektorientierte Middleware erweitert die Idee der RPC indem Konzepte der objektorientierten Programmierung genutzt werden. Statt auf Prozeduren kann nun auf entfernte Objekte zugegriffen werden (zum Beispiel CORBA, RMI). 5.2. Middleware für MMOGs 5.2.1. Vorteile Der Einsatz einer Middleware für Onlinespiele bringt für alle beteiligten Parteien einen Mehrwert. Content-Programmierer Die Programmierer des eigentlichen Spiels erhalten durch die Middleware eine vereinfachte Schnittstelle zum Netzwerk, die von den technischen Gegebenheiten abstrahiert. Der Content-Programmierer muss sich demnach nicht darum kümmern, durch welche Architektur das Netzwerk verbunden ist und wie zu übertragene Daten in Pakete gekapselt werden müssen. Einfache Funktionen dieser oberen Schnittstelle der Middleware reduzieren damit Aufwand und Kosten der Entwicklung des Spiels. Spielsoftware Auch der Spielsoftware werden Funktionen der oberen Schnittstelle vereinfacht bereitgestellt. Die Spielsoftware kann seine Anforderungen, die eine akzeptable Spielbarkeit ermöglichen, an die Middleware stellen und erhält ein Feedback, ob diese gewünschten Voraussetzungen vorhanden und erfüllbar sind. Anhand von Information, die durch Abfrage des Netzstatus von der Middleware bereitgestellt werden, kann die Software auf Unzulänglichkeiten reagieren und versuchen, durch geeignete Algorithmen (zum Beispiel Vorhersage) technische Schwierigkeiten auszugleichen. Funktionen für die Applikation könnten sein: 60 Laden und Speichern von Daten während des Spiels Lobbysysteme: finden und starten von Spielen, Highscore Handling Weitere Buddy- und Chatfunktionen Spiel- und Netzbetreiber Für Betreiber des Spielnetzwerks ergibt sich die Möglichkeit, dass zum Beispiel zukünftige Ausfälle von Servern durch Wartungsarbeiten angekündigt oder Überlastungen rechtzeitig mitgeteilt werden. Dadurch kann bereits im Vorfeld reagiert werden, und es können Umleitungsstrategien oder Verteilungen (Load Balancing) rechtzeitig organisiert werden. Die Wartung und Verwaltung wird insbesondere durch die Monitoring-Funktionen erleichtert. 5.2.2. Anforderungen Eine Middleware für massive Multiplayerspiele sollte im Wesentlichen die folgenden Kriterien beachten und optimal umsetzen. Skalierbarkeit Die Skalierbarkeit ist der entscheidende Faktor bei MMOGs. Zwar hängt er hauptsächlich von der Netzwerkstruktur und Hardware ab, allerdings kann auch die Software die Skalierbarkeit erheblich einschränken. Hierunter fallen vor allem die Entscheidung für das verwendete Netzwerkprotokoll (TCP oder UDP) und die Kommunikationsart (RPC oder MOM) aber auch schlechte Implementierungen der Kommunikationsverwaltung allgemein. Vereinfachung der Spielentwicklung Die Middleware soll den Spielentwicklern ein transparentes Nachrichtensystem ohne Zusatzwissen über Netzwerkprogrammierung oder –struktur bieten und ebenso eine Auswahl an verschiedenen Schnittstellenfunktionen für das Gaming bereithalten. Zuverlässigkeit, Fairness, Fehlertoleranz Das verwendete System sollte robust laufen und mit beabsichtigten oder zufälligen Überlast- und Fehlersituationen wie einem plötzlichen Verbindungsabbruch zum Spieler umgehen können. Bestimmte Nachrichten müssen beim Empfänger unter allen Umständen ankommen. Ferner sollten möglichst alle verbundenen Spieler in gleichem Maße mit Nachrichten bedient werden. Spieler, die das System stören oder missbrauchen können notfalls gebremst oder ausgeschlossen werden. 61 Diese Faktoren hängen natürlich in hohem Maße von tieferen Schichten im Netzwerkmodell ab, die zuverlässige und verbindungsorientierte Dienste anbieten. Allerdings ist es teilweise nötig, verwendete Dienste auf höheren Schichten abzusichern. Ein Beispiel stellt hier die Verwendung von unzuverlässigem UDP dar. In bestimmten Situationen soll unter Umständen ein UDP Paket versendet werden (da es eventuell schneller als TCP verschickt wird), das aber garantiert ankommen soll. Hier könnten Bestätigungen, Zeitstempel und ähnliches auf Anwendungsebene mitgeschickt werden, um beim Empfänger Ankunft und Reihenfolgetreue zu gewährleisten. Preiswerte Wartung und Verwaltung Es können Funktionen angeboten werden, die die Überwachung erleichtern (Monitoring) und Probleme voraussehen oder künftige Wartungsarbeiten ankündigen und somit die Möglichkeit schaffen, bereits im voraus ein Umorganisieren der verwendeten Server oder Spielstrukturen zu erlauben. Sicherheit Dies umfasst unter anderem das Authentifizieren berechtigter Spieler, das Erkennen gefälschter Identitäten oder Nachrichten und andere Formen des Cheatings. 5.3. Design- und Implementierungskriterien Für den Entwurf und die Implementierung einer mobilen Multiplayer-Middleware ergeben sich verschiedene Optionen für die Realisierung der Gaming-Schnittstelle „nach oben“ und der Netzwerk-Schnittstelle „nach unten“, die unter Berücksichtigung der eben genannten Anforderungen geschehen soll. 5.3.1. Gaming-Schnittstelle Welche wesentlichen Funktionen soll die Middleware für den Programmierer und die Spielsoftware bereitstellen? 62 Verwaltung der Spieldaten (Abrufen und Setzen der Eigenschaften von Spielern, Objekten, z.B. Positionen in der virtuellen Welt) Sende und empfange Nachrichten zum Server oder Spieler Erstellen, Starten und Beenden eines Spiels (Verbindung aufbauen, Speichern und Laden, Highscore Handling) Lobby- / Chat- / Buddyfunktionen (finde Spiele, kommuniziere mit anderen Spielern) Monitoring (Beobachten von Latenz, Jitter) Verwaltung der Spieldaten Der Spielstatus kann, falls vom Spielentwickler gewünscht, zu großen Teilen von der Middleware verwaltet werden. Während sich die Middleware grundsätzlich um Daten wie „teilnehmende Spieler“ kümmert, können auch spielrelevante Daten wie Objektpositionen abgefragt und gesetzt werden. Für die Implementierung sollte dann beachtet werden, dass diese zusätzlichen Informationen möglichst generisch implementiert werden, da diese Daten in großem Maße vom Design des Spiels abhängig sind und unter Umständen Anpassungen bedürfen. Beispielsweise kann eine Klasse „Position“ je nach Spieltyp zweioder dreidimensionale Koordinaten beinhalten oder zusätzlich eine Orientierung beinhalten. Ferner kann man für Funktionen, die spielrelevante Daten zunächst lokal verändern und dann zur Überprüfung an den Server schicken bei negativer Bestätigung des Servers das Rückgängigmachen durch entsprechende Rollback-Funktionen unterstützen. Während die Spielsoftware sofort auf Eingaben des Spielers reagiert und diese in die Tat umsetzt (beispielsweise indem unter anderem Vorhersage-Algorithmen benutzt werden), werden diese Aktionen mit leichter Verzögerungen durch den Server verifiziert. Nachrichtenaustausch Der Nachrichtenaustausch zwischen einem Client und einem Server (oder mehreren Peers) sollte größtenteils implizit erfolgen, wenn Anforderungen über die GamingSchnittstelle, wie das lokale Setzen einer Spielerposition, erfolgen. Dies bedeutet, dass die Middleware ein bestimmtes Repertoire an Nachrichtentypen (wie Statusupdates, Loginanforderungen) beinhalten sollte. Um die Erweiterung durch die Spielprogrammierer um zusätzliche Pakettypen nicht einzuschränken, sollten allerdings Nachrichtenfunktionen existieren, die individuell erstellte Pakete versenden und empfangen können. Hierbei kann ein Konzept zur Erstellung von neuen Pakettypen von der Middleware vorgeschlagen werden. 63 Erstellen, Starten und Beenden eines Spiels Je nach verwendeter Architektur, stehen Server- oder Client-typische Funktionen zur Verfügung. Server-typische Funktionen beinhalten das Erstellen eines neuen Spiels unter Angabe diverser Parameter wie die maximal zulässige Spieleranzahl oder Zuteilung benachbarter Zonenserver. Clients können Serverlisten abfragen, sich bei einem Server registrieren und anmelden. Den Spielern soll das explizite Speichern ihrer Daten während des Spiels (Gewinnung neuer Fähigkeiten oder Items im Spiel) ermöglicht werden, wobei auch eine AutosaveFunktion realisiert werden kann, die den Spielstatus in vorbestimmten Zeitabschnitten in eine Datenbank überträgt. Lobby-, Chat- und Buddyfunktionen Da der Aspekt der zwischenmenschlichen Kommunikation bei Multiplayerspielen im Vordergrund steht, sollten auch weitere Funktionen, die diesen Aspekt unterstützen, im aber auch außerhalb des Spiels (also außerhalb der virtuellen Welt) angeboten werden. Dazu können Features wie Chats bereits in der Middleware implementiert sein. Monitoring Informationen über den Netzwerkstatus sind sowohl für die Spielsoftware als auch für den Spieler interessant. Die Software kann durch Informationen über Latenz und Paketverlust Gegenmaßnahmen wie Bewegungsvorhersage von Objekten einleiten. Der Spieler kann am „Ping“ erkennen, ob er vielleicht einen anderen Server aufsuchen sollte. 5.3.2. Netzwerk-Schnittstelle Für die Netzwerk-Schnittstelle stellen sich hauptsächlich zwei Fragen: soll die Anbindung zum Spielserver verbindungsorientiert über TCP oder verbindungslos über einen Datagrammdienst (UDP) realisiert werden, und welches Modell der oben beschriebenen Middlewareklassifikation eignet sich am ehesten für Multiplayer-Onlinespiele? 64 TCP oder UDP? Ob sich verbindungsorientierte Protokolle wie TCP oder verbindungslose Protokolle wie UDP besser für die Client/Server-Kommunikation eignen, ist ein häufig diskutiertes Thema unter den MMOG-Entwicklern. Verschiedene Spielentwickler tendieren zu unterschiedlichen Lösungen [GamDev05]. Die Entscheidung für oder gegen eines dieser Protokolle ist im allgemeinen eine Abwägung zwischen Zuverlässigkeit, Geschwindigkeit und Skalierbarkeit. Die Wahl des Protokolls ist somit vor allem von den Anforderungen des Spiels abhängig. Da im MMOG-Bereich je nach Genre verschieden große Latenzzeiten akzeptierbar sind, ist es denkbar, für rundenbasierte und langsamere Spiele auf TCP zurückzugreifen, während für First Person Shooter durch häufige Bewegungen und Aktionen eher UDP geeignet ist. Eine Middleware sollte daher grundsätzlich beide Optionen anbieten können. Dies würde ebenfalls die Möglichkeit bieten, für Pakete, die sicher ankommen und verwaltet werden müssen (wie Starten des Spiels und erstem Herunterladen des Spielzustands oder einem Zonenserver-Wechsel), auf das verbindungsorientierte Protokoll zurückzugreifen und schnelle, häufige Pakete (wie Aktionen während des Spiels) durch unzuverlässige Datagramme zu versenden, deren eventueller Verlust durch lokale Vorhersage minimiert werden kann. RPC oder MOM? Wie in [Hsiao05] beschrieben, hat eine nachrichtenorientierte Middleware für Onlinespiele einige Vorteile gegenüber der prozedualen oder objektorientierten Variante. Beispielsweise erlaubt ein nachrichtenbasiertes System, dass Clients nach dem Senden ihrer Anfragen an den Server, lokal bereits Berechnungen, die auf VorhersageAlgorithmen beruhen, durchführen können und nicht explizit auf die Antwort des Servers warten müssen. Ein weiterer wichtiger Faktor, der für MOM spricht, ist die Tatsache, dass besonders in einem massiven Mehrspieler-Umfeld, welches außerdem noch mobile Teilnehmer unterstützt, die Paketgröße der gesendeten Nachrichten von entscheidender Bedeutung ist. Diese ist bei einem individuell erstellten Nachrichtensystem immer übersichtlich, während bei RPC zusätzlich Daten für die zu verwendenden Prozeduren oder Objekte serialisiert werden müssen. 65 5.3.3. Die Programmiersprache Programmiersprache Hardwareausnutzung, kann nach Multithreading) Kriterien und wie Performanz Kompatibiltät (zum Beispiel beziehungsweise Plattformunabhängigkeit gewählt werden. So unterschiedlich die vielen verschiedenen mobilen Geräte sind, so unterschiedlich ist auch die Unterstützung der verschiedenen Programmiersprachen. Die Möglichkeiten reichen je nach Modell von einfachen WAP-Anwendung, über Java (insbesondere J2ME) bis hin zu der Möglichkeit, C++ Programme entwickeln zu können. Die Frage lautet daher, ob man sich auf eine Gerätegruppe (die zum Beispiel ein bestimmtes Betriebssystem unterstützt) spezialisiert und die dafür nützlichste, also effektivste Sprache verwendet, oder ob man ein möglichst breites Spektrum an Hardware abdecken will und damit Einbußen in der Performanz toleriert. 5.4. Entwurf und Implementierung 5.4.1. Struktur Die hier entworfene Middleware ist standardmäßig als Client/Server-System ausgelegt. Auf der Seite eines Clients und eines Servers werden neben spezifischen Klassen dieselben Elemente verwendet. Basis der Kommunikation zwischen Client und Server ist das Nachrichtensystem, dass sowohl TCP als auch UDP unterstützt. Die Middleware präsentiert auf beiden Seiten eine Netzwerkschnittstelle, die das Senden von Nachrichten zu anderen Spielern oder zum Server ermöglicht. Die Gaming-Schnittstelle realisiert für Client und Server gemeinsame Funktionen wie das Setzen der Position eines Spielers in der Spielwelt. Sie kann aber auch spezifische Methoden beinhalten, die nur auf der Seite des Clients oder des Servers Sinn ergeben. Die hauptsächliche Aufgabe der Middleware besteht nun in der Verteilung und Annahme der Nachrichten und dem Aufruf der dafür notwendigen Prozeduren. In einem typischen Multiplayer-Szenario senden Clients regelmäßig Updatenachrichten an den Server, der diese validiert und periodisch (unter Umständen korrigierte oder zusammengefasste) Nachrichten an Spieler verteilt. Die dafür nötigen Einheiten und deren Interaktionen sind in Abbildung 5.1 schematisch dargestellt und werden in den folgenden Abschnitten erläutert. 66 Abbildung 5.1: Vereinfachtes Schema der Middleware-Architektur GameState Das Herzstück der Middleware ist der GameState, der alle Spieler (Player) und Spielobjekte (GameObject) hält. Ferner können Applikationen, die auf der Middleware aufsetzen, eigene Nachrichtentypen (NetworkMessage) und entsprechende Methoden (MessageListener), die auf diese Nachrichten im Sinne eines Beobachters (Observer Pattern) reagieren, beim GameState registrieren. Somit verwaltet der GameState alle wesentlichen Strukturen, die sowohl für die Netzwerk- als auch für die GamingSchnittstelle von Bedeutung sind. Im Sinne des Gaming-Interfaces gilt das Klassendiagramm aus Abbildung 5.2, dass Strukturen zur Haltung der Spielobjekte, also zum Beispiel der Spieler, beim GameState in den Vordergrund stellt. Abbildung 5.2: Klassendiagramm aus Sicht des Gaming-Interfaces 67 Hierbei relevante Methoden des GameStates umfassen beispielsweise Funktionen zum Einfügen und Entfernen von Spielern oder dem Laden und Speichern einzelner Spielerattribute, die aus einer eventuell angebundenen Datenbank gewonnen werden. Spielerattribute selbst können das Inventar die Spielcharakters, seine zuletzt bekannte Position in der Spielwelt und weitere Statusabfragen bedeuten. Die angesprochene Möglichkeit, Nachrichten, die während eines Spiels gesendet werden zu registrieren, wird im Abschnitt 5.4.2 genauer erläutert. Die Bedeutung der pro Spieler verwalteten ConnectionSession wird im Zusammenhang des nächsten Abschnitts deutlich. Client und Server Der GameState wird von zwei möglichen Klassen benutzt: dem Client und dem Server. Diese beiden Klassen stellen die Anbindung an das Netzwerk dar und regeln Verbindungsaufbau sowie eine Benachrichtigung des GameStates nach Empfang einer neuen Nachricht. Der Server steht für TCP-Verbindungen bereit und eröffnet für jeden Client eine neue ConnectionSession. Diese stellt die logische Verbindung zwischen einer Netzwerkverbindung und dem repräsentierten Spieler dar und führt neben den Verbindungsparametern eines Spielers auch Statistiken zur Anzahl der gesendeten Nachrichten, die genutzt werden können, um das Verhalten eines Netzwerkteilnehmers zu kontrollieren. Somit kann im Sinne der angesprochenen Fairness interveniert werden, wenn Spieler mit einem extremen Nachrichtenaufkommen entdeckt werden. UDP-Nachrichten werden ebenfalls unterstützt, allerdings ist dazu erst der Aufbau einer gesichterten TCP-Verbindung Voraussetzung. Dies bedeutet, dass erst nach der Anmeldung eines Spielers am Spiel („Join“) UDP Nachrichten versendet werden dürfen. Da zuallererst eine TCP-Verbindung bei Kontaktaufnahme mit dem Server geschehen muss, ist es möglich jederzeit zuverlässig wichtige Nachrichten über TCP an die Teilnehmer zu versenden. In dieser ersten Version der Middleware wird serverseitig zunächst ein sauberer Multithreading-Ansatz für TCP-Verbindungen implementiert, so dass für jeden neuen Client, der eine Verbindung zum Server aufbaut ein eigener Thread (TCPConnectedClient) erzeugt wird. In späteren Versionen sollte man aufgrund des teilweise sehr zeitaufwändigen Context Switchings bei Threadwechseln, insbesondere bei mehreren tausend Teilnehmern, von diesem Ansatz wegkommen, um die Skalierbarkeit für TCP-Nachrichten deutlich zu verbessern (siehe Ausblick). 68 Abbildung 5.3: Klassen des Netzwerk-Interfaces Wie in Abbildung 5.3 ersichtlich, nutzt der Client für die TCP-Verbindung und den UDP Port zum Server je einen eigenen Thread (TCPClient und UDPClient), der auf Nachrichten wartet. Der Server nimmt TCP-Verbindungen über den TCPServer-Thread an und erzeugt die erwähnten Threads pro neuem Client. Ferner wartet ein einzelner Thread (UDPServer) auf einem vorgegebenen Port auf ankommende Nachrichten die per UDP geschickt wurden. Mit Aufbau der Verbindung und Erstellung eines neuen TCPConnectedThread, versucht der Server, den Spieler beim GameState anzumelden. Ist es möglich, den Spieler anzumelden, so wird ihm eine eindeutige ID zugewiesen und eine ConnectionSession erzeugt, die nun eine Netzwerkverbindung auf einen Player abbildet und umgekehrt. Lehnt der GameState den neuen Spieler ab, beispielsweise da der Server seine maximal zulässige Spieleranzahl erreicht hat, so wird die Verbindung beendet. Im Falle eines Clients hält die ConnectionSession lediglich die Verbindungsparameter zum Server und stellt keine Abbildung auf einen Spieler dar. Der Client besitzt nun Methoden der Netzwerk-Schnittstelle und erlaubt das direkte Senden von Nachrichten zum Server und kann optional Funktionen anbieten, die bei Empfang bestimmter Nachrichten von Interesse sind. Beispiele hierfür sind das Setzen der vom Server erhaltenen Parameter für den eigenen lokalen Spieler nach genehmigter Spielteilnahme („JoinAnswer“) durch die Methode setLocalPlayer oder nach Erhalt einer Strafe durch den Server (setPenalty, siehe dazu Abschnitt 5.4.5). Analog besitzt der Server Methoden zum Versenden von Nachrichten an bestimmte Clients oder Clientgruppen. 69 StandardClient und StandardServer Im Gegensatz zu den reinen Netzwerkaufgaben eines Clients und eines Servers, werden die Klassen, die den vollen Funktionsumfang der Middleware bieten als StandardClient und als StandardServer bezeichnet. In der hier umgesetzten Client-/Serverarchitektur verwendet der implementierte Client (StandardClient) die Klasse Client als Schnittstelle zum Netzwerk, also zum Nachrichtenaustausch mit dem Server und den GameState zur Haltung und Berechnung des Spielzustands und zur Benachrichtigung der entsprechenden Routinen bei Nachrichtenerhalt. Der StandardClient stellt somit die Middleware für die Spielteilnehmer-Software dar und bietet Standardfunktionen zum Speichern und Laden, zum Erhalt von Latenzinformation und ähnlichem. Die Applikation kann neben den Standardfunktionen beliebige Nachrichtentypen definieren. Analog stellt der StandardServer die Implementierung und Haltung des Servers und GameStates auf der Seite des Servers dar. Abbildung 5.4 veranschaulicht diese grundsätzliche Struktur und das Zusammenwirken der bisher besprochenen Einheiten. StandardClient +movePlayer() +pingTCP() +pingUDP() +joinGame() +quitGame() +onPingMessage() +onJoinMessage() +onPenaltyMessage() network gaming etc. Client GameState Abbildung 5.4: Middleware auf Seiten des Clients Der StandardClient abstrahiert hierbei von der Client- und GameState-Instanz, indem es vereinfachte Methodenaufrufe zur Nutzung der Instanzen implementiert. Beispiele hierfür sind die Methoden movePlayer oder pingTCP, die den Client dazu veranlassen eine Bewegungsupdatenachricht des Spielers über UDP oder eine nachgeahmte (softwareseitige) Ping-Nachricht über TCP zu versenden. Weiterhin werden Listener-Methoden wie onJoinMessage implementiert, die aufgerufen werden, wenn eine entsprechende Nachricht dieses Typs empfangen wurde. 70 Analog ist der Aufbau des StandardServers, in Abbildung 5.5 dargestellt. In einem Szenario, in dem der StandardClient die Teilnahme am Spiel durch joinGame forcieren möchte, wird eine entsprechende Join-Nachricht gesendet, die nach Empfang auf der Seite des Servers durch den Listener onJoinMessage verarbeitet werden kann. Abbildung 5.5:Middleware auf Seiten des Servers 5.4.2. Nachrichtensystem Das entscheidende Merkmal dieser Middleware ist das Nachrichtensystem. Um die Entwicklung durch den Spielprogrammierer zu vereinfachen, wurde ein generischer Ansatz gewählt. Im Zentrum dieses Ansatzes steht die Basisklasse NetworkMessage, die grundlegende Methoden zum Empfang und Versenden von Nachrichten über TCP und UDP beinhaltet, sowie die dafür benötigten „low level“-Funktionen zum Einlesen und Schreiben der einzelnen Datentypen, die in den Paketen versendet werden. Von dieser Basisklasse ausgehend werden alle weiteren Nachrichtentypen erzeugt. Um dem Spielprogrammierer eine große Arbeit zu ersparen, wurde ein Tool entworfen, das in XML definierte Nachrichtentypen in Programmcode umwandelt, der die Benutzung dieser neuen Nachrichten ermöglicht. Diese Umsetzung orientiert sich in Grundzügen an der in [Hsiao05] vorgestellten Idee. Der Programmierer definiert sich dazu nach folgendem XML-Schema seine gewünschten Nachrichten: Eine neue Nachricht wird durch einen <Message>-Block angegeben, der als Parameter die zu verwendende, eindeutige ID der Nachricht, dessen Name, Pakettyp (UDP oder TCP) und Priorität benötigt. 71 Pro <Message>-Block wird ein Block zur Nachrichtenbeschreibung (<MessageDesc>) und für den Payload der Nachrichten (<Parameters>) angegeben. In einem PayloadBlock werden dann die einzelnen Datenblöcke (<Param>) aufgelistet, wobei ein einzelner Datenblock durch den Datentyp (<ParamType>) und den Variablennamen (<ParamName>) definiert wird. In Abbildung 5.6 wird eine mögliche Struktur einer Nachricht vorgestellt. Es handelt sich dabei um eine Penalty-Nachricht, die vom Server vergeben wird, wenn ein Client entdeckt wird, der zu viele Nachrichten sendet. Da es sich um eine wichtige Nachricht handelt, ist die Nachricht vom Typ tcp und hat die Priorität 0 (Nachricht wird immer gesendet). Der Payload besteht aus drei Parametern, die alle vom Datentyp int sind. Abbildung 5.6: Beispiel einer Nachrichtendefinition in XML Wird das Tool „xml2code“ aufgerufen, so werden pro definierter Nachricht zwei Codefragmente erstellt: Eine von der Basisklasse NetworkMessage abgeleitete Klasse, die die Methoden zum Empfang und Versenden auf den Payload anpasst und gleichzeitig Schnittstellenfunktionen erstellt, mit deren Hilfe auf den Payload zugegriffen werden kann Ein Listener-Interface für diese Nachricht, die eine Methode beinhaltet, die vom Entwickler zu implementieren ist und aufgerufen wird, falls eine Nachricht dieses Typs empfangen wird 72 Im Beispiel der Penalty-Nachricht wird demnach folgendes erstellt: PenaltyMessage, die die Klasse NetworkMessage erweitert und die Funktionen - get_intervallLength() - get_numberOfMessagesAllowed() - get_duration() - get_state() bereitstellt PenaltyListener, ein Interface mit der zu implementierenden Methode onPenaltyMessage(PenaltyMessage msg) Nach diesem Schema lassen sich alle benötigten Nachrichten erstellen. Anschließend müssen die verwendeten Nachrichten beim GameState angemeldet werden. Sind die Nachrichten registriert, ist es möglich pro Nachrichtentyp ein oder mehrerer Listener, die auf diese Nachricht warten, zu registrieren. Solche Listener müssen dann die entsprechende Methode (zum Beispiel onPenaltyMessage) implementieren. Abbildung 5.7: Schematische Darstellung der gesamten Middleware in Bezug auf den Nachrichtenaustausch Stellt dann eine Netzwerk-Instanz (über TCP oder UDP, beim Client oder beim Server) den Empfang einer neuen Nachricht fest, so wird der GameState informiert. Dieser stellt fest, um welchen Nachrichtentyp es sich handelt und ruft die Methoden zum Empfang der 73 Nachricht innerhalb der von NetworkMessage abgeleiteten Nachrichteninstanzen auf. Der Payload ist nun über die Schnittstellenfunktionen der abgeleiteten Klasse abrufbar. Anschließend werden alle Listener, die auf diese Nachricht gewartet haben, aufgerufen. Diese Vorgehensweise ist in Abbildung 5.7 schematisch dargestellt. Da die Middleware einen gewissen Pool an Funktionen für Spiel und Spielprogrammierer bereitstellen soll, wurden bereits einige typische Nachrichten und Methoden zur Behandlung dieser Nachrichten bereitgestellt: Penalties: Server → Client Server kann Verhalten der Clients kontrollieren Ping TCP/UDP: Server ↔ Client softwareseitige Messung der Umlaufzeiten von TCP und UDP Nachrichten Join / Quit: Client → Server Teilnahme und Verlassen eines Spiels JoinAnswer: Server → Client Bestätigung der Teilnahme an einem Spiel NewPlayer: Server → Client Benachrichtigung, dass ein neuer Spieler im Spiel ist SavePlayer: Client → Server Speichere aktuellen Spielstatus (Inventar, Position, …) des Spielers in Datenbank (nicht implementiert in dieser Version) Move: Client ↔ Server Bewegungsupdates eines Spielers / Benachrichtigung anderer Spieler Chat: Client ↔ Client Senden einer Chatnachricht an einen anderen Spieler (über den Server) Diese Nachrichten werden zum Funktionsumfang der Middleware gezählt. Die dazugehörigen Listener wurden StandardServer realisiert. 74 in den Klassen StandardClient und Abschließend ist auch für das Nachrichtensystem die bisher geführte Darstellung der einzelnen Middleware-Einheiten in Bezug auf die zentrale Einheit GameState anwendbar (Abbildung 5.8). PenaltyMessage PingMessage JoinMessage NetworkMessage +addListener() +getNewInstance() +getID() +getType() +setType() +sendTCP() +onReceiveTCP() +sendUDP() +onReceiveUDP() +notifyAllListeners() +read_object() +write_object() GameState «interface» MessageListener «interface» PenaltyListener «interface» PingListener «interface» JoinListener Abbildung 5.8: Klassen des Nachrichtensystems Die Nachrichten selbst werden in einem simplen Paketformat verschickt, welches aus einem Header und dem Payload besteht. Während bei TCP der Verbindungsteilnehmer über die ConnectionSession identifiziert wird, ist die Zuordnung bei UDP-Paketen nicht sofort ersichtlich (die Erkennung über den genutzten Port kann bei vielen tausend Spielern sehr umständlich werden). Daher unterscheiden sich die Header von TCP- und UDP-Nachrichten um zusätzliche Informationen. Der Header einer UDP-Nachricht sendet die ID der Nachricht und die eindeutige ID des Players bevor die Daten folgen. Diese Player ID ist bei TCP Nachrichten nicht nötig. Stattdessen wird die Länge des Payloads angegeben. Dies ist darin begründet, dass die TCP Verbindung aus einem Datenstrom liest, der bereits mehrere Nachrichten hintereinanderpuffern kann. Durch die 75 Längenangabe können die Grenzen einzelner Nachrichten aus diesem Strom erkannt werden. Um die Fehlertoleranz zu erhöhen, können beim TCP-Datenstrom einzelne Pakete durch Anfangs- und Endflags gekennzeichnet werden. Sollte die Bearbeitung des Empfangs von Paketen über eine TCP-Verbindung einmal aus der Synchronisation kommen, so würde zwar das aktuelle Paket unter Umständen unbrauchbar sein, aber nachfolgende Pakete könnten anhand der Flags entdeckt werden, und die Synchronisation würde wieder hergestellt sein. Abbildung 5.9: Paketformat einer Nachricht über TCP Verbindungen Beim Empfang wird nun zunächst die Nachricht eingelesen, indem das Startflag aus dem Datenstrom extrahiert wird und dann alle nachfolgenden Daten bis zum Endflag eingelesen werden. Ein Abgleich mit der Anzahl der eingelesenen Daten und dem Längenfeld validiert, ob die eingelesene Nachricht korrekt und vollständig empfangen wurde. 76 5.4.3. Alle Gesamtübersicht vorgestellten Klassen eines Client und eines Server haben folgende Zusammenhänge. Abbildung 5.10: Vollständiges Klassendiagramm eines Clients StandardServer «interface» MessageListener UDPServer Server GameState NetworkMessage TCPServer TCPConnectedClient ConnectionSession GameObject GameObjectAttributes «interface» Position Player PlayerAttributes Position2D Abbildung 5.11: Vollständiges Klassendiagramm eines Servers 77 5.4.4. Area of Interest Das Verwenden einer „Area of Interest“ ist bei massiven Multiplayer-Spielen von enormer Wichtigkeit und kann entscheidend zur Skalierbarkeit des Gesamtsystems beitragen. Hierbei filtert der verwendete Server Nachrichten nach Kriterien wie virtuellen Positionen der Spieler oder Spielparteizugehörigkeit und verringert somit deutlich die Last der weitergeleiteten Nachrichten. Das Prinzip der „Area of Interest“ lässt sich einerseits hardwareseitig durch die beschriebenen Zonenserver erreichen, andererseits sollte auch jeder einzelne Server softwareseitig das Aussenden der Nachrichten kontrollieren. Mögliche Implementierungen einer „Area of Interest“ im Sinne virtueller Spielerpositionen sind: Statische Einteilung der Spielwelt (mehrere „Zonen“ pro Server) Dynamische Anpassung pro Spieler Teilt man die Spielwelt in bestimmte Zonen ein, innerhalb derer Nachrichten ausgetauscht werden, während Nachrichten außerhalb nicht in diese Zone gelangen, so ergibt sich der Vorteil, die Spieler mit entsprechenden „Flags“ auszustatten, die angeben, in welcher Zone sich der Spieler befindet. Ein großer Nachteil hierbei taucht jedoch an den Grenzen dieser Zonen auf: Spieler die sich in der direkten Nähe eines anderen Spielers befinden, aber sich in einer anderen Zone aufhalten, werden vom lokalen Betrachter nicht registriert. Für solche Grenzen, sind also komplexere Verfahren erforderlich, da bei naiver Implementierung insbesondere ein Hin- und Herspringen eines Spielers zwischen zwei Zonen ständig wechselnde Mitspieler bewirken würde. Eine nicht-technische Lösung bietet hier wieder ein Angleichen durch das Spieldesign. So ist es beispielsweise denkbar, dass virtuelle Räume, Städte oder Gegenden als Zonen aufgefasst werden, die der Spieler explizit verlässt, wobei ein Wechsel eine kurze Spielpause bewirkt, während der neue Schauplatz geladen wird. Die hier implementierte Middleware nutzt die zweite Variante und verteilt die Nachrichten dynamisch. Dabei kann die Größe der „Area of Interest“ während der Laufzeit an die Serverlast angepasst werden. Spieler werden nur über Ereignisse innerhalb ihrer „Area of Interest“ informiert, indem ein einfacher Positionsvergleich für ausgehende Nachrichten durchgeführt wird. Nachteilig ist der Aufwand für das dynamische Filtern potentieller Empfänger. Allerdings ist dieser Aufwand im Vergleich zum ständigen Broadcast an alle Teilnehmer mehr als gerechtfertigt. 78 5.4.5. Flooding Algorithmus Um die Leistung des Servers auf hohem Niveau zu halten und den Server vor einer gewollten oder zufälligen Überlastung weitestgehend zu schützen, unterstützt die Middleware einen Mechanismus, der das „Fluten“ des Servers durch ständig sendende Clients vermeidet. Der dabei verwendete Algorithmus benutzt serverseitig für jeden verwalteten Client vier Parameter: das Flutintervall (floodingIntervall) die Flutschwelle (floodingThreshold) das Überschreitungslimit (floodingViolationLimit) und die Rücksetzschwelle (floodingResetThreshold) Diese Parameter können manuell eingegeben werden, sollten aber später durch ein entsprechendes Verfahren dynamisch anhand der aktuellen Serverlast bestimmt werden. Für jeden Client wird innerhalb des Flutintervalls die Anzahl seiner gesendeten Nachrichten (sowohl TCP als auch UDP) ermittelt. Dabei ist zu beachten, dass das implementierte Nachrichtensystem Prioritäten beachtet. Bisher genutzte Prioritätsstufen sind: 0 – höchste Priorität, d.h. diese Nachrichten werden stets gesendet 1 – zweite Prioritätsstufe, d.h. das Senden dieser Nachrichten kann eingeschränkt werden Übersteigt die Anzahl der Pakete der Priorität 1 in einem Flutintervall die Flutschwelle, so erhält der Client einen Punkt auf seinem Überschreitungskonto. Wiederholt sich dieses Fluten so oft, dass das Konto das Überschreitungslimit übersteigt, so erhält der Client vom Server eine Bestrafung in Form einer Penalty-Nachricht, die ihm mitteilt, wieviele Nachrichten er künftig (für eine angegebene Anzahl von Intervallen) pro Intervall (Länge des Intervalls definiert in der Penalty-Nachricht) versenden darf. Ist sein Kredit pro Penalty-Intervall aufgebraucht, werden nur noch Nachrichten versendet, deren Priorität 0 ist. Dies ist nötig, um bestimmte Spielfunktionen, wie beispielsweise das Verlassen des Spiels, trotz vergebener Penalties ausführen zu können. Alle anderen Nachrichten werden dann nicht mehr gesendet und der Client muss auf das nächste Intervall warten. Der Penalty teilt dem Client mit, dass er sich in den nächsten Zeitintervallen einschränken muss und gibt, wie oben erwähnt, gewisse Schranken vor, die zunächst einigermaßen großzügig ausgelegt sind. 79 Versucht der Client weiterhin zu fluten und nähert sich daher der vorgegebenen Schranke ständig an, so wird ein weiterer, strengerer Penalty vergeben. Insgesamt sieht der Algorithmus vier verschiedene Penalty-Level vor, in der sich jeder Client zu einem Zeitpunkt befinden kann. Abbildung 5.12 zeigt diese vier möglichen Penalty-Level mit beispielhaften Übergangsdaten. Zunächst befindet sich jeder Client im Zustand 0, indem soviel gesendet werden darf, wie man möchte. Die Flutschwelle beträgt hier zehn Nachrichten bezogen auf die Intervallgröße von einer Sekunde. Wird die Flutschwelle nun zu oft übertreten (Erreichen des Überschreitungslimits nach zum Beispiel 30 Verletzungen), so erhält der Client einen Penalty Level 1 vom Server und kann nun nur noch acht Nachrichten pro Sekunde versenden. Wird auch dieses Kontingent zu stark genutzt, so erhält der Client Penalty Level 2 und wird auf sechs Nachrichten eingeschränkt. Da der Client in der kürzeren Vergangenheit aggressives Flutverhalten gezeigt hat, gelangt er bei weiterem Ausnutzen des immer kleiner werdenden Kontingents allmählich in den dritten Level, indem nur noch 4 Nachrichten pro Sekunde erlaubt sind. Abbildung 5.12: Die vier Zustände des Flooding-Algorithmus Ist das Fluten nur von kurzer Dauer, so soll der Client nicht sofort bestraft werden oder aber vergebene Penalties allmählich wieder abgebaut werden. Nähert sich der Client dem Überschreitungslimit nur sehr langsam, so wird für jedes Intervall, das nicht die Flutschwelle übertrat ein Zähler hochgezählt. Erreicht dieser die genannte Rücksetzschwelle, bedeutet dies, dass der Client zwar ab und an ein Flutverhalten gezeigt hat, allerdings zwischendurch genug Pausen gelassen hat. In diesem Fall wird das Überschreitungskonto auf null zurück gesetzt und gegebenenfalls in ein niedrigeres Penalty Level zurückgeschaltet. Somit ist sichergestellt, dass Clients die kurzzeitig ein Flutverhalten gezeigt haben, die Möglichkeit besitzen in den normalen Spielmodus zurückzukehren. 80 5.5. Implementierung in eine Anwendung Rückblickend ein kurzer Überblick über den in dieser Version verfügbaren Funkionsumfang. Implementierte Funktionen funktionsfähiges und leicht erweiterbares Nachrichtensystem, Grundfunktionen wie Ping, Join, Quit, PlayerMove unterstützt Tool, welches die Erweiterung des Systems oder Spiels um beliebige Nachrichtentypen (beschrieben durch eine XML Datei) ermöglicht Verwaltung der Spieler und Spielobjekte (erweiterbar durch Spielentwickler) Flooding Algorithmus mit Penaltyfunktion zur Regulierung von Clients, die zu häufig senden Area Of Interest: Spieler erhalten nur Informationen, die für sie wichtig sind Das Gesamtpaket der Middleware für einen Client ist über die welches Klasse StandardClient zu erhalten, ein vollständiger Server kann über die Klasse StandardServer zum Laufen gebracht werden. Möchte man eine Anwendung wie eine GUI oder gar ein gesamtes Spiel aufsetzen, so müssen diese beiden Klassen einfach nur von der neuen Anwendung erweitert werden. 81 6. Evaluierung und Test “Der Glaube an das Zählen und Messen verführt in allen Künsten zu den gröbsten Fehlern.” – Paul Renner, deutscher Typograph Nach der Implementierung der grundlegenden Struktur der Middleware plus der in Kapitel 5 aufgeführten Funktionen, werden verschiedene Tests auf Funktionsfähigkeit und Performance durchgeführt. 6.1. Testumgebung und Vorgehensweise Die Tests werden unabhängig von einer mobilen Umgebung in einem LAN durchgeführt, da nur die Funktionsfähigkeit, Performance und das Verhalten der Middleware von Interesse ist. In dem lokalen Netzwerk wurden insgesamt neun Rechner verwendet, die im folgenden mit den Bezeichnungen Lab1 bis Lab9 gekennzeichnet sind. Jeder Rechner hat folgende Leistungsmerkmale: Windows XP Workstation Pentium 3GHz 1GB Arbeitsspeicher Dabei wird auf Lab1 die Serverversion der Middleware gestartet, während auf den Rechnern Lab2 – 9 je zehn Clientversionen laufen. Somit entsteht eine Testumgebung von einem Server und 80 verbundenen Clients. Der Server simuliert hierbei eine 2D Spielwelt mit 200x200 Feldern, auf denen sich Spieler aufhalten können. Die einzelnen Clients werden periodisch alle fünf Sekunden zwei Pingpakete, die mit dem Nachrichtensystem erstellt wurden, schicken: eines über TCP und eines über UDP. Diese „Pings“ entsprechen keinem üblichen Ping, sondern sind softwareseitig implementierte Nachrichten (siehe Abschnitt 5.4.2), die die aktuelle Auslastung des Servers über TCP und UDP überprüfen. Die damit erhaltenen Round Trip Times werden ebenfalls alle fünf Sekunden an den Server für Statistikzwecke übermittelt. 83 Die Rechner Lab2 – 9 werden in vier Spamming-Stufen eingeteilt, wobei jede Stufe zu einem gewissen Prozentsatz ein bestimmtes Flutverhalten ausführt und periodisch und zufällig sein Verhalten ändern kann. Nach jeweils einer Minute wird mit der vorgegebenen Wahrscheinlichkeit bestimmt, ob das vordefinierte Verhalten beibehalten wird oder ob ein zufälliges Verhalten in dem Bereich von 1 bis 20 zu sendenden Nachrichten pro Sekunde ausgeführt wird. Die Nachrichten, die dabei versendet werden, werden über UDP geschickt und stellen zufällige Bewegungen des Spielers auf dem Spielfeld dar. Alle eingehenden Bewegungsnachrichten werden vom Server umgehend an die Spieler weiterverteilt. In einem normalen Spiel würde natürlich keine sofortige Weiterleitung einer jeden Nachricht üblich sein. Statusupdates werden vom Server eher periodisch und leicht optimiert verschickt. Um aber den Sever einem gewissen Stress auszusetzen, der einer Situation mit mehreren hundert oder tausend Clients gleichkommt, werden alle Bewegungsnachrichten umgehend weitergeleitet. Die vier angesprochenen Spamming-Gruppen werden wie folgt verteilt: Gruppe 1: sehr starkes Spamverhalten Lab2 sendet 12 Nachrichten pro Sekunde und ändert sein Verhalten mit 33% Wahrscheinlichkeit nach einer Minute (d.h. er sendet mit etwa 66% Wahrscheinlichkeit weiterhin 12 Nachrichten pro Sekunde oder mit 33% Wahrscheinlichkeit führt er ein zufälliges Spamverhalten für die nächste Minute aus) Lab3 sendet 12 Nachrichten pro Sekunde und wechselt mit 66% Wahrscheinlichkeit Gruppe 2: starkes Spamverhalten Lab3 und Lab4 senden 9 Nachrichten pro Sekunde und wechseln mit 33% bzw. 66% Wahrscheinlichkeit ihr Verhalten pro Minute Gruppe 3: normales Spamverhalten Lab5 und Lab6 senden 6 Nachrichten pro Sekunde und wechseln mit 33% bzw. 66% Wahrscheinlichkeit ihr Verhalten pro Minute Gruppe 4: schwaches Spamverhalten Lab8 und Lab9 senden 3 Nachrichten pro Sekunde und wechseln mit 33% bzw. 66% Wahrscheinlichkeit ihr Verhalten pro Minute 84 Auf der Seite der Clients steht eine kleine Benutzeroberfläche (siehe Abbildung 6.1) zur Verfügung, die ankommende und ausgehende Nachrichten anzeigt und ein paar mögliche Funktionen wie Chat, Ping, Spielteilnahme und Spielabbruch bietet. Abbildung 6.1: GUI eines Clients Serverseitig wird jeder am Spiel teilnehmende Client mitprotokolliert und die aktuelle Position sowie Round Trip Times über TCP und UDP und der aktuelle Penalty Level des Flooding Algorithmus angezeigt. Ferner erlaubt die GUI des Servers das Ein- und Ausschalten der „Area of Interest“-Funktion zur Laufzeit mit verschiedenen Parametern (Abbildung 6.2). Abbildung 6.2: GUI des Servers mit 5 verbundenen Clients 85 Zu Beginn des Versuchs wird der Server gestartet. Anschließend werden alle Clients gestartet, so dass die Verbindung zum Server von allen Clients in einem kleinen Zeitfenster stattfindet. 6.2. Verhalten des Flooding Algorithmus Der Flooding Algorithmus soll das Fluten des Servers durch ein oder mehrere Clients verhindern, indem Penalties vergeben werden, die die Sendefähigkeit dieser Clients gegebenenfalls einschränken. In diesem Test werden in einem Abstand von zwei Minuten drei Messungen durchgeführt. Mehr Messungen sind in diesem Test nicht nötig, da das Verhalten der Clients nach einer kurzen Anlaufzeit größtenteils reguliert ist. Somit ist ist diese Anlaufzeit zunächst zu beobachten. Die im Test verwendeten Parameter des Flooding Algorithmus sind wie folgt: in Level 0: mehr als 30 mal 10 Nachrichten pro Sekunde führt zu Penalty Level 1 in Level 1: mehr als 30 mal mal 8 Nachrichten pro Sekunde führt zu Penalty Level 2 in Level 2: mehr als 30 mal mal 6 Nachrichten pro Sekunde führt zu Penalty Level 3 in Level 3: erlaube 4 Nachrichten pro Sekunde, bei Ausnutzung verweile in diesem Level Um einen Level heruntergesetzt zu werden, müssen mindestens 10 mal Sekunden registriert worden sein, in denen keine Verletzung des vorgegebenen Limits geschehen ist. 6.2.1. Erwarteter Versuchsausgang Obwohl das Verhalten der Clients zu einem großen Teil zufällig ist, fallen die Clients oft in das vorgegebene Spamverhalten ihrer Gruppe zurück. Somit sollten sich Clients mit einem höheren Flutverhalten im Durchschnitt in einem höheren Penalty Level befinden als Clients mit niedrigerem Flutverhalten. 6.2.2. Versuchsausgang und Auswertung Wie erwartet befinden sich die Clients der Gruppe 1 bei jeder Messung im Schnitt im höchsten Penalty Level und die Gruppe 4 im niedrigsten Level. Für die Gruppe 2 und 3 86 gibt es zunächst eine Abweichung zum erwarteten Ausgang in der Anlaufphase, in der die Penalty Level für die weniger spammenden Clients in den ersten zwei Messungen über dem Schnitt der stärker spammenden zweiten Gruppe liegen. Bei der letzen Messung stellt sich dann das erwartete Gesamtbild ein (Abbildung 6.3). Durchschnittslevel nach Gruppen 3 2,5 Gruppe 1 Durchschnittslevel Level 2 Gruppe 2 Durchschnittslevel 1,5 1 Gruppe 3 Durchschnittslevel 0,5 Gruppe 4 Durchschnittslevel 0 0 Minuten 2 Minuten 4 Minuten 6 Minuten Abbildung 6.3: Durchschnittliches Penalty Level der Spam-Gruppen Die Abweichung in der Anlaufphase kann darauf zurückgeführt werden, dass das Verhalten der verwendeten Clients nicht intelligent genug auf die vergebenen Penalties reagiert. Während Clients der Gruppe 1 häufig spammen und somit, sobald sie die höchste Penaltystufe erreicht haben, nur schwer wieder aus dieser herauskommen und Clients der Gruppe 4 durch ihr schwaches Flutverhalten nur selten in einen Penalty gelangen, ergibt sich bei den Clients der Gruppe 2 und 3 folgendes Problem: Ein Client benötigt mehr als 10 Nachrichten pro Sekunde, um überhaupt den ersten Penalty Level zu erreichen. Dies ist für Gruppe 2 und 3 (mit 9 bzw. 6 Nachrichten pro Sekunde) überhaupt nur möglich, wenn für sie ein zufälliges Verhalten mit mehr als 10 Nachrichten pro Sekunde generiert wurde. Solch ein zufälliges Verhalten kann jedoch sehr schnell in ein hohes Penaltylevel führen. Fällt der Client in sein vorgegebenes Verhalten zurück, so ist es auf einmal möglich, dass er trotz geringeren Spamverhaltens, keinen niedrigeren Level erreichen kann. Beispielsweise kann ein Client der Gruppe 3, der sich in Level 3 befindet (sende weniger als 4 Nachrichten, dann Level 2) und in sein altes Verhalten zurückfällt (sende 6 Nachrichten pro Sekunde) nicht den Level 2 erreichen, da er die vorgegebenen 4 Nachrichten pro Sekunde immer verletzt. Das Zurückfallen in eine niedrigere Stufe hängt hier also in großem Maße vom zufällig generierten Verhalten ab. Die für die Simulation präparierten Clients sind zu stur. 87 In einer realen Umgebung mit echten Spielern ist die Penaltyvergabe mit steigender Einschränkung jedoch sinnvoll, da der Spieler in höheren Penaltystufen gezwungen wird, sein Verhalten zu verändern (weniger Nachrichten schicken), um nach einer gewissen Zeit in den normalen Spielmodus zurückkehren zu dürfen. Die Anlaufphase des Algorithmus ist in Abbildung 6.4 veranschaulicht, die den durchschnittlichen Penalty Level aller Gruppen nach verschiedenen Messpunkten zeigt. Durchschnittliches Penalty Level 2 1,8 1,6 Level 1,4 1,2 Durchschnittliches Penalty Level 1 0,8 0,6 0,4 0,2 0 Zeit Abbildung 6.4: Anlaufphase des Flooding Algorithmus 6.3. Einfluss der „Area of Interest“ Es werden die Round Trip Times über UDP Nachrichten in einer ausgelasteten Serversituation unter verschieden großen „Area of Interest“ Werten untersucht. Die Round Trip Times werden dabei über einen Zeitraum von je drei Minuten pro „Area of Interest“ Wert protokolliert. Anschließend wird der Durchschnitt aller Clients betrachtet. Bei ausgeschalteter „Area of Interest“ sendet der Server in der Simulation jede eingehende Bewegungsnachricht umgehend an alle anderen Spielteilnehmer. Sendet jeder Spieler eine Nachricht, so ist der Aufwand für den Server quadratisch. Der Server hat je nach Anzahl der pro Sekunde gesendeten Nachrichten der 80 Clients folgende Anzahl ausgehender Nachrichten weiterzuleiten: 88 Nachrichten pro Sekunde pro Client Zu sendende Nachrichten pro Sek. 5 10 15 20 31.600 63.200 94.800 126.400 Bei einer Spielfeldgröße von 200x200 Felder, werden „Area of Interest“-Größen von 180, 150, 120, 90, 60 und 30 auf Auswirkung untersucht. Dabei beschreibt eine Größe von x, dass Spieler nur über Nachrichten informiert werden, die von Spielern kommen, die innerhalb des Quadrats liegen, das rechts, links, oben und unten durch den Abstand x von der Spielerposition gegeben ist. Eine Größe von 180 bedeutet somit, dass nur Spieler in den Ecken des Spielfelds profitieren, da für sie Spieler, die sich in anderen Ecken befinden unsichtbar sind. Somit ist einer „Area of Interest“-Wert von 180 nur eine sehr geringfügige Verbesserung der Lastsituation. 6.3.1. Erwarteter Versuchsausgang Durch Einschalten der „Area of Interest“ reduziert sich die Anzahl der weitergeleiteten Nachrichten. Je kleiner die „Area of Interest“, desto besser kann der Server softwareseitige UDP Ping-Anfragen beantworten. Die durchschnittlichen UDP Round Trip Times sollten mit reduzierter Größe der Area deutlich geringer werden. 6.3.2. Versuchsausgang Die UDP Round Trip Times der Clients nehmen ab einem Area-Wert von 100 deutlich ab. Dies ist dadurch begründet, dass Werte unter 100 auch für Spieler, die sich in der Nähe des Spielfeld-Zentrums befinden, immer weniger Nachrichten an diese und von diesen generieren. Für einen Wert von 90 wird pro Spieler im besten Fall (Spieler befindet sich in einer Ecke) ein Spielfeld von 90x90 = 8.100 Größe abgedeckt. Dies entspricht einer „Area of Interest“ von etwa 20%. Im schlechtesten Fall (näher am Zentrum des Spielfelds) hat das relevante Spielfeld die Größe 180x180 und deckt etwa 80% des gesamten Feldes ab. Die weiteren „Area of Interest“ Felder haben folgende Größen: 89 AOI Wert 180 150 120 90 60 30 best case 81% 56% 36% 20% 9% 2% worst case 100% 100% 100% 81% 36% 9% Tabelle 1: Relativer Anteil einer „Area of Interest“ am Gesamtspielfeld In Abbildung 6.5 sind die durchschnittlichen Umlaufzeiten über UDP aller 80 Clients des Versuchs protokolliert. Der Abfall der UDP Verzögerungen sind ab einem Wert um 100 deutlich zu beobachten. RTT bei verschiedenen AOI 4000 3500 RTT in ms 3000 2500 RTT bei verschiedenen AOI 2000 1500 1000 500 0 AOI = AOI = AOI = AOI = AOI = AOI = 180 150 120 90 60 30 Abbildung 6.5: Durchschnittliche UDP RTT bei verschiedenen Area of Interest Größen 90 7. Zusammenfassung und Ausblick “I never think of the future – it comes soon enough.” – Albert Einstein Setzt sich der Trend fort, dass Anwendungen und Spiele aus dem Desktop- und Konsolenbereich auch Einzug in den mobilen Markt finden, so ist es nur eine Frage der Zeit, bis die massiven Multiplayerspiele in großer Zahl für Handhelds verfügbar sind. Die Möglichkeit des „Pervasive Gamings“, immer und überall mit seinem Handy oder PDA an Spielen teilzunehmen, die sogar die reale und virtuelle Welt vermischen und tausende von Mitspielern beinhalten, klingt sehr verlockend. Schreckten die Entwickler bisher vor technischen Limitierungen der kleinen mobilen Geräte zurück, so ist es ebenfalls nur eine Frage der Zeit, bis sowohl die Hardware der Endgeräte als auch die Netzwerkinfrastruktur keine limitierenden Faktoren in Bezug auf Spielbarkeit und Spielfreude mehr sind. Die hier entworfene Middleware stellt somit ein Grundgerüst für künftige MMOGs dar, die unter anderem durch die Verwendung der Java-Plattform auf allen denkbaren mobilen Endgeräten, die eine Java Laufzeitumgebung bieten (insbesondere J2ME), eingesetzt werden kann. Mit der Implementierung eines Systems zum Austausch von Updatenachrichten zwischen den Spielern und den Servern wurde der Grundstein der Middleware gelegt, der nun ermöglicht beliebige neue Nachrichten durch den Spielentwickler hinzuzufügen. Neben den Grundzügen der MMOG-Middleware wurden ferner Mechanismen wie der „Flooding Algorithmus“ und „Area of Interest“ verwendet, die die Leistung des Systems vor Überlastung schützen sollen und somit letztendlich den Weg zur höheren Skalierbarkeit ebnen. Die folgenden Abschnitte beschreiben mögliche Ansätze für die Weiterentwicklung der Middleware in nächsten Versionen. 91 7.1. Gaming-Architekturen Die Middleware ist als klassisches Client/Server-System entwickelt worden. Um einem Spielentwickler mehr Freiheiten zu gewähren sind Umsetzungen für weitere GamingArchitekturen sinnvoll, wie sie in Abschnitt 2.3.1 erläutert wurden. Andere Architekturen wie Peer-to-Peer oder Zonenserver-Systeme können dabei aus den drei Klassen GameState, Client und Server gewonnen werden. Im Falle eines Zonenservers muss die Serverklasse um zusätzliche Information erweitert werden: Welche Server (IP Adressen) sind für alle Zonen zuständig? Wie reagiert ein Zonenserver, wenn ein Spieler seine Zone verlässt? (Übergabe an den nächsten Server) Wie reagiert ein Zonenserver, wenn ein Spieler seine Zone betritt? Der Client geht weiterhin von einem einzigen Server aus. Verlässt der Spieler eine Zone, so sollte er von seinem aktuellen Server Informationen über den nächsten Server erhalten. Der Client muss daher einfach den Wechsel von einem Server zum anderen implementieren. In einer P2P-Architektur ist eine etwas größere Anpassung notwendig. Da hier jeder Peer sowohl die Eigenschaften eines Servers als auch eines Clients haben muss, können die entsprechenden Klassen beide gleichzeitig für einen Peer verwendet werden. Da der GameState unabhängig von der Implementierung der Netzwerkschnittstelle ist, können beide Klassen auf den gemeinsamen GameState zugreifen. Die Implementierungen muss dann beachten, dass alle Statusupdates an alle anderen Peers über die Netzwerkschnittstelle informiert werden. Hierbei ist die Problematik zu beachten, dass Programmiersprachen wie Java grundsätzlich Funktionen für eine Client/ServerArchitektur bieten. Eine P2P-Lösung erfordert daher im Gegensatz zu anderen Client/Server-Varianten eine Erweiterung der Netzwerk-Schnittstelle „nach unten“ zum Netzwerk. Eine Lösung für Implementierungen einer P2P-Architektur in Java bietet zum Beispiel [JXTA06]. 92 7.2. I/O Multiplexing Die Middleware unterstützt sowohl TCP als auch UDP als Netzwerkprotokoll. Während UDP Nachrichten über einen einzigen Thread empfangen und den entsprechenden Spielern zugeordnet werden, wurde bei der Implementierung für TCP in dieser Version zunächst die übliche Variante des Multithreadings gewählt. Dabei wird für jeden verbundenen Client ein eigener Thread erzeugt. Entscheidet sich ein Spielentwickler, auch häufige Updatenachrichten über das zuverlässige TCP zu versenden, so skaliert das System nicht gut, da die häufigen Kontextveränderungen beim Threadwechsel bei sehr vielen Clients schwer ins Gewicht fallen, auch wenn eher kleinere Nachrichten ausgetauscht werden. Um die Skalierbarkeit entscheidend zu verbessern, bietet die Java New I/O API Funktionen, nicht-blockierende Sockets zu realisieren [Nacc02]. Dabei werden empfangene Netzwerkdaten über eine zentrale Instanz, dem Selector, verwaltet. Werden Daten empfangen, so erkennt der Selector den entsprechenden Client und informiert die Anwendung, so dass die neuen Daten eingelesen werden können. Durch Implementierungen wie [Santos04] sind nach Aussagen des Autors skalierbare javabasierende Server möglich, die mehrere tausend Verbindungen gleichzeitig verarbeiten können. Dieser Ansatz ist insbesondere im Hinblick auf die Diskussion „TCP vs. UDP“ in MMOGKreisen interessant. Ein Vergleich von TCP und UDP für verschiedene Nachrichtentypen eines Spiels kann durch nicht-blockierende Sockets, die Probleme wie zeitintensive Kontextwechsel reduzieren, durchgeführt und analysiert werden. 7.3. Umsetzen eines Clients auf J2ME Clientseitig sollte der nächste Schritt die Konvertierung der Middleware auf eine Java 2 Micro Edition fähige Version sein. Zwar besitzen Handys und PDAs die unterschiedlichsten Voraussetzungen, allerdings ist derzeit die Unterstützung von J2ME als Plattform noch am häufigsten – insbesondere auf Handys – vorzufinden. Da die Middleware komplett in Java implementiert ist, sollte eine Umstellung auf den reduzierten Funktionsumfang der Micro Edition mit geringem Aufwand durchzuführen sein. Dabei sollte unter Umständen beachtet werden, dass oftmals die HandheldHardware, aber auch Netzwerkbetreiber die Netzwerkfähigkeit durch Java einschränken. Häufig ist das einzig erlaubte Protokoll http, so dass für einige Geräte bestimmte Anpassungen für das http-Protokoll erforderlich sind. Auf Seite des Servers ist dann ein Servlet zu realisieren, dass die entsprechenden http-Anfragen verwaltet. 93 7.4. Location based Services Ortsbezogene Dienste sind noch auf einen kleinen Nutzerkreis beschränkt, aber auch hier ist der Trend vorstellbar, dass künftige Geräte standardmäßig mit GPS-Chips ausgestattet werden oder andere Möglichkeiten der Positionsermittlung erhalten. Es könnten daher Funktionen von der Middleware angeboten werden, die das Auslesen der aktuellen Position in vorgegebene Strukturen zur Verfügung stellen. 7.5. Weitere mögliche Funktionen Künftige Erweiterungen der Middleware könnten beinhalten: 94 Verwaltung persistenter Daten durch Anbindung an eine Datenbank (Abfrage registrierter Spieler, Speichern des Inventars, usw.) Rollback-Stack: alle Spieleraktionen können nach negativer Bestätigung rückgängig gemacht werden Dynamische Anpassung Serverauslastung Ausbau des Nachrichtenpools: Erweiterung der zur Verfügung gestellten Nachrichten (Definition in XML) und entsprechender Schnittstellenfunktionen des Flooding-Algorithmus an die aktuelle Verwendete Hilfsmittel Für die Erstellung der Diplomarbeit wurden folgende Hilfsmitteln verwendet: Java 2 SDK, SE v1.4.2 und NetBeans IDE 3.5.1 als Programmierumgebung Microsoft Word 2002 zur Erstellung dieses Dokuments Microsoft Office Visio 2003 für Abbildungen Microsoft Excel 2002 für Diagramme der Simulation und Test 95 Quellennachweis Literatur und Referenzen [802.20] „IEEE 802.20 Mobile Broadband Wireless Access (MBWA)” http://grouper.ieee.org/groups/802/20/ [Armi01] „Lag over 150 milliseconds is unacceptable“, G. Armitage, 2001. http://gja.space4me.com/things/quake3-latency-051701.html [BuNetz05] Bundesnetzagentur Jahresbericht 2005. http://www.bundesnetzagentur.de/media/archive/5278.pdf [DoMü02] „Computerspiele: Design und Programmierung“, Peter J. Dobrovka, Daniel Mühlbacher, Jörg Brauer. Bonn 2002. [Doom93] “Doom”, id Software 1993. [Emmer00] “Software Engineering and Middleware: A Roadmap”, Wolfgang Emmerich, Dept. of Computer Science, University College London, 2000. [EveOnl06] “Eve Online”, Eve-Online.de Serverstatistiken, CCP 2006. http://www.eve-online.de/page_serverstatus.php [EverQu99] “EverQuest”, Verant Interactive, 1999. [FAZ05] „Fünf Jahre UMTS - eine perfekte Illusion“, F.A.Z. 18.08.2005, Nr.191, Seite 16 [diepresse04] “Computerspiele: Hollywood übertrumpft”, Andreas Weinberger, 12.09.2004. http://www.diepresse.com/Artikel.aspx?channel=h&ressort=hg&id=442096 [GamDev05] “MMORPG and the ol’ UDP vs. TCP”, GameDev.net Forum Discussion, November 2005. http://www.gamedev.net/community/forums/topic.asp?topic_id=319003 [GamSur05] http://www.video-games-survey.com/online_gamers.htm 97 [Gasp05] „GASP: an open source gaming service middleware dedicated to multiplayer games for J2ME based mobile phones“, R. Pellerin, 2005. http://forge.objectweb.org/docman/view.php/198/122/Cgame05-pellerin.pdf [GaStar06] “World of Warcraft: Blizzard erklärt Lag-Probleme”, GameStar, Artikel vom 16.01.2006. http://www.gamestar.de/news/pc-spiele/adventure/30773/ [Gboy89] “Nintendo Gameboy”. Tragbare Spielekonsole, Nintendo 1989. [GiSi87] “Giana Sisters”, Time Warp Productions 1987. [heise06] “CeBIT 2006 Spezial – Mobilfunk”, Rudolf Opitz, Heise.de, 2006. http://www.heise.de/cebit/highlights/ct/2006/06032/ [Hsiao05] “Practical Middleware for Massively Multiplayer Online Games”, Tsun-Yu Hsiao, Shyan-Ming Yuan, National Chiao Tung University. September 2005. [IEEE02] “IEEE-SA IEEE Std 802.15.1™-2002 Press Release”, Juni 2002. http://standards.ieee.org/announcements/802151app.html [IMT2000] International Mobile Telecommunications-2000 http://www.itu.int/home/imt.html [JXTA06] “JXTA: P2P Sockets”, Brad Neuberg, Alex Lynch. http://p2psockets.jxta.org/ [LineAge2] „LineAge II“, NCSoft 2004. http://www.lineage2.com [Magon06] “LBS, the ingredients and alternatives”, A. Magon, R. Shukla. Abruf April 2006. http://www.gisdevelopment.net/technology/lbs/techlbs006pf.htm [MiMaze06] “MiMaze – The Multicast internet Maze”, letzter Abruf 23. September 2006. http://www-sop.inria.fr/rodeo/MiMaze/ [MMOGChart] http://www.mmogchart.com [Myers90] 98 „Computer Game Genres“, D. Myers, Play&Culture, 3, 286-301. 1990. http://www.loyno.edu/~dmyers/research_goals.html [Nacc02] “Introducing nonblocking sockets”, Giuseppe Naccarato, 2002. http://www.onjava.com/pub/a/onjava/2002/09/04/nio.html [OMA06] “Open Mobile Alliance”, http://www.openmobilealliance.org [OMA06b] „OMA Game Services Client Server Interface V1.0“, 2006. http://www.openmobilealliance.org/release_program/gs-csi_V1_0.html [OpScore05] “OPScore, or Online Playability Score: A Metric for Playability of Online Games with Network Impairments”, Ubicom Inc, March 2005. [OpWa02] „Overview of Location Technologies“, Openwave, November 2002. http://developer.openwave.com/omdtdocs/location_studio_sdk/pdf/Intro_to_ Location_Technologies.pdf [Palm03] „The Birth of the Mobile MMOG”, Tommy Palm, Gamasutra.com, 2003. http://www.gamasutra.com/resource_guide/20030916/palm_pfv.htm [PeDo03] “Bandwidth requirement and state consistency in three multiplayer game architectures“, Joseph D. Pellegrino, University of Delaware, Constantinos Dovrolis, Georgia Institute of Technology, 2003. [Pong72] „Pong“, Atari 1972. “Pong Story”, http://www.pong-story.com [Quake3] “Quake III Arena”, id Software 1999. [Santos04] “Building highly scalable servers with Java NIO”, Nuno Santos, 2004. http://www.onjava.com/pub/a/onjava/2004/09/01/nio.html [Schob03] “Strukturen und Motivation von Online-Spielgemeinschaften“, Jan Schob, Carl von Ossietzky Universität Oldenburg, 2003. http://gamers-survey.aldafea.de/studie/ [Schiller05] „Mobilkommunikation Kapitel 2: Technische Grundlagen“, Jochen Schiller, Vorlesung an der Freien Universität Berlin im Sommersemester 2005 [Siegen02] “Terror-Anschläge in Amerika: Reaktionen der Software-Branche“, Medienstudiengang, Universität Siegen 2002. http://www.medien-peb.uni-siegen.de/beta/methik/index.php?author=hp&page=43 99 [Silicon06] “GPS-Features sind der Renner auf US-Handys”, Silicon.de, März 2006. http://www.silicon.de/enid/0,4409c4636f6e5f6964092d093138333332093a0 95f7472636964092d093138353237/mobile_und_wireless_34.html [SpIn78] “Space Invaders”, Taito Corporation 1978. [StFi87] “Street Fighter”, Capcom 1987. [SuML89] „Super Mario Land“, Nintendo. 1989. [Swiss04] “swisstopo: Location Based Services“, Bundesamt für Landestopographie, 2004. http://www.swisstopo.ch/pub/down/about/coll/coll_2003_2004/16JAN04Location%20Based%20Services/lbs_2004.pdf [TagAttack05] „TagAttack“, CST Gruppe, Institut für Informatik, Freie Universität Berlin 2005-2006. http://www.inf.fu-berlin.de/inst/ag-tech/projects/gaming/TagAttack.htm [Tan03] “Computernetwzerke”, 4. überarbeitete Auflage. Andrew. S. Tannenbaum, Pearson Studium 2003. (Seite 330ff.) [Tan03b] “Computernetzwerke”, 4. überarbeitete Auflage. Andrew. S. Tannenbaum, Pearson Studium 2003. (Seite 345ff.) [Tan03c] “Computernetzwerke”, 4. überarbeitete Auflage. Andrew. S. Tannenbaum, Pearson Studium 2003. (Seite 87ff.) [Tan03d] “Computernetzwerke”, 4. überarbeitete Auflage. Andrew. S. Tannenbaum, Pearson Studium 2003. (Seite 182ff.) [Telek05] „T-Mobile Czech Republic startet UMTS TDD“, Deutsche Telekom, 23.06.2005 http://www.telekom3.de/de-p/aktu/3-ne/2005/06-j/050623-tmobile-cz-umts-ar,templateId=_2Fdt_2Fweb_2Fstruct_2FContent.jsp.html [Usgov00] “Statement by the president regarding the United States’ decision to stop degrading GPS accuracy”, The White House, Office of the Press Secretary, May 2000. http://www.ngs.noaa.gov/FGCS/info/sans_SA/docs/statement.html [WarCraft94] “WarCraft”, Blizzard Entertainment 1994. 100 [Wiec02] „Fallstudien zur organisatorischen Gestaltung der Softwareentwicklung bei deutschen Computerspielherstellern“, Henning Wiechers, Diplomarbeit im Studiengang Wirtschaftsinformatik. Universität Köln, Wirtschafts- und Sozialwissenschaftliche Fakultät 2002. [Wiki06] “Wikipedia – Die freie Enzyklopädie”, letzter Abruf 11. September 2006, http://de.wikipedia.org/wiki/Shard [Wiki06a] “Wikipedia – Die freie Enzyklopädie”, letzter Abruf 21. Mai 2006, http://de.wikipedia.org/wiki/Pong [Wiki06b] “Wikipedia – The Free Encyclopedia”, letzter Abruf 24. Juli 2006, http://en.wikipedia.org/wiki/World_of_warcraft [Wiki06c] “Wikipedia – Die freie Enzyklopädie”, letzter Abruf 24. Juli 2006, http://de.wikipedia.org/wiki/Bluetooth_SIG [Wiki06d] “Wikipedia – Die freie Enzyklopädie”, letzter Abruf 24. Juli 2006, http://de.wikipedia.org/wiki/General_Packet_Radio_Service [Wiki06e] “Wikipedia – Die freie Enzyklopädie”, letzter Abruf 24. Juli 2006, http://de.wikipedia.org/wiki/Global_System_for_Mobile_Communications [Wiki06f] “Wikipedia – Die freie Enzyklopädie”, letzter Abruf 24. Juli 2006, http://de.wikipedia.org/wiki/Global_Navigation_Satellite_System [WiMAX06] „WiMax Forum“, http://www.wimaxforum.org [WoW04] “World of WarCraft”, Blizzard Entertainment, 2004. [WRealms06] http://www.warcraftrealms.com Abbildungen 2.1 Super Mario Land Nintendo Database http://www.gamespy.com 2.2 Streetfighter http://www.capcom.com 2.3 Doom http://www.idsoftware.com 101 2.4 WarCraft III: Reigns of Chaos http://www.blizzard.com 2.5 The Secret Of Monkey Island http://www.adventureclassicgaming.com 2.6 Diablo II http://www.blizzard.com 2.7 Microsoft Flight Simulator 2004 http://www.microsoft.com/games/flightsimulator/screenshots.asp 2.8 FIFA 2005 http://www.easports.com/games/fifa2005/home.jsp 2.9 Pong 4 Spieler Version http://www.pong-story.com/arcade.htm 2.10 Super Mario Kart (SNES) http://www.videogamecritic.net/snesss.htm 2.15 Durchschnittliche Frags pro Minute bei verschiedenen Ping-Zeiten zwei unterschiedlicher Quake 3 Server http://gamer.ubicom.com/benchmarks/benchmarks.html 2.16 Serverstatus der WarCraft Realms http://www.warcraftrealms.com 4.1 TibiaME http://www.tibiame.com 4.2 Undercover 2: Merc Wars http://www.undercover2.com 4.3 Server Domainmodell der OMA GS Client-Server Interface Spezifikation http://www.openmobilealliance.org/release_program/docs/GS-CSI/V1_0-20060307C/OMA-TS-Game-Services-Client-Server-Interface-V1_0-20060307-C.pdf 4.4 GASP Design http://forge.objectweb.org/docman/view.php/198/123/GASP-CGAME05.pdf 102