Analyse von Entwurfsmustern in Mehrbenutzerspielen

Transcription

Analyse von Entwurfsmustern in Mehrbenutzerspielen
Bachelorarbeit
Analyse von Entwurfsmustern in
Mehrbenutzerspielen
von
Thomas Jarmer
Liegnitzer Strasse 6
65779 Kelkheim
(Matrikel 6074359)
angefertigt am
Lehrgebiet Praktische Informatik VI
-Verteilte SystemeProf. Dr. Jörg Haake
der FernUniversität Hagen
Betreuer:
Dr. Till Schümmer
Oktober 2006
Hiermit versichere ich, dass ich diese Arbeit selbstständig verfasst
und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt sowie Zitate kenntlich gemacht habe.
Frankfurt, im Oktober 2006
Datum
Unterschrift
Inhaltsverzeichnis
Abbildungsverzeichnis
v
Tabellenverzeichnis
viii
1. Einleitung
1.1. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Aufgabenstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1
1
2. Grundlagen
2.1. Entwurfsmuster . . . . . . . . . . . . . . . . . . .
2.2. Mehrbenutzerspiele . . . . . . . . . . . . . . . . .
2.2.1. Charakteristika von Mehrbenutzerspielen
2.2.2. Mehrbenutzerspieltypen . . . . . . . . . .
2.3. Pattern Mining . . . . . . . . . . . . . . . . . . .
2.4. Theoretischer Ansatz . . . . . . . . . . . . . . . .
.
.
.
.
.
.
3
3
5
5
6
8
9
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
14
15
18
18
18
20
22
23
23
26
27
28
30
31
31
32
33
35
3. Analyse der Benutzerschnittstelle
3.1. Auswahl der Spiele . . . . . .
3.2. Analysierte Spiele . . . . . . .
3.3. Ergebnisse der Analyse . . . .
3.3.1. Abbreviation . . . . .
3.3.2. Active Map . . . . . .
3.3.3. Attention Screen . . .
3.3.4. Away Message . . . .
3.3.5. Buddy List . . . . . .
3.3.6. Embedded Chat . . .
3.3.7. Emote . . . . . . . . .
3.3.8. Interactive User Info .
3.3.9. Invitation . . . . . . .
3.3.10. Local Awareness . . .
3.3.11. Login . . . . . . . . .
3.3.12. Navigation . . . . . .
3.3.13. User List . . . . . . .
3.3.14. Virtual Me . . . . . .
3.4. Zusammenfassung . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4. Analyse der Quelltexte
4.1. Auswahl der Spiele . . . .
4.2. Analysierte Spiele . . . . .
4.3. Ergebnisse der Analyse . .
4.3.1. Active Map . . . .
4.3.2. Buddy List . . . .
4.3.3. Embedded Chat .
4.3.4. Invitation . . . . .
4.3.5. Login . . . . . . .
4.3.6. Mediated Updates
4.3.7. User List . . . . .
4.3.8. What’s up . . . . .
4.3.9. Who’s that girl . .
4.4. Zusammenfassung . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5. Neue Entwurfsmuster
5.1. Automatic Software Update
.
5.2. Blind Date
. . . . . . . . . . . .
5.3. Name Generator
. . . . . . . . .
5.4. Navigator
. . . . . . . . . . . . .
5.5. Role Indicator
. . . . . . . . . .
5.6. Spectator
. . . . . . . . . . . . .
5.7. Waiting Queue
. . . . . . . . . .
5.8. Known Uses in seriösen Anwendungen
5.9. Zusammenfassung . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
39
39
40
40
41
42
45
47
48
49
50
50
51
51
.
.
.
.
.
.
.
.
.
58
58
62
66
70
74
77
81
84
85
6. Zusammenfassung
88
Literaturverzeichnis
89
A. Liste der Entwurfsmuster aus P4CMI
91
Inhaltsverzeichnis
iv
Abbildungsverzeichnis
2.1.
2.2.
2.3.
2.4.
Netzwerkstruktur von MMOGs. . . . . . . . . . . . . . . . . . . . . . . .
Netzwerkstruktur von MUGs und TBGs. . . . . . . . . . . . . . . . . . .
Abbildung zwischen PL1 und PL2, die weder injektiv noch surjektiv ist.
Bijektive Abbildung zwischen den einelementigen Teilmengen P Lx und
P Ly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5. Monomorphe Abbildung von der Menge PLT auf die Menge PL1 . . . .
3.1.
3.2.
3.3.
3.4.
3.5.
3.6.
3.7.
. 7
. 7
. 10
. 11
. 12
Abbreviation in Guild Wars. . . . . . . . . . . . . . . . . . . . . . . . .
Active Map in Counter Strike Source. . . . . . . . . . . . . . . . . . . .
Active Map mit Landschaftdetails in Guild Wars. . . . . . . . . . . . . .
Active Map in World of Warcraft. . . . . . . . . . . . . . . . . . . . . .
Ignore List in World of Warcraft. . . . . . . . . . . . . . . . . . . . . . . .
Attention Screen in Everquest 2. . . . . . . . . . . . . . . . . . . . . .
Ein Spieler wird in Dungeon & Dragons Online über den Wechsel in den
afk -Status informiert. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8. Benutzerdefinierte Away Message in Anarchy Online. . . . . . . . . . .
3.9. Visualisierung der Abwesenheit eines Spielers in Star Wars Galaxies. . . .
3.10. Buddy List in World of Warcraft. . . . . . . . . . . . . . . . . . . . . . .
3.11. On- und Offline-Buddies werden in Guild Wars getrennt angezeigt. . . . .
3.12. Embedded Chat in Star Wars Galaxies: Unten befindet sich das Eingabefeld und darüber die Ausgabe. . . . . . . . . . . . . . . . . . . . . . . .
3.13. Farblich Abhebung von unterschiedlichen Chat-Nachrichtentypen in World
of Warcraft. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.14. Filterung von Chat-Nachrichten mit Checkboxen in Guild Wars. . . . . .
3.15. Visualisierung von Emote in Ragnarok Online. . . . . . . . . . . . . . . .
3.16. Unterschiedliche Emotes in Guild Wars: a) die Spielfigur krümmt sich
vor Lachen b) die Spielfigur klopft sich auf den Schenkel c) die Spielfigur
gähnt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.17. In World of Warcraft werden in dem Embedded Chat zusätzliche Informationen zu Emote angezeigt. . . . . . . . . . . . . . . . . . . . . . . . .
3.18. In Everquest 2 wird die Interactive User Info über die Spielfigur
aufgerufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.19. Interactive User Info in Guild Wars. . . . . . . . . . . . . . . . . . .
3.20. In Guild Wars werden Mitspieler über ein Plus-Zeichen in eine Gruppe
eingeladen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.21. Ein Spieler in Ragnarok Online erhält eine Einladung in eine Gruppe . . .
18
19
20
20
21
21
22
22
23
24
24
25
25
26
26
27
27
28
28
29
29
3.22. Zwei Spieler aus dem gleichen Team kooperieren in Counter Strike Source,
nachdem sie sich gegenseitig durch Local Awareness wahrgenommen
haben. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.23. Login-Fenster in Dungeons & Dragons Online. . . . . . . . . . . . . . .
3.24. User List in Unreal Tournament 2004. . . . . . . . . . . . . . . . . . .
3.25. User List in World of Warcraft. . . . . . . . . . . . . . . . . . . . . . .
3.26. Erstellen der Spielfigur in Guild Wars. . . . . . . . . . . . . . . . . . . .
3.27. Kleidungsstücke in Guild Wars verändern das Aussehen der Spielfigur. .
3.28. 2D-Grafik der Spielfigur in World of Warcraft. . . . . . . . . . . . . . .
3.29. Ein Virtual ME im Inventarfenster von Guild Wars. . . . . . . . . . .
3.30. Beziehungen zwischen den identifizierten Entwurfsmustern . . . . . . . .
.
.
.
.
.
.
.
.
.
30
31
32
33
34
35
35
36
37
Active Map in BZFlag . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objekte für die Erzeugung der Active Map in BZFlag . . . . . . . . .
Interaktionsdiagramm für die Buddy List in Planeshift . . . . . . . . .
Planeshift - Embedded Chat Klassendiagramm . . . . . . . . . . . . . .
Erzeugen einer Chat-Nachricht in Quake 3 Arena . . . . . . . . . . . . .
Interaktionsdiagramm zu Invitation von Planeshift. . . . . . . . . . . .
Login-Fenster in Planeshift . . . . . . . . . . . . . . . . . . . . . . . . .
Klassendiagram für das Pattern Login von Planeshift . . . . . . . . . .
Interaktionsdiagramm zur Verteilung von Chat-Nachrichten über Mediated Updates in Quake 3 Arena . . . . . . . . . . . . . . . . . . . . . .
4.10. Erzeugen einer User List in Planeshift . . . . . . . . . . . . . . . . . .
4.11. Identifizierung eines Clients in Planeshift anhand der IP-Adresse . . . .
4.12. Identifizierung des Autors der Nachricht in Quake 3 Arena anhand der
Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.13. Beziehungen zwischen den identifizierten Entwurfsmustern. . . . . . . .
.
.
.
.
.
.
.
.
41
42
43
45
46
53
54
54
5.1. Automatic Software Upate in Guild Wars. . . . . . . . . . . . . . .
5.2. Automatic Software Upate in Entropia Universe. . . . . . . . . . .
5.3. Ein Meeting Stone als Implementierung einer Meeting Area in dem Spiel
World of Wacraft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4. Name Generator in Anarchy Online. . . . . . . . . . . . . . . . . . .
5.5. Name Generator in Star Wars Galaxies. . . . . . . . . . . . . . . . .
5.6. Navigator in Everquest 2. . . . . . . . . . . . . . . . . . . . . . . . . .
5.7. Navigator in Star Wars Galaxies. . . . . . . . . . . . . . . . . . . . . .
5.8. In World of Warcraft werden Gruppenleiter mit einer Krone am Avatar
visualisiert. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.9. Spectator in Counter StrikeSource. . . . . . . . . . . . . . . . . . . . .
5.10. In Guild Wars können Spieler Meisterschaften beobachten. . . . . . . . .
5.11. Waiting Loop in World of Warcraft. . . . . . . . . . . . . . . . . . . .
5.12. Konfiguration des Microsoft Windows Update. . . . . . . . . . . . . . .
5.13. Konfiguration von Automatic Software Update in Firefox. . . . . .
5.14. Konfiguration von Automatic Software Update in Thunderbird. . .
. 60
. 61
4.1.
4.2.
4.3.
4.4.
4.5.
4.6.
4.7.
4.8.
4.9.
Abbildungsverzeichnis
. 55
. 56
. 56
. 57
. 57
.
.
.
.
.
65
68
69
72
72
.
.
.
.
.
.
.
75
79
80
83
84
85
86
vi
5.15. Realisierung von Name Generator in der Internetauktionsplattform Ebay. 87
5.16. Waiting Queue in einem Portal für Computerspiele. . . . . . . . . . . . . 87
Abbildungsverzeichnis
vii
Tabellenverzeichnis
2.1. Zusätzliche Beschreibungslemente eines Entwurfsmusters in P4CMI. . . .
2.2. Die Charakteristiken der einzelnen Spieltypen. . . . . . . . . . . . . . . .
4
8
3.3. Charakteristische Eigenschaften der analysierten Spiele. . . . . . . . . . . 17
3.5. Identifizierte Entwurfsmuster anhand der Benutzerschnittstelle. . . . . . . 38
4.2. Identifizierte Entwurfsmuster anhand der Quelltexte. . . . . . . . . . . . . 52
1. Einleitung
1.1. Motivation
Die Spielbranche hat in den letzten Jahren enorme Zuwächse zu verzeichnen. Das ist
insbesondere den Mehrbenutzerspielen zu verdanken, die sich einer großen Beliebtheit
erfreuen. Durch sie werden Computerspiele solchen Zielgruppen nähergebracht, die bisher kein oder wenig Interesse an diesem Medium hatten [Die06]. Die Spielbranche hat
mittlerweile andere etablierte Wirtschaftsbereiche, wie zum Beispiel die Filmindustrie,
was den jährlichen Umsatz und Gewinn betrifft, überholt [Rau05]. Die Entwicklung von
Computerspielen zählt damit zu einem ernstzunehmenden Wirtschaftsbereich.
Trotzdem besteht immer noch ein Graben zwischen der Entwicklung von seriösen
Anwendungen und der Entwicklung von Computerspielen. Die Philosophie beider Welten
scheint nach wie vor unvereinbar zu sein. Diese Arbeit versucht den Graben zu verringern,
in dem sie mit Hilfe von Entwurfsmustern zeigt, dass es sehr wohl Gemeinsamkeiten
zwischen diesen vermeintlich völlig unterschiedlichen Bereichen gibt.
1.2. Aufgabenstellung
Im Rahmen dieser Bachelorarbeit sollen Entwurfsmuster anhand von Mehrbenutzerspielen analysiert werden. Als Referenz ist hierfür, die von T. Schümmer und S. Lukosch
entwickelte Pattern Language P4CMI1 [SLht] seitens der seriösen Anwendungen vorgegeben. Zu beachten ist hierbei, dass die Pattern Language sich während der Erstellung
dieser Arbeit noch in Entwicklung befand. Die fertige Version dieser Pattern Language
wird deshalb von der hier verwendeten Version abweichen. Aus diesem Grund werden
im Anhang alle Namen der Entwurfsmuster und ihr Zweck aufgeführt.
Zu den Zielen dieser Arbeit gehören zum einen die Identifizierung von Entwurfsmustern aus P4CMI in Mehrbenutzerspielen und zum anderen das Auffinden neuer Entwurfsmuster in Mehrbenutzerspielen, wobei diese wiederum im gleichen Kontext wie die
Entwurfsmuster aus P4CMI anwendbar sein müssen.
Im nächsten Kapitel werden zunächst fachliche Begriffe wie Entwurfsmuster und Pattern Mining erörtert. Außerdem werden Mehrbenutzerspiele kategorisiert. Schließlich
wird eine Theorie vorgestellt, die mit den Ergebnissen dieser Arbeit bewiesen werden
soll. In Kapitel 3 werden Entwurfsmuster, die in Spielen identifiziert worden sind, gemeinsam mit den Known Uses (vgl. Abschnitt 2.1) beschrieben. Anschließend wird der
gleiche Prozess wiederholt, dann allerdings mit dem Quellcode von Mehrbenutzerspielen.
1
Patterns for Computer Mediated Interaction
Die Ergebnisse werden am Ende jedes Kapitels kurz diskutiert. Danach werden die im
Rahmen der Analyse gefundenen Entwurfsmuster in der Form, wie sie in P4CMI beschrieben sind, präsentiert. Zum Schluss wird noch ein Ausblick auf weitere Forschungsansätze
im Kontext von Mehrbenutzerspielen und Entwurfsmuster gegeben.
1. Einleitung
2
2. Grundlagen
2.1. Entwurfsmuster
Ursprünglich stammt die Idee der Entwurfsmuster von dem Architekten Christopher
Alexander. Im Kontext seiner Arbeiten zur Stadtplanung und zur Konstruktion von
Gebäuden entwickelte er den Begriff des Entwurfsmusters, das er wie folgt definiert:
Each pattern describes a problem that occurs over and over again in our environment
an then describes the core of the solution to that problem in such a way that you can use
this solution a million times over without ever doing it the same way twice.[Ale77]
Auch wenn Softwareentwicklung bei weitem nicht so lange praktiziert wird, wie die
Konstruktion von Gebäuden oder die Planung von Städten, so hat doch die Komplexität dieses Prozesses das Bedürfnis geweckt, nach Methoden zu suchen, die diese Komplexität beherrschbarer machen. Im Schlepptau des objektorientierten Paradigmas und
dem damit verbundenen Wunsch nach wiederverwendbaren Quellcode, wurde die Idee
Alexanders von vier objektorientierten Software-Entwicklern, die man auch als GOF1
bezeichnet, aufgegriffen, um sie im Kontext von Softwareentwicklung einzusetzen und
die Wiederverwendbarkeit nicht nur auf eine abstraktere Ebene zu heben, sondern auch
im Sinne einer gezielten Problemlösung zu verwenden. Heute steht es außer Zweifel,
dass durch den Schritt der GOF die Welt der Softwareentwicklung nachhaltig verändert
wurde. Entwurfsmuster gibt es in der Entwicklung von Software in nahezu jedem Bereich sowie auf unterschiedlichen Abstraktionsebenen. Russel nennt in [Cor98] drei unterschiedliche Kategorien von Entwurfsmustern:
– sprachspezifische Entwurfsmuster (idioms)
– Entwurfsmuster (Design Patterns)
– architektonische Muster (High-Level Design Patterns)
Sprachspezifische Entwurfsmuster geben die Lösung eines Problems in einer bestimmten Sprache an. Als Beispiele für Entwurfsmuster dieser Art nennt Russel das C++
Orthodox Canonical Class Form idiom und das Handle/body class idiom von J. Coplien
[Cop92]. Die Form der Entwurfsmuster entsprechen der Form, wie sie von der GOF in
[GHJV97] beschrieben werden. Im Gegensatz zu den sprachspezifischen Mustern sind
diese prinzipiell unabhängig von einer konkreten Sprache, wobei es nicht ausgeschlossen ist, dass die Implementierung je nach Entwurfsmuster in einer bestimmten Sprache
1
Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Element
opener
intent
scenario
symptoms
solution
collaboration
rationale
check
danger spots
known uses
related patterns
Inhalt
Ein Bild, welches das Entwurfsmuster illustriert.
Das Ziel, welches mit dem Entwurfsmuster verfolgt wird
bzw. der Zweck des Entwurfsmusters.
Ein praktisches Beispiel für Laien.
Typische Anzeichen, die darauf hindeuten, dass das Pattern
angewendet werden sollte.
Lösung für das Problem.
Beschreibung des Ablaufs der Lösung.
Eine Begründung, weshalb das Entwurfsmuster eine Lösung
für das Problem darstellt.
Implementierungsaspekte, die mit der Anwendung des Entwurfsmusters zusammenhängen, aber über den Kern des
Problems hinausgehen.
Probleme, die auftreten können, wenn man das Entwurfsmuster implementiert.
Anwendungen, die das Entwurfsmuster implementieren.
Andere Entwurfsmuster, die mit diesem in irgendeiner Form
in Beziehung stehen.
Tabelle 2.1.: Zusätzliche Beschreibungslemente eines Entwurfsmusters in P4CMI.
leichter fällt. Auf der abstraktesten Ebene befinden sich die architektonischen Entwurfsmuster, die man auch als High-Level Design Patterns bezeichnet. Beispiele hierfür sind
das Entwurfsmuster MVC und die in P4CMI beschriebenen Entwurfsmuster.
Die Form der Beschreibung eines Entwurfsmusters ist nicht beliebig. Alexander hat
bereits in [Ale79] neben dem Namen des Entwurfsmusters hierfür folgende Elemente
festgelegt:
– Context
– System of Forces (die in dem Kontext auftreten)
– Configuration (die diese Kräfte auflöst)
Der Kontext stellt den Bereich, in dem das Entwurfsmuster angewandt werden kann,
dar. In unserem Fall ist zum Beispiel das Mehrbenutzerspiel ein Kontext. Die System
of Forces sind die Probleme oder Symptome, die es zu lösen gilt und eine bestimmte
Konfiguration führt zur Auflösung dieser Forces und wird dementsprechend in Entwurfsmustern durch das Element Lösung dargestellt.
Diese Elemente entsprechen einer minimalen Beschreibung eines Entwurfsmusters.
Sie wird häufig durch andere Elemente erweitert. Entwurfsmuster in P4CMI werden
zusätzlich durch Elemente beschrieben, die in Tabelle 2.1 aufgelistet sind.
2. Grundlagen
4
Fasst man eine Menge von Entwurfsmustern, die alle den gleichen Kontext haben
zusammen, dann erhält man eine Pattern Language.
2.2. Mehrbenutzerspiele
2.2.1. Charakteristika von Mehrbenutzerspielen
Gegenstand der Untersuchungen in dieser Arbeit sind neben Entwurfsmuster Mehrbenutzerspiele in elektronischer Form.
Ein Mehrbenutzerspiel wird hierbei als ein Computerspiel definiert, in dem mindestens zwei Personen, von jeweils unterschiedlichen Rechner aus, miteinander interagieren
können. Nach Zagal et al. unterscheiden sich Mehrbenutzerspiele durch sechs charakteristische Eigenschaften von Einzelbenutzerspielen [ZNR00], wobei zu beachten ist, dass
diese Eigenschaften nicht nur für elektronische Spiele gelten:
– Soziale Interaktion
– Wettstreit and Kooperation
– Synchronität
– Koordination
– Abhängigkeit von Eigenschaft und Hilfsmittel
– Existenz eines Meta-Spiels.
Zagal et al. teilen den Grad der sozialen Interaktion in drei Bereiche ein: Mehrbenutzerspiele die ohne soziale Interaktion auskommen, Mehrbenutzerspiele mit starker
Interaktion, sowie Mehrbenutzerspiele in denen soziale Interaktion möglich, aber nicht
zwingend notwendig ist. Zu welchem Bereich ein Mehrbenutzerspiel zählt, hängt nach
Zagal et al. von den Spielregeln, den Eigenschaften und Hilfsmitteln des Spiels ab. Dabei entsprechen die Benutzeroberfläche den Eigenschaften und die Funktionalität den
Hilfsmitteln des Mehrbenutzerspiels. Weiterhin unterscheiden Zagal et al. zwischen stimulierter und natürlicher sozialer Interaktion, wobei stimulierte soziale Interaktion durch
Spielregeln hervorgerufen wird und natürliche soziale Interaktion spontan während eines
Spiels entsteht.
Wettstreit und Kooperation ist die zweite genannte charakteristische Eigenschaft.
Spiele, in denen die Spieler konkurrieren zeichnen sich durch Gewinner und Verlierer aus,
wohingegen kooperative Spiele durch das Erreichen eines gemeinsamen Ziels bestimmt
werden. Kooperation und Wettstreit schließen sich nicht gegenseitig aus. Spiele können
gleichzeitig konkurrenzbetont und kooperativ sein, wenn die Spieler in Teams gegeneinander antreten. Für die Analyse haben Spiele, in denen Kooperation gefordert wird,
eine größere Bedeutung, da dadurch die Interaktion zwischen den Spielern gefordert wird,
was wiederum die Wahrscheinlichkeit einer Implementierung eines Entwurfsmusters aus
P4CMI erhöht.
2. Grundlagen
5
Die Synchronität, die dritte charakteristische Eigenschaft, beschreibt den Ablauf eines
Spiels. Zagal et al. definieren drei verschiedene Formen der Synchronität. Ein Spiel ist
nebenläufig, falls alle Spieler gleichzeitig am Spiel teilnehmen müssen und parallel Aktionen ausführen können. Das gleiche gilt für synchrone Spiele, allerdings kann zu einem
Zeitpunkt nur ein Spieler Aktionen ausführen. Dann gibt es noch die asynchronen Spiele,
wo die Spieler nicht zur gleichen Zeit am Spiel teilnehmen müssen, sondern unabhängig
von der Präsenz anderer Spieler ihre Aktionen ausführen können.
Die Koordination beschreibt, wer den Ablauf eines Spiels kontrolliert. Bei zentral koordinierten Spielen liegt die Kontrolle bei einem Spieler oder Computer, und bei verteilt
koordinierten Spielen wird die Kontrolle auf mehrere oder alle Teilnehmer verteilt.
Der vorletzte Punkt beschreibt, inwieweit ein Spiel von den Eigenschaften des Spiels
(wie zum Beispiel Farbe und Größe eines Spielgegenstands) und dem Hilfsmittel (zum
Beispiel ein Computer) abhängig ist. Diese Eigenschaft ist für uns dahingehend nebensächlich, da das Hilfsmittel in unserem Fall immer ein Computer ist.
In Mehrbenutzerspielen können Meta-Spiele bestehen. Meta-Spiele zeichnen sich dadurch aus, dass sie zwar parallel zu einem Spiel mit einem definierten Regelwerk auf
einem informellen Level ablaufen, aber trotzdem für den Ablauf eines Spiels entscheidend sind. Zagal et al. nennen das Bluffen beim Pokern als ein solches Meta-Spiel. Diese
Eigenschaft wurde bei keinem der Spiele festgestellt und hat insofern keine Relevanz für
die Analyse.
2.2.2. Mehrbenutzerspieltypen
Aktuelle Mehrbenutzerspiele lassen sich in folgende Typen einordnen:
– MMOG2
– MUG3
– TBG4
MMOGs zählt derzeit wohl zur populärsten Art der Mehrbenutzerspiele. Es handelt
sich hierbei um reine Online-Spiele, dass heißt die Spieler müssen sich via Internet mit einem zentralen Server, der in der Regel von dem Hersteller bereitgestellt wird, verbinden,
um an einem Spiel teilzunehmen (siehe Abbildung 2.1).
Die Dauer eines Spiels ist offen, da es vom Regelwerk her kein definiertes Ende gibt.
Außerdem läuft ein Spiel rund um die Uhr, und die Spieler haben die Wahl, dem Spiel
beizutreten oder es wieder zu verlassen, unabhängig von der Präsenz anderer Mitspieler.
Der Spielstand eines Spielers wird über die Abmeldung hinaus gespeichert. Kooperation
wird in dieser Art von Spielen häufig belohnt, ist aber für den Ablauf des Spiels nicht
zwingend notwendig. Das gleiche gilt auch für die Wettkämpfe zwischen den Spielern.
2
Massive Multiplayer Online Game
Multi User Game
4
Turn-Based Game
3
2. Grundlagen
6
Abbildung 2.1.: Netzwerkstruktur von MMOGs.
MUGs sind Computerspiele, die sowohl alleine, als auch gemeinsam mit anderen Personen gespielt werden können. Im Gegensatz zu den MMOGs können Spieler nicht nur
über das Internet, sondern auch in lokalen Netzwerken miteinander spielen. Zwar wird
auch in MUGs ein Spiel über einen zentralen Server koordiniert, dieser wird aber in der
Regel von einem der Mitspieler gehostet (siehe Abbildung 2.2).
Abbildung 2.2.: Netzwerkstruktur von MUGs und TBGs.
Die Spiele sind immer konkurrenzbetont, können bei Team-Spielen aber auch kooperativ sein. Die Spieler sind immer auf die Anwesenheit anderer Spieler angewiesen, weshalb
MUGs zu den nebenläufigen Spielen zählen.
2. Grundlagen
7
Charakteristik
soziale Interaktion
Synchronität
Wettstreit und Kooperation
Koordination
MMOG
möglich
asynchron
beides
zentral
MUG
möglich
nebenläufig
beides
zentral
TBG
möglich
synchron
Wettstreit
dezentral
Tabelle 2.2.: Die Charakteristiken der einzelnen Spieltypen.
TBGs sind nichts anderes als MUGs. Sie werden aber deshalb getrennt von den MUGs
erwähnt, weil sie sich von den übrigen MUGs in zwei Charakteristiken klar unterscheiden. Zum einen sind sie nicht nebenläufig, sondern synchron, denn Spieler können nicht
gleichzeitig agieren. Sie müssen ihre Aktionen nacheinander ausführen. Zum anderen
ist das Spiel aus diesem Grund dezentral. Jeder Spieler kann, sobald er am Zug ist,
entscheiden, wann er seine Aktionen abschließt und das Spiel fortgeführt wird.
Die Charakteristiken aller Spieltypen sind nochmal in Tabelle 2.2 zusammengefasst.
Hier sieht man auch, dass es derzeit keine kommerziellen Mehrbenutzerspiele gibt, in
denen soziale Interaktion zwingend vorausgesetzt wird.
2.3. Pattern Mining
Die Entwurfsmuster in Kapitel 5 sind die Ergebnisse eines Prozesses, den man als Pattern
Mining bezeichnet. Genauer gesagt, handelt es sich hierbei um die gezielte Suche nach
neuen Entwurfsmustern, wobei diese Suche stets im Rahmen eines bestimmten Kontextes
erfolgt.
Entwurfsmuster lassen sich auf verschiedene Weise ausgraben. Adrian E. DeLano
nennt hierzu sechs Typen von Pattern Mining und teilt sie in die folgenden drei Kategorien ein [DeL98]:
– persönliche Beiträge
. persönliche Beiträge basierend auf Fachwissen
. persönliche Beiträge basierend auf Erfahrung
– fremde Beiträge
. Graben nach fremden Beiträgen in Interviews mit Experten
. Graben nach fremden Beiträgen in den Erfahrungen von anderen
. Graben als Unterstützer nach fremden Beiträgen
– Pattern Mining Workshop
Bei den persönlichen Beiträgen sind der Autor des Entwurfsmusters und die Quelle des
Entwurfsmusters dieselbe Person. Während Beiträge basierend auf Fachwissen als Quelle
2. Grundlagen
8
den Autor des Entwurfsmusters besitzen, weiten Beiträge,die auf Erfahrung basieren, die
Suche auf Kollegen des Autors aus.
Die fremden Beiträgen zeichnen sich dadurch aus, dass Autor und Quelle des Entwurfsmusters unterschiedliche Personen sind. Bei dem ersten Typ dieser Kategorie werden
Experten, bei denen man entsprechendes Wissen vermutet, interviewt und anschließend
die Entwurfsmuster aus den Aufzeichnungen extrahiert. Bei dem zweiten Typ dieser Kategorie dienen im Prinzip alle Personen, mit denen der Entwurfsmusterausgrabende in
Kontakt kommt, als Quelle für ein neues Entwurfsmuster. Diese Methode hat im Gegensatz zu allen anderen Typen von Pattern Mining einen zufälligen Charakter. Die letzte
Methode der fremden Beiträge besteht darin, dass ein Entwurfsmusterausgrabender einer anderen Person, die meint selbst ein Entwurfsmuster gefunden zu haben, bei der
Bergung des Entwurfsmusters hilft.
Die dritte und letzte Kategorie ist auch gleichzeitig die letzte Methode des Pattern
Mining. Im Pattern Mining Workshop wird eine Gruppe von Personen, die alle eine gemeinsames Basiswissen besitzen, dass für das Pattern Mining erfolgversprechend scheint,
gemeinsam mit einem Moderator und ein oder mehreren Entwurfsmusterausgrabenden
versammelt. Diejenigen, die die Entwurfsmuster ausgraben wollen, sind lediglich Zuhörer
und notieren, was die Gruppe unter der Leitung des Moderators diskutiert. Eventuell
wird nach dem Workshop der ein oder andere Teilnehmer nochmal interviewt, falls für
die Entwurfsmusterausgrabenden noch Fragen offen sind. Anschließend werden so weit
möglich die Entwurfsmuster aus den Aufzeichnungen extrahiert.
In dieser Arbeit wurde eine Methode verwendet, die nicht eindeutig einer der genannten Typen von Pattern Mining zuzuordnen ist. Und zwar wurden die Anwendungen
dahingehend analysiert, ob sie eine Funktion oder ein Feature besitzen, welches die
Lösung eines Problems bezüglich des Kontextes von P4CMI darstellt. Das Auffinden
einer derartigen Funktion führte dann zu einer Suche nach weiteren Known Uses und
der anschließenden Formulierung des Entwurfsmusters, wie sie in Kapitel 5 aufgeführt
sind.
Man kann aber die Anwendung als Wissen eines Experten interpretieren. Dieser Experte stellt ein fremde Person dar. Deshalb können wir unsere Methode zwar nicht einem
der genannten Typen, aber dennoch der Kategorie fremde Beiträge zuordnen.
2.4. Theoretischer Ansatz
In Abschnitt 1.1 wurde angedeutet, dass die Welt der seriösen Anwendungen und die
Welt der Computerspiele voneinander lernen bzw. profitieren können. Hier soll diese Idee
anhand einer Theorie konkretisiert werden.
Wir nehmen an, dass zwischen den Entwurfsmustern beider Welten ein Homomorphismus besteht. Um festzustellen, ob diese Vermutung zutrifft, vergleichen wir zunächst
zwei Pattern Languages aus den beiden Welten miteinander. Als Pattern Language für
die Welt der seriösen Anwendungen wird die bereits in der Aufgabenstellung erwähnte
P4CMI verwendet. Aus Mangel an Alternativen wird sie mit der Pattern Language aus
2. Grundlagen
9
[Bjö04] verglichen, die wir der Einfachheit halber im weiteren mit PIGD bezeichnen wollen. PIGD beinhaltet im Gegensatz zu P4CMI eine vereinfachte Form der Beschreibung
von Entwurfsmustern. So werden die in jeder Pattern Language üblichen Problem und
Solution Beschreibungen, wenn dann nur implizit, in Core Definition genannt. Außerdem
haben sich unter den Entwurfsmustern in PIGD auch Klassifikationen gemischt, denn
einige der dort aufgeführten Entwurfsmuster wie Single-Player Games und MultiPlayer Games sind eher Klassifikationen als Entwurfsmuster im eigentlichen Sinne.
Trotzdem halten wir aus genanntem Grund an dieser Pattern Language fest, werden sie
aber aufgrund der Defizite später durch eigene Entwurfsmuster aufwerten.
Betrachten wir die beiden Pattern Languages, so stellen wir fest, dass auf beiden
Seiten Entwurfsmuster existieren, die in der jeweils anderen Pattern Language nicht
vorkommen (siehe Abbildung 2.3).
Abbildung 2.3.: Abbildung zwischen PL1 und PL2, die weder injektiv noch surjektiv
ist.
So existiert zum Entwurfsmuster Embedded Chat kein Pendant in PIGD und umgekehrt kein vergleichbares Entwurfsmuster von Luck aus PIGD in P4CMI. Somit kann
weder eine injektive noch surjektive Abbildung zwischen beiden Mengen von Entwurfsmustern bestehen. Ein Homomorphismus zwischen P4CMI und PIGD wäre damit entgegen unserer Vermutung zunächst einmal widerlegt.
Auch wenn kein Homomorphismus zwischen beiden Pattern Languages besteht, so
können wir immer noch annehmen, dass zwischen Teilmengen der Pattern Languages
eine homomorphe Abbildung existiert. Da die kleinste Teilmenge, die hierfür in Frage
kommt, die einelementige Menge ist, reicht es aus, zwei Entwurfsmuster zu finden, die
aufeinander abgebildet werden können.
Entwurfsmuster die diese Eigenschaft besitzen, sind Virtual Me aus P4CMI und
Avatars aus PIGD. So wird Virtual Me in P4CMI folgendermaßen beschrieben:
Create a virtual representation of the users’ self that is seen by other users before
”
and during interaction.“
und Avatars in PIGD:
2. Grundlagen
10
The players are represented as personalized Avatars in Massively Multiplayer Online
”
Roleplaying Games . . .“
Beide Entwurfsmuster beschreiben demnach die Repräsentation des Anwenders durch
ein Objekt in der virtuellen Welt. Da sowohl Avatars auf Virtual Me abgebildet werden kann, also auch umgekehrt Virtual Me auf Avatars, ist die Abbildung zwischen
den beiden einelementigen Mengen bijektiv und wir erhalten den vermuteten Homomorphismus in Form einer isomorphen Abbildung (siehe Abbildung 2.4).
Abbildung 2.4.: Bijektive Abbildung zwischen den einelementigen Teilmengen P Lx und
P Ly .
Da uns der Isomorphismus bezüglich der einelementigen Mengen nicht signifikant genug erscheint, ändern wir den Vergleich zwischen beiden Welten insofern ab, dass wir
die Entwurfsmuster, die in Kapitel 5 beschrieben werden, hinzunehmen und sie in einer neuen Pattern Language PLT zusammenfassen. Die Menge dieser Entwurfsmuster
bezeichnen wir mit PT . Ferner sei P1 die Menge der Entwurfsmuster von P4CMI und
P2 die Menge der Entwurfsmuster von PIGD. Da die Entwurfsmuster aus PLT für die
Kontexte von CMI5 und Mehrbenutzerspiele gelten, kann man die Mengen von P1 und
P2 auf folgende Weise erweitern:
P1 := P1 ∪ PT
P2 := P2 ∪ PT
5
Computer Mediated Interaction
2. Grundlagen
11
Da nun gilt:
∀p ∈ PT : p ∈ P1 ∧ p ∈ P2 ⇒ PT 7→ P1 ∧ PT 7→ P2 sind injektiv
∃p ∈ P1 ∧ ∃p ∈ P2 : p ∈
/ PT ⇒ PT 7→ P1 ∧ PT 7→ P2 nicht surjektiv
haben wir einen weiteren Homomorphismus, denn die Abbildung zwischen PLT und
den anderen beiden Pattern Languages is monomorph (siehe Abbildung 2.5).
Abbildung 2.5.: Monomorphe Abbildung von der Menge PLT auf die Menge PL1
Das es einen Homomorphismus zwischen den Entwurfsmustern beider Welten gibt, haben wir bewiesen. Gilt dies auch für Beziehungen zwischen Entwurfsmustern? Wir wollen
hier nur den Fall diskutieren, dass eine Beziehung von P4CMI nach PIGD abgebildet
werden kann.
Sei die Menge RP der in Beziehungen stehenden Entwurfsmustern innerhalb einer
Menge P wie folgt:
RP := {(pi , pj )|pi , pj ∈ P ∧ pi related pj }
dann sprechen wir von einer starken Beziehung, wenn gilt:
(pi , pj ) ∈ RP1 ∧ pi ∈ P2 ⇒ pj ∈ P2
und von einer schwachen Beziehung wenn gilt:
(pi , pj ) ∈ RP1 ∧ pi ∈ P2 ⇒ pj ∈
/ P2
Um zu zeigen, dass starke Beziehungen existieren, erweitern wir PIGD durch Entwurfsmuster aus P4CMI, die anhand von Known Uses in Mehrbenutzerspielen identifiziert
2. Grundlagen
12
werden können. Im folgenden Kapitel beginnen wir die Identifikation durch die Analyse
der Benutzerschnittstellen von Mehrbenutzerspielen und führen anschließend den gleichen Prozess mit der Analyse des Quelltextes von Mehrbenutzerspielen durch. Am Ende
des Kapitels diskutieren wir dann die Ergebnisse.
Abschließend soll noch die Frage beantwortet werden, welcher Vorteil durch die Kenntnis über einen vorhandenen Homomorphismus gewonnen wird. Identifiziert man nämlich
ein Entwurfsmuster aus dem Bereich der seriösen Anwendungen anhand von Known Uses
in Mehrbenutzerspielen, dann lässt sich daraus schlussfolgern, dass dort auch die gleichen
Forces bestehen wie in dem Bereich der seriösen Anwendungen. Das bedeutet wiederum, dass wenn man diese Forces in anderen Spielen vorfindet, dort auch das gleiche
Entwurfsmuster anwenden kann.
Dafür ist es aber wie bereits erwähnt erforderlich, nachzuweisen, dass auch in den
Mehrbenutzerspielen die gleichen Forces vorhanden sind. Da die PIGD die Forces nicht
explizit beschreibt, kann jedoch an dieser Stelle nicht näher auf diesen Aspekt eingegangen werden.
2. Grundlagen
13
3. Analyse der Benutzerschnittstelle
3.1. Auswahl der Spiele
Bei der Auswahl der Spiele wurde darauf geachtet, dass mindestens ein Spiel zu jedem
in Kapitel 2.2.2 genannten Typ gehört. Es wurde auch Wert auf die Aktualität der
Spiele gelegt. Von den charakteristischen Eigenschaften aus Kapitel 2.2.1 waren nicht
alle erwünscht. Spiele ohne soziale Interaktion wurden beispielsweise nicht berücksichtigt,
weil dort weniger Entwurfsmuster gefunden wurden. Die Anforderungen ließen sich zum
Teil nicht immer erfüllen. So musste bei der Auswahl von TBGs auf deren Aktualität
verzichtet werden. Ob die fehlende Aktualität bei den TBGs die Ursache für die gerade
dort besonders geringe Anzahl an identifizierten Entwurfsmustern ist, kann nur vermutet
werden. Der Vollständigkeit halber sollen sie aber trotzdem erwähnt werden. Zu den
charakteristischen Eigenschaften aller analysierten Spiele findet man eine Übersicht in
Tabelle 3.3, am Ende dieses Kapitels.
Bevor wir zu den Ergebnissen der Analyse kommen, soll noch erwähnt werden, dass es
sich bei aktuellen MMOGs zum großen Teil um MMORPGs1 handelt [KLXH04]. Bei den
hier analysierten MMOGs handelt es sich sogar ausnahmslos um MMORPGs. Deshalb
werden wir den Begriff MMORPG im folgenden synonym für MMOG verwenden.
1
Massive Multiplayer Online Roleplaying Game
3.2. Analysierte Spiele
Spiel
Beschreibung
Bei Anarchy Online handelt es sich um ein MMORPG [Fun01]. Das
Spiel ist asynchron. Es müssen demnach nicht alle Spieler gleichzeitg an
einem Spiel teilnehmen. Soziale Interaktion ist ebenfalls möglich, wird
aber nicht vorausgesetzt. Die Koordination erfolgt über einen Server und
ist daher zentriert. Kooperation entsteht zum einen dadurch, dass der
Spieler sich einer von zwei verfeindeten Fraktionen anschließen kann. Die
Spieler einer Fraktion kämpfen gemeinsam gegen die Spieler der anderen Fraktion, wodurch das Spiel auch konkurrenzbetont wird. Außerdem
können die Aufgaben von den Spielern gemeinsam in einer Gruppe gelöst
werden, was wiederum kooperativ ist.
Carcasonne [Koc04] ist die elektronische Umsetzung des gleichnamigen
Brettspiels. Das Spiel ist ein TBG. Die Spieler können über ein lokales
Netzwerk oder via Internet gegen andere Spieler antreten. Die Koordination ist, trotz der Durchführung über einen zentralen Server, dezentral,
da ein Spieler der aktuell am Zug ist, entscheidet wann er seinen Zug
bestätigt und das Spiel damit fortgesetzt wird. Das Spiel ist konkurrenzbetont und kooperativ. Soziale Interaktion ist möglich, jedoch nicht
zwingend notwendig.
Counter Strike Source ist ein MUG [Val05]. Soziale Interaktion ist
möglich, jedoch nicht zwingend notwendig. Das Spiel läuft über einen
Server, weshalb die Koordination zentriert ist. Da Teams gegeneinander
antreten ist das Spiel konkurrenzbetont und kooperativ. Der Ablauf des
Spiels ist nebenläufig.
Dungeon & Dragons Online zählt zu den MMORPGs [Tur06]. Der Ablauf des Spiels ist asynchron. Soziale Interaktion ist möglich, aber nicht
zwingend notwendig. Das Spiel ist kooperativ, da die Spieler gemeinsam
Aufgaben lösen können. Außerdem ist die Koordination zentriert, da die
Steuerung über einen zentralen Server erfolgt.
Bei Everquest 2 handelt es sich um ein MMORPG [Son04]. Das Spiel
ist asynchron und die Koordination ist zentriert. Das Spiel ist darüber
hinaus konkurrenzbetont, da die Spieler gegeneinander kämpfen oder die
Aufgaben gemeinsam lösen können. Soziale Interaktion ist möglich, aber
nicht zwingend notwendig.
3. Analyse der Benutzerschnittstelle
15
Spiel
Beschreibung
Entropia Universe2 [Min03] ist ein MMORPG. Die Koordination ist zentriert und der Ablauf des Spiels ist asynchron. Es ist das einzige Spiel mit
einer Real Cash Economy. Dass heißt, die Währung im Spiel wird von
dem Hersteller und Betreiber in reale Währung umgetauscht und umgekehrt. Das fördert den Handel und die soziale Interaktion innerhalb des
Spiels, trotzdem wird soziale Interaktion nicht zwingend vorausgesetzt.
Spieler können Teams bilden und kollaborieren.
Guild Wars [Are05] ist ein MMORPG. Soziale Interaktion ist möglich
aber nicht notwendig. Das Spiel selbst besteht aus zwei Teilen. Der Rollenspielteil ist kooperativ, da Spieler gemeinsam Aufgaben lösen können.
In dem konkurrenzbetonten und kooperativen Teil, treten die Spieler wie
Counter Strike Source in Teams gegeneinander an Der Rollenspielteil ist
asynchron und der Teamspielteil ist nebenläufig. Das Spiel läuft über
einen Server und ist damit zentral koordiniert.
Ragnarok Online [Gra04] ist ein koreanisches MMORPG. Soziale Interaktion ist möglich, aber nicht zwingend notwendig. Gruppen oder Gilden
fördern die Kooperation von Spielern. Durch einen Server wird das Spiel
zentral koordiniert. Der Spielverlauf ist asynchron.
Scrabble [Ubi03] ist ein TBG, welches das gleichnamige Gesellschaftsspiel in eine elektronische Version umsetzt. Einer der Spieler hostet das
Spiel. Da das Spiel aber synchron ist, ist die Koordination dezentral. Die
Spieler können nur konkurrieren. Eine Kollaboration ist nicht möglich.
Star Wars Galaxies [Son03] ist ein MMORPG. Soziale Interaktion ist
möglich, wird jedoch nicht vorausgesetzt. Der Spielverlauf ist asynchron
und wird von einem Server zentral koordiniert. Die Spieler können in
Gruppen kooperieren.
Unreal Tournament 2004 [Epi04] ist ein MUG. Die Spieler können via
LAN oder Internet in Teams oder einzeln konkurrieren. Hierbei ist soziale Interaktion möglich aber nicht zwingend notwendig. Das Spiel wird
immer zentral von einem Server koordiniert und der Spielverlauf ist synchron. Das Spiel ist grundsätzlich konkurrenzbetont, aber durch den
Team-Modus auch kooperativ.
World of Warcraft [Bli06] ist ein MMORPG. Das Spiel erlaubt eine soziale Interaktion, setzt diese aber nicht voraus. Die Spieler können in
Gruppen oder Gilden kollaborieren. Durch so genannte Duelle zwischen
einzelnen Spielern ist das Spiel aber auch konkurrenzbetont. Koordiniert wird World of Warcraft durch einen zentralen Server. Das Spiel ist
asynchron.
2
ehemals Project Entropia
3. Analyse der Benutzerschnittstelle
16
3. Analyse der Benutzerschnittstelle
17
beides
beides
zentral
zentral
zentral
zentral
MMOG
asynchron
möglich
Kollaboration
Entropia
Universe
zentral
MMOG
asynchron
möglich
Kollaboration
Everquest
2
zentral
MMOG
asynchron
möglich
Kollaboration
Guild
Wars
zentral
MMOG
asynchron
möglich
Kollaboration
TBG
synchron
möglich
Konkurrenzbetont
verteilt
Ragna- Scrabrok
ble
Online
Tabelle 3.3.: Charakteristische Eigenschaften der analysierten Spiele.
verteilt
möglich
möglich
Kollaboration
MMOG
asynchron
MUG
synchron
TBG
nebenläufig
möglich
Spieltyp
Synchronität
Soziale Interaktion
Konkurrenzbetont
Kollaboration
Koordination
Carcas- Counter Dungeon
sonne
Strike
& DraSource
gons
Online
MMOG
asynchron
möglich
beides
Anarchy
Online
Entwurfsmuster
zentral
MMOG
asynchron
möglich
beides
Star
Wars
Galaxies
zentral
MUG
nebenläufig
möglich
beides
Unreal
Tournament
2004
zentral
MMOG
asynchron
möglich
beides
World
of
Warcraft
3.3. Ergebnisse der Analyse
Im folgenden werden die Ergebnisse der Analyse der Benutzerschnittstellen beschrieben. Dabei werden die identifizierten Entwurfsmuster in alphabetischer Reihenfolge aufgezählt. Zu jedem Entwurfsmuster wird zunächst dessen Zweck beschrieben. Anschließend werden die Spiele, bei denen das Entwurfsmuster gefunden wurde, sowie die Besonderheiten und Unterschiede der Implementierungen besprochen. Als Beleg werden
Screenhots, die während der Ausführung eines Spiels angefertigt wurden, verwendet.
3.3.1. Abbreviation
Der Zweck des Entwurfsmusters Abbreviation ist es, den Aufwand, der mit der textuellen Kommunikation verbunden ist, durch Abkürzungen oder übliche Phrasen zu reduzieren.
Abbreviation ist eines der wenigen Entwurfsmuster, die in allen Spielen identifiziert
werden konnten. Die Voraussetzung für Abbreviaton ist das Entwurfsmuster Embedded Chat (vgl. Abschnitt 3.3.6), das deshalb auch in allen Spielen identifiziert werden
konnte.
Neben den Abkürzungen wie imo 3 , die man aus der seriösen“Anwendungswelt kennt,
”
fällt bei der Analyse auf, dass sich offensichtlich neben den bekannten Abkürzungen auch
spielspezifische Abkürzungen entwickelt haben.
In Guild Wars zum Beispiel können sich Spieler gegenseitig zu whispern4 . Dadurch
können sich Spieler gegenseitig private Chat-Nachrichten senden. Es kommt häufig vor,
dass Spieler, die von anderen Spielern angeflüstert werden wollen, wsp abkürzend für
whispern verwenden (siehe Abbildung 3.1).
Abbildung 3.1.: Abbreviation in Guild Wars.
3.3.2. Active Map
Der Zweck des Entwurfsmusters Active Map ist die skalierte grafische Darstellung des
Anwendungsraumes. Zusätzlich soll diese Karte mit Bewusstseinsinformationen gefüllt
werden.
3
4
Abgekürzt für: in my opinion
deutsch: flüstern
3. Analyse der Benutzerschnittstelle
18
Active Map wird bis auf Unreal Tournament 2004 und Anarchy Online von allen
anderen analysierten Spielen implementiert. Alle Implementierungen erlauben es dem
Spieler über die Active Map Positionen von Objekten, wie die Spielfiguren der Mitspieler, erkennen zu können.
Die eigene Position befindet sich stets in der Mitte der Karte und wird häufig durch
einen kleinen Pfeil symbolisiert. Die Spitze des Pfeils zeigt in die Blickrichtung der Spielfigur. Die Karte stellt einen kleinen Ausschnitt der Spielwelt, innerhalb eines bestimmten
Radius um die Spielfigur herum, dar. Bei einigen Spielen kann die Active Map auf
Wunsch des Spielers ein- und ausgeblendet werden.
Die einfachste Implementierung ist zweifelsfrei die von Counter Strike Source (siehe
Abbildung 3.2).
Abbildung 3.2.: Active Map in Counter Strike Source.
Der Spieler erhält hier lediglich Informationen über die Position seiner Teammitglieder.
Die Teammitglieder werden auf der Karte durch Punkte in der Teamfarbe visualisiert.
Zusätzlich wird das Gebiet, in dem sich der Spieler innerhalb der virtuellen Umgebung
befindet, unterhalb der Active Map in textueller Form angezeigt.
Da ein Spielfeld in Counter Strike Source FPS-typisch5 klein ist und in wenigen Minuten komplett erkundet werden kann, ist die Darstellung von mehr Details nicht notwendig.
Im Gegensatz zu MUGs, braucht ein Spieler von MMORPGs häufig Monate um die
virtuelle Welt mit der Spielfigur zu erkunden. Dies ist auch der Grund, warum die
Implementierungen von Active Map hier zum Teil wesentlich detaillierter ausfallen.
In Guild Wars, Dungeons & Dragons Online, Ragnarok Online und World of Warcraft
können Spieler auf der Karte Wiesen, Hügel, Seen, Wege und weitere landschaftlichen
Details der Spielwelt erkennen (siehe Abbildung 3.3).
Dies bietet dem Spieler zusätzliche Orientierungsmöglichkeiten. Noch einen Schritt
weiter geht World of Warcraft. Objekte wie Städte, die zu weit vom Aufenthaltsort der
eigenen Spielfigur entfernt sind, und deshalb nicht mehr innerhalb des Ausschnitts in der
Active Map dargestellt werden können, werden durch einen Pfeil am Rand der Active
Map visualisiert. Der Spieler kann dadurch erkennen in welche Richtung er sich bewegen
muss, um zu diesem Objekt zu gelangen (siehe Abbildung 3.4).
5
First Person Shooter
3. Analyse der Benutzerschnittstelle
19
Abbildung 3.3.: Active Map mit Landschaftdetails in Guild Wars.
Abbildung 3.4.: Active Map in World of Warcraft.
Damit der Spieler auch erfährt, um welche Stadt es sich jeweils handelt, wird der
Name der Stadt eingeblendet, sobald der Spieler die Maus über den zugeordneten Pfeil
bewegt (siehe Abbildung 3.4).
In Dungeons & Dragons Online, Ragnarok Online, Star Wars Galaxies und World of
Warcraft lässt sich der Ausschnitt, den die Active Map von der virtuellen Welt zeigt,
in circa 3-4 Stufen vergrößern bzw. verkleinern. In World of Warcraft gibt es hierfür
zwei Buttons am unteren rechten Rand, die mit einem + und - Zeichen versehen sind
(siehe Abbildung 3.4). Bei langen Reisen durch die virtuelle Umgebung erhält der Spieler
mit einem größeren Ausschnitt einen besseren Überlick, wohingegen in kleinen Höhlen
oder Burgen ein kleiner Ausschnitt für mehr Übersicht sorgt. Der Spieler hat so die
Möglichkeit die Active Map an die jeweilige Spielsituation anzupassen.
3.3.3. Attention Screen
Der Zweck dieses Entwurfsmusters ist festzulegen, wer oder was die Aufmerksamkeit des
Anwenders in Anspruch nehmen darf.
Dieses Entwurfsmuster findet man in den Spielen Guild Wars, Star Wars Galaxies,
World of Warcraft, Ragnarok Online und Everquest 2 implementiert. Jedes der drei erst
genannten Spiele verwendet für Attention Screen ein Oberflächenelement, welches
nahezu identisch mit der jeweils implementierten Buddy List (vgl. 3.3.5) ist. In World
of Warcraft und Star Wars Galaxies wird diese Liste auch Ignore List genannt (siehe
Abbildung 3.5).
Ein Spieler kann nach belieben Namen von Mitspielern dieser Liste hinzufügen bzw.
3. Analyse der Benutzerschnittstelle
20
Abbildung 3.5.: Ignore List in World of Warcraft.
entfernen. Der ignorierende Spieler bekommt keine direkte Chat-Nachricht von einem
dieser Spieler zugestellt. Die Nachricht wird, nachdem der ignorierte Spieler sie gesendet
hat, von dem Server nicht zugestellt.
Alle anderen Interaktionen, die direkt zwischen zwei Spielern ausgeführt werden können,
wie der Handel von Gegenständen, eine Aufforderung zum Duell und die Einladung in
eine Gruppe, bleiben von der Ignore List unberührt.
Die gleiche Funktionalität bietet Ragnarok Online seinen Spielern. Der Spieler muss
sich hier allerdings damit begnügen, die Block List, welche den oben genannten Ignore
Lists entspricht, via Chat-Befehl zu verwalten.
Die Entwickler von Star Wars Galaxies gehen noch einen Schritt weiter. Der Spieler
kann in Star Wars Galaxies nicht nur bestimmte andere Spieler ignorieren. Es lassen sich
außerdem Interaktionen unabhängig vom Mitspieler unterbinden (siehe Abbildung 3.6).
Der Spieler kann zum Beispiel entscheiden, ob er generell über Einladungen zu einem
Duell benachrichtigt werden soll.
Abbildung 3.6.: Attention Screen in Everquest 2.
3. Analyse der Benutzerschnittstelle
21
3.3.4. Away Message
Das Entwurfsmuster Away Message hat den Zweck aktive Anwender darüber zu informieren, dass sie Antworten auf ihre Nachfragen verspätet erreichen werden.
In den analysierten MMORPGs Anarchy Online, Dungeons & Dragons Online, Everquest 2, Guild Wars, Star Wars Galaxies und World of Warcraft wird Away Message
implementiert. Bei diesen Spielen wird der Status des Spielers durch das Ausführen des
Chat-Befehls afk auf abwesend gesetzt. Bei World of Warcraft wird der Spieler automatisch in den Status afk versetzt, wenn in einem vorgegebenen Zeitintervall keine Eingabe
von der Maus oder der Tastatur erfolgt.
Um den Status aufzuheben, reicht es bei nahezu allen Spielen aus, wenn von dem
Spieler eine Eingabe über Maus oder Tastatur ausgeführt wird. In einigen Spielen wie
Guild Wars ist es allerdings notwendig, die Spielfigur zu bewegen (vgl. Abschnitt 3.3.12)
und in Anarchy Online wird der Status durch eine zweite Ausführung des Befehls afk
aufgehoben. Eine spezielle Nachricht im Chat-Ausgabetextfeld informiert den Spieler
über den erfolgten Wechsel in den afk -Status (siehe Abbildung 3.7).
Abbildung 3.7.: Ein Spieler wird in Dungeon & Dragons Online über den Wechsel in
den afk -Status informiert.
Sendet ein Spieler einem Mitspieler, der sich im afk -Status befindet, eine Nachricht,
informiert ihn das Spiel mit der schlichten Aussage, dass sich der Adressat im afk -Status
befindet. Anarchy Online bietet als einziges Spiel darüber hinaus die Möglichkeit, den
Antwort-Text selbst festzulegen (siehe Abbildung 3.8).
Abbildung 3.8.: Benutzerdefinierte Away Message in Anarchy Online.
Spielfiguren in World of Warcraft und Star Wars Galaxies werden zusätzlich mit dem
Text afk versehen, so lange sich der Spieler im Status afk befindet (siehe Abbildung 3.9).
3. Analyse der Benutzerschnittstelle
22
Abbildung 3.9.: Visualisierung der Abwesenheit eines Spielers in Star Wars Galaxies.
3.3.5. Buddy List
Die Buddy List hat den Zweck, ausschließlich ausgewählte bekannte Anwender anzuzeigen.
Buddy Lists sind bei allen Spielen, sowohl bei den MUGs als auch bei den MMORPGs, implementiert. Jede Buddy List zeigt mindestens den Nickname des Spielers und
seinen Online-Status an. In Unreal Tournament 2004 und Counter Strike Source sind die
Buddy Lists nicht direkt im Spiel integriert. Das heißt, der Spieler kann nicht während
einer Session auf die Buddy List zugreifen, sondern muss sich zuerst aus der Session
ausloggen und kann dann über das Hauptmenü des Spiels die Buddy List aufrufen.
Während alle anderen Implementierungen über die Buddy List den Start von Interaktionen mit dem Buddy erlauben, lassen sich in Unreal Tournament 2004 lediglich die
oben genannten Informationen, wie Nickname und Status abrufen.
World of Warcraft und Everquest 2 zeigen dem Spieler, falls dessen Buddy online ist,
zusätzlich seinen Aufenthaltsort innerhalb der virtuellen Welt an. Allein in World of
Warcraft erhält der Spieler weitere Informationen wie die Klasse des Charakters und
welche Erfahrungsstufe er bis jetzt erreicht hat (siehe Abbildung 3.10).
In Everquest 2 und Star Wars Galaxies lassen sich die Buddies mit dem Status offline
aus der Buddy List herausfiltern. Counter Strike Source und Guild Wars zeigen Onund Offline-Buddies grundsätzlich getrennt voneinander in der Buddy List an (siehe
Abbildung 3.11).
Wie weiter oben bereits erwähnt, können Spieler Interaktionen über die Buddy List
starten. Alle Spiele unterstützen das Versenden einer Nachricht an einen Buddy. In
Dungeons & Dragons Online und World of Warcraft können Spieler den Buddy in eine
Gruppe einladen (siehe Abbildung 3.10).
Nur Ragnarok Online verlangt von einem Mitspieler die Erlaubnis, bevor ein anderer
Spieler ihn zu seiner Buddy List hinzufügen kann.
3.3.6. Embedded Chat
Der Zweck des Entwurfsmusters Embedded Chat ist es, dem Anwender eine synchrone
Kommunikation mit einfacher Technikunterstützung zu ermöglichen. Im Gegensatz zu
3. Analyse der Benutzerschnittstelle
23
Abbildung 3.10.: Buddy List in World of Warcraft.
Abbildung 3.11.: On- und Offline-Buddies werden in Guild Wars getrennt angezeigt.
einem gewöhnlichen Chat ist der Embedded Chat, wie der Name schon sagt, in der
Anwendung direkt integriert und keine eigenständige Anwendung.
In [SLht] werden zwei Textfelder für die Implementierung von Embedded Chat vorgeschlagen. Ein Textfeld für die Eingabe der Nachricht und ein zweites für die Ausgabe der
Nachrichten. Diesem Prinzip folgen alle hier aufgeführten Spiele mit ihrer Implementierung des Embedded Chats. Ein Beispiel hierzu ist in Abbildung 3.12 zu sehen.
Die Teilnahme von hunderten von Spielern in MMORPGs führt in Embedded Chats
zu einer sehr großen Menge an Nachrichten. Um diese Menge an Informationen für den
Spieler handhabbar zu machen, wenden die Entwickler ähnliche Strategien an.
Bei der ersten Strategie gehen die Entwickler davon aus, dass zwischen Spielern mit
großer räumlicher Distanz innerhalb der virtuellen Umgebung, der Wunsch nach Kommunikation gering ist. Deshalb werden die Adressaten von Nachrichten grundsätzlich
nach Gebieten unterteilt, was bedeutet, dass Spieler nur Nachrichten von Spielern aus
dem selben Gebiet erhalten. In World of Warcraft und Anarchy Online gehen die Entwickler noch einen Schritt weiter. Wenn ein Spieler eine Nachricht mittels des Befehls
3. Analyse der Benutzerschnittstelle
24
Abbildung 3.12.: Embedded Chat in Star Wars Galaxies: Unten befindet sich das
Eingabefeld und darüber die Ausgabe.
say sendet, erhalten nur Spieler in unmittelbarer Umgebung die Nachricht. Möchte ein
Spieler aber dennoch die Nachricht an alle Spieler in seinem Gebiet senden, muss er
den Befehl yell verwenden. Weitere Ausnahmen sind Gruppen-Nachrichten oder direkte
Chat-Nachrichten. Beide Nachrichten werden unabhängig vom Aufenthaltsort der Spieler
zugestellt.
Eine andere Strategie ist die farbliche Unterscheidung von unterschiedlichen Nachrichtenarten. In World of Warcraft werden zum Beispiel Nachrichten, die direkt an einen
Spieler adressiert sind, in violettem Text angezeigt. Gruppennachrichten hingegen haben
die Farbe blau und Systemnachrichten gelb (siehe Abbildung 3.13).
Abbildung 3.13.: Farblich Abhebung von unterschiedlichen Chat-Nachrichtentypen in
World of Warcraft.
Außerdem wird in allen Spielen der Adressat und der Sender der Chat-Nachricht vorangestellt. In Abbildung 3.13 kann man dadurch erkennen, dass sich die letzte Nachricht
an eine Gruppe richtet, die in World of Warcraft mit Party bezeichnet wird.
Die genannten Strategien reichen aber für Gebiete, in denen sich viele Spieler aufhalten nicht aus, da das Nachrichtenaufkommen hier immer zu hoch ist. Deshalb bieten
alle Embedded Chats einen zusätzlichen Filter an, der es ermöglicht bestimmte Typen
von Nachrichten auszublenden. In Guild Wars lässt sich ganz einfach über Checkboxen oberhalb des Ausgabetextfeldes festlegen, ob das Ausgabefenster Team-Nachrichten,
Gilde-Nachrichten etc. ausgeben soll oder nicht (siehe Abbildung 3.14).
Die MUGs Unreal Tournament 2004 und Counter Strike Source implementieren hinge-
3. Analyse der Benutzerschnittstelle
25
Abbildung 3.14.: Filterung von Chat-Nachrichten mit Checkboxen in Guild Wars.
gen nur eine sehr einfache Ausgabe für den Embedded Chat. In Counter Strike Source
ist die Ausgabe auf sechs Zeilen limitiert, bei Unreal Tournament 2004 sind es sogar nur
vier Zeilen. Außerdem fehlt bei beiden Spielen ein Scrollbalken, um alte Nachrichten zu
einem späteren Zeitpunkt noch einmal lesen zu können.
3.3.7. Emote
Der Zweck des Entwurfsmusters Emote ist es, dem Spieler die Darstellung von Emotionen zu ermöglichen.
Bis auf die Ego-Shooter Unreal Tournament 2004 und Counter Strike Source implementieren alle anderen Spiele dieses Entwurfsmuster. Bei Ragnarok Online werden zur
Visualisierung von Emotionen Luftblasen oder Bilder mit Text oberhalb der Spielfigur
visualisiert (siehe Abbildung 3.15).
Abbildung 3.15.: Visualisierung von Emote in Ragnarok Online.
In allen anderen MMORPGs werden die Emotionen durch Animationen der Spielfigur
dargestellt. Dabei sind die Animationen denen von realen Menschen nachempfunden.
Führt ein Spieler in Guild Wars die Emotion lachen aus, dann krümmt sich die Spielfigur
vor lachen und klopft sich dabei auf die Schenkel (siehe Abbildung 3.16). Möchte der
Spieler zeigen, dass er müde ist, führt er das Emote gähnen aus, wodurch die Spielfigur
sich streckt, den Mund öffnet und gleichzeitig die Hand davor hält (siehe Abbildung
3.16).
In Dungeons & Dragons Online, Everquest 2, Guild Wars, Star Wars Galaxies und
World of Warcraft werden, neben den Animationen der Spielfiguren, Emotionen durch
eine Nachricht im Embedded Chat (vgl. 3.3.6) angezeigt. Richtig sinnvoll ist diese Methode, wenn sie wie in Dungeons & Dragons Online, Everquest 2, Star Wars Galaxies
und World of Warcraft Emotion und Objekte in Zusammenhang bringt. Als Beispiel
3. Analyse der Benutzerschnittstelle
26
Abbildung 3.16.: Unterschiedliche Emotes in Guild Wars: a) die Spielfigur krümmt
sich vor Lachen b) die Spielfigur klopft sich auf den Schenkel c) die Spielfigur gähnt.
sei hier kurz die Begrüßung eines Mitspielers erwähnt. Startet der Spieler diese Aktion,
beginnt die Spielfigur zu winken. Mitspieler können nun zwar erkennen, dass der Spieler winkt, befinden sich in diesem Moment jedoch mehrere Mitspieler in unmittelbarer
Umgebung, ist eine eindeutige Zuordnung schwierig. Um dieses Problem zu lösen, kann
man in World of Warcraft, sowie auch in den anderen genannten Spielen, bevor man eine
Aktion ausführt, die Spielfigur eines Mitspielers markieren. In dem Embedded Chat
wird dann die Aktion mit der markierten Spielfigur im Zusammenhang gebracht (siehe
Abbildung 3.17).
Abbildung 3.17.: In World of Warcraft werden in dem Embedded Chat zusätzliche
Informationen zu Emote angezeigt.
3.3.8. Interactive User Info
Der Zweck des Interactive User Info Entwurfsmusters ist es, Informationen über
andere Anwender durch deren Benutzerrepräsentation aktivierbar zu machen, und sie
mit Mitteln zur Kommunikation und Kollaboration zu verknüpfen.
Dieses Entwurfsmuster wird von dem Großteil der MMORPGs angewendet. Entropia
Universe, Everquest 2, Ragnarok Online und Star Wars Galaxies verwenden zur Interactive User Info ein Kontextmenü, dass sich durch Rechtsklick auf die Spielfigur
öffnen lässt (siehe Abbildung 3.18).
In Dungeons & Dragons Online, Guild Wars und World of Warcraft erscheint, nach-
3. Analyse der Benutzerschnittstelle
27
Abbildung 3.18.: In Everquest 2 wird die Interactive User Info über die Spielfigur
aufgerufen .
dem man die Spielfigur eines anderen Spielers angeklickt hat, an anderer Stelle eine
Repräsentation des Spielers. Die Repräsentation ist entweder der Nickname des Spielers,
ein Bild des Kopfes seiner Spielfigur oder beides (siehe Abbildung 3.19).
Abbildung 3.19.: Interactive User Info in Guild Wars.
Nicht alle Spiele bieten über die Interactive User Info Kommunikation und Kollaboration an. In Ragnarok Online kann der Spieler einen 1:1-Chat darüber starten. In
Dungeons & Dragons Online und Guild Wars lässt sich zwar keine Kommunikation über
die Interactive User Info starten, dafür aber die Einladung in eine Gruppe und der
Austausch von Gegenständen (siehe Abbildung 3.19).
Nur die beiden Spiele Everquest 2 und World of Warcraft bieten sowohl Kommunikation als auch Kollaboration über die Interactive User Info an (siehe Abbildung
3.18).
3.3.9. Invitation
Das Entwurfsmuster Invitation hat den Zweck, dass Anwender Interaktionen mit anderen Anwendern planen können.
In den MUGs Unreal Tournament 2004 und Counter Strike Source wird dieses Entwurfsmuster nicht implementiert. Zwar können Spieler dort ein Spiel starten und andere
3. Analyse der Benutzerschnittstelle
28
Spieler können diesen Spielen beitreten. Die Spiele bieten jedoch keine Möglichkeit ausgesuchte Mitspieler explizit zu dem gestarteten Spiel einzuladen.
In den MMORPGs können Spieler Gruppen bilden. Ein Spieler oder eine Gruppe
können andere Spieler in eine Gruppe einladen. Bei den Spielen Dungeons & Dragons
Online, Everquest 2, Star Wars Galaxies und World of Warcraft erfolgt die Einladung
über die Interactive User Info (vgl. 3.3.8). In World of Warcraft kann die Einladung
auch über die Buddy List erfolgen (vgl. 3.3.5). Bei Ragnarok Online kann die Einladung
auch über einen Chat-Befehl ausgeführt werden, in Anarchy Online und Guild Wars
hingegen über ein Team-Widget (siehe Abbildung 3.20). Der Spieler muss zunächst die
betreffende Spielfigur per Mausklick auswählen, anschließend wird die Einladung über
einen Button im Team-Widget ausgelöst.
Abbildung 3.20.: In Guild Wars werden Mitspieler über ein Plus-Zeichen in eine
Gruppe eingeladen.
Sobald ein Spieler eine Einladung versendet hat, erscheint bei dem eingeladenen Spieler ein Meldung, in der er über die Einladung informiert wird. Dort wird neben der
Einladung der Nickname des Einladenden angezeigt. Der Eingeladene Spieler hat dann
die Wahl, die Einladung anzunehmen oder abzulehnen (siehe Abbildung 3.21). Dieser
Ablauf ist bei allen Spielen bis auf visuelle Details identisch.
Abbildung 3.21.: Ein Spieler in Ragnarok Online erhält eine Einladung in eine Gruppe
3. Analyse der Benutzerschnittstelle
29
3.3.10. Local Awareness
Das Entwurfsmuster Local Awareness hat den Zweck Bewusstseinsinformationen in
dem Kontext von Artefakten bereitzustellen, die sich im Fokus des lokalen Anwenders
befinden. Dies hört sich zunächst einmal sehr kompliziert an. Im Grunde genommen ist
damit nichts anderes gemeint, als dass der Anwender über Aktivitäten anderer Anwender, deren Kontext mit seinem im Zusammenhang stehen, informiert werden soll, so dass
eine spontane Kollaboration möglich wird.
Die Implementierung dieses Entwurfsmusters in Spielen erschließt sich nicht auf den
ersten Blick, da dessen Vorhandensein sich erst durch eine Spielsituation ergibt. Ein erstes Beispiel hierzu: Nimmt in Counter Strike Source ein Spieler einen anderen Mitspieler
in der Active Map war, weiß er, dass es sich dabei um ein Mitglied seines Teams handeln muss. Da er nun die Position des Mitspielers kennt, kann er sich zu diesem Spieler
bewegen, so dass er dessen Aktivitäten innerhalb der Spielwelt wahrnehmen kann. Da
sich beide Spieler bewusst sind, dass ihre Aktivitäten den gleichen Kontext besitzen,
nämlich das Besiegen des gegnerischen Teams, werden sie spontan kollaborieren, in dem
sie zum Beispiel gemeinsam vorrücken, wie in Abbildung 3.22 zu erkennen ist.
Abbildung 3.22.: Zwei Spieler aus dem gleichen Team kooperieren in Counter Strike
Source, nachdem sie sich gegenseitig durch Local Awareness wahrgenommen haben.
Ein zweites Beispiel aus dem Spiel World of Warcraft: Spieler erhalten an fest definierten Stellen Aufgaben, deren Lösung die Weiterentwicklung der Spielfigur ermöglicht. In
der Regel führen unterschiedliche Aufgaben die Spieler an unterschiedliche Orte. Wenn
ein Spieler sich nun an einen Ort begibt, um dort eine Aufgabe zu lösen, wird er dort
Spieler vorfinden, die mit hoher Wahrscheinlichkeit die gleichen Ziele haben wie er. Der
Kontext der Spieleraktivitäten hängt dementsprechend vom Ort ab. Darüber hinaus
kann der Spieler die Absichten des Mitspielers durch dessen Aktivitäten deuten. Ein
Beispiel: ein Spieler wird durch eine Aufgabe an einen bestimmten Ort geführt, wo er
eine bestimmte Art von Monstern töten soll. Dort angekommen sieht er einen anderen
Spieler die Monster töten, die er für seinen Auftrag auch töten muss. Die Aktivität des
Mitspielers ist in diesem Fall das Töten der Monster. Die Artefakte sind die Monster
und der Kontext ist das Erfüllen des Auftrags.
3. Analyse der Benutzerschnittstelle
30
3.3.11. Login
Der Zweck des Entwurfsmusters Login ist der,dass Benutzer sich selbst identifizieren
müssen, bevor sie die Anwendung benutzen können.
Bei den MUGs ist das Entwurfsmuster nicht implementiert, da die Server hier von den
Spielern selbst gestellt werden und die Daten der Sessions nicht persistent gespeichert
werden.
Die MMORPGs implementieren alle das Entwurfsmuster Login. Hier werden die Daten der Session persistent gespeichert. Die Implementierung selbst ist bis auf visuelle
Details bei allen MMORPGs identisch. Jedes Spiel fragt nach dem Start des Spiels
zunächst den Benutzernamen und Passwort ab (siehe Abbildung 3.23), bevor es den
Zugang zu der Session erlaubt.
Abbildung 3.23.: Login-Fenster in Dungeons & Dragons Online.
3.3.12. Navigation
Der Zweck des Entwurfsmusters Navigation ist es, einen Mechanismus bereitzustellen,
der es erlaubt, sich innerhalb der virtuellen Umgebung zu bewegen.
Die Bewegung von Spielfiguren ist den Computerspielen inhärent. Alle hier analysierten Spiele implementieren dieses Entwurfsmuster. In Ragnarok Online bewegt der Spieler
die Spielfigur ausschließlich mit der Maus. Dazu klickt der Spieler auf den gewünschten
Zielort, worauf sich die Spielfigur dorthin bewegt. Da die Sicht auf die virtuelle Umgebung stets auf die Spielfigur zentriert ist, bewegt sich dementsprechend auch der sichtbare
Ausschnitt der Spielwelt. Diese gilt übrigens auch für alle anderen Spiele.
Befinden sich in Ragnarok Online zwischen der aktuellen Position der Spielfigur und
dem Zielort Hindernisse, weicht die Spielfigur diesen automatisch aus.
Die meisten der analysierten Spiele setzen bei der Bewegung der Spielfiguren auf eine
Kombination von Tastatur und Maus. Dabei übernimmt die Tastatur die Bewegungen
in Form von Translation und die Maus, die der Rotation.
3. Analyse der Benutzerschnittstelle
31
3.3.13. User List
Eine User List hat den Zweck, alle aktuell an einer Session teilnehmenden Anwender
darzustellen.
User Lists sind sowohl in den MUGs als auch in den MMORPGs implementiert.
Jedoch haben die User Lists der MUGs weniger Funktionalität als die der MMORPGs.
Dabei unterscheiden sich die User Lists der MUGs kaum voneinander. In beiden Spielen
können die User Lists per Hotkey aufgerufen werden (siehe Abbildung 3.24). Der
Spieler erfährt darin die Nicknames seiner Mitspieler, die bisher erreichte Punktzahl und
die Latenzen zum Server.
Abbildung 3.24.: User List in Unreal Tournament 2004.
Bis auf Guild Wars und Ragnarok Online bieten alle anderen MMORPGs eine User
List an. Bei Anarchy Online kann der Spieler nur über den Embedded Chat (vlg.
Abschnitt 3.3.6) die User List anschauen. Die anderen Spiele bieten dagegen ein Widget
für die User List an. Diese sind dann auch etwas komfortabler als die textbasierte User
List.
Ausgesprochen umfangreich, was die Funktionalität betrifft, ist die User List von World
of Warcraft (siehe Abbildung 3.25).
Neben dem Nickname sind weitere Informationen, wie aktueller Aufenthaltsort, gewählte
Klasse sowie erreichter Level enthalten. Die Informationen sind in Spalten angeordnet.
Die Ausgabe kann nach Spalten sortiert ausgegeben werden. Möchte der Spieler nach
gezielten Informationen suchen, gibt er in dem Textfeld unterhalb der User List den
Befehl who mit den gewünschten Argumenten ein.
Außerdem kann der Spieler über zwei Buttons Spieler direkt aus der User List seiner
Buddy List hinzufügen (vgl. 3.3.5), oder in eine Gruppe einladen (vgl. 3.3.9).
3. Analyse der Benutzerschnittstelle
32
Abbildung 3.25.: User List in World of Warcraft.
3.3.14. Virtual Me
Der Zweck des Virtual Me ist es, eine virtuelle Repräsentation des Anwenders, die vor
und während der Interaktion von anderen Anwendern wahrgenommen werden kann, zu
bieten.
In allen hier analysierten Spielen wird der Spieler innerhalb der Spielwelt durch eine
Spielfigur repräsentiert. Den Spielfiguren sind die Nicknames, die die Spieler ausgewählt
haben zugeordnet und innerhalb der Spielwelt mit den Spielfiguren verknüpft.
Sowohl bei den MUGs als auch bei den MMORPGs kann sich der Spieler eine Spielfigur
aus einer vorgegebenen Menge an Spielfiguren auswählen. Allerdings ist bei den MUGs
die Auswahl sehr gering, und damit auch die Individualität, so dass man hier nicht von
einer Implementierung des Entwurfsmusters Virtual Me sprechen kann. In Counter
Strike Source sind es gerade mal vier Spielfiguren pro Team, aus denen sich der Spieler
eine aussuchen kann. Bei Unreal Tournament 2004 sind es mit 84 Spielfiguren zwar
deutlich mehr, aber auch hier sind die Spielfiguren von dem Spieler nicht individuell
veränderbar.
In MMORPGs hat die Gestaltung und Individualität der Spielfigur aufgrund des Rollenspielkonzepts eine besondere Bedeutung. Die Erscheinung der Spielfigur wird dabei
von den Entwicklern durch zwei unterschiedliche Konzepte beeinflusst. Das erste Kon-
3. Analyse der Benutzerschnittstelle
33
zept erlaubt es dem Spieler beim Erstellen einer neuen Spielfigur das Aussehen auf
verschiedene Weise an seine Wünsche anzupassen (siehe Abbildung 3.26).
Abbildung 3.26.: Erstellen der Spielfigur in Guild Wars.
Häufig können die Spieler unter Rasse, Klasse und Geschlecht auswählen, wobei jede
einzelne Auswahl das Aussehen beeinflusst und die Darstellung eine Kombination der
einzelnen Auswahlmöglichkeiten ist. Daneben kann die Spielfigur durch Änderungen der
Hautfarbe, Haarfarbe, Frisur, Augenfarbe, Bartgröße und Körpergröße an die individuellen Wünsche des Spielers angepasst werden. Hat der Spieler die Auswahl bestätigt, bleibt
diese Grundform der Spielfigur über das ganze Spiel hinweg unveränderbar. Um dennoch
das Aussehen zu verändern, bleibt dem Spieler nur noch übrig, eine neue Spielfigur zu
erstellen.
Durch das zweite Konzept kann der Spieler das Aussehen der Spielfigur während des
Spiels beeinflussen. In den MMORPGs kann der Spieler die Spielfigur mit Gegenständen,
die er im Spiel gefunden, gekauft oder als Belohnung erhalten hat, ausstatten (siehe
Abbildung 3.27).
Das Repertoire reicht von Helmen, Mäntel bis hin zu Hosen und Handschuhen. Die
Möglichkeit der Kombinationen und die Anzahl der Objekte ist so groß, dass sich zwei
Spielfiguren im Prinzip nie gleichen.
Neben der Darstellung in der Spielwelt selbst, bieten die MMORPGs häufig eine
zusätzliche Visualisierung der Spielfigur als zweidimensionales Bild an (siehe Abbildung 3.28).
Wählt der Spieler eine Spielfigur mit der Maus aus, wird die Spielfigur an einer bestimmten Stelle der Oberfläche als Bild und mit zusätzlichen Informationen, wie den
Namen, visualisiert. Oft kann der Spieler über diese Darstellung Interaktionen mit dem
Mitspieler ausführen (vgl. 3.3.8).
Eine weitere Möglichkeit die Spielfigur des Spielers zu betrachten, ist das Inventaroder Charakterfenster, in dem der Spieler auch die Änderungen an der Ausstattung
vornehmen kann. Die Spielfigur wird in dem dreidimensionalen Bild, mit dem gleichen
3D-Modell wie in der Spielwelt, dargestellt (siehe Abbildung 3.29).
3. Analyse der Benutzerschnittstelle
34
Abbildung 3.27.: Kleidungsstücke in Guild Wars verändern das Aussehen der Spielfigur.
Abbildung 3.28.: 2D-Grafik der Spielfigur in World of Warcraft.
3.4. Zusammenfassung
Wenn man die Ergebnisse der Analyse der Benutzerschnittstelle anhand der Tabelle
3.5 betrachtet, stellt man fest, dass jedes der untersuchten Spiele Entwurfsmuster von
P4CMI implementiert hat. Da jedes identifizierte Entwurfsmuster von mindestens drei
Spielen implementiert wird, haben wir genug Known Uses, um die Pattern Language
PIGD, mit diesen Entwurfsmustern zu erweitern. Mit dieser erweiterten Pattern Language und P4CMI kann jetzt auch die Frage beantwortet werden, ob es starke Beziehungen zwischen den beiden Welten gibt. Die Antwort kann direkt aus Abbildung 3.30
abgelesen werden. Dort sehen wir alle Patterns, die identifiziert wurden, und welche
Beziehungen sie in P4CMI untereinander besitzen. Offensichtlich existieren starke Beziehungen, denn bei neun der vierzehn abgebildeten Entwurfsmustern führt ein Pfeil zu
einem anderen Entwurfsmuster. Darüber hinaus lässt sich ablesen, dass Kommunikation in Spielen ebenso eine große Bedeutung hat wie in seriösen Anwendungen. Gerade
das Entwurfsmuster Embedded Chat konnte in ausnahmslos allen Spielen identifiziert
werden und besitzt auch die meisten starken Beziehungen (siehe Abbildung 3.30).
Des Weiteren lässt sich erkennen, dass die Anzahl der Implementierungen abhängig
vom Spieltyp ist. Während die MUGs im Durchschnitt gerade mal sechs von vierzehn
identifizierten Entwurfsmustern implementiert haben, werden von den MMORPGs im
3. Analyse der Benutzerschnittstelle
35
Abbildung 3.29.: Ein Virtual ME im Inventarfenster von Guild Wars.
Durchschnitt rund dreizehn der vierzehn Entwurfsmuster verwendet. Die TBGs sind hier
mit nur jeweils zwei und drei implementierten Entwurfsmustern kaum erwähnenswert.
Hier muss man berücksichtigen, dass sie zum einen nicht aktuell sind und zum anderen,
dass das Budget zur Entwicklung vermutlich weitaus geringer war als bei den anderen
Titeln. Scrabble ist auch das einzige Spiel, dass nur über ein lokales Netzwerk ausgeführt
werden kann. In lokalen Netzwerken haben die Anwender in der Regel Sichtkontakt, was
natürlich viele Awareness-Funktionen6 überflüssig macht.
6
Awareness-Funktionen geben dem Anwender die Möglichkeit andere Anwender und deren Aktionen
innerhalb der Anwendung wahrzunehmen.
3. Analyse der Benutzerschnittstelle
36
Abbildung 3.30.: Beziehungen zwischen den identifizierten Entwurfsmustern
3. Analyse der Benutzerschnittstelle
37
3. Analyse der Benutzerschnittstelle
38
ja
nein
nein
nein
ja
nein
nein
nein
ja
nein
ja
ja
nein
ja
nein
ja
ja
ja
ja
nein
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
nein
ja
ja
ja
ja
ja
ja
ja
nein
ja
ja
Entropia
Universe
ja
ja
ja
ja
ja
ja
ja
nein
ja
ja
ja
nein
ja
ja
Everquest
2
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
nein
nein
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
nein
ja
ja
nein
nein
ja
nein
nein
nein
nein
nein
nein
nein
nein
nein
nein
nein
Guild Ragna- ScrabWars rok
ble
Online
Tabelle 3.5.: Identifizierte Entwurfsmuster anhand der Benutzerschnittstelle.
nein
nein
ja
nein
nein
nein
nein
nein
ja
nein
nein
nein
nein
ja
ja
ja
ja
Abbreviation
Active
Map
Attention
Screen
Away
Message
Buddy
List
Embedded
Chat
Emote
Interactive User
Info
Invitation
Local
Awareness
Login
Navigation
User List
Virtual
Me
ja
Dungeon
& Dragons
Online
Anar- Carcas- Counter
chy
sonne
Strike
OnliSource
ne
Entwurfsmuster
ja
ja
ja
ja
ja
ja
ja
nein
ja
ja
ja
ja
ja
ja
Star
Wars
Galaxies
nein
ja
ja
nein
nein
ja
nein
ja
ja
nein
nein
nein
nein
ja
Unreal
Tournament
2004
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
ja
World
of
Warcraft
4. Analyse der Quelltexte
4.1. Auswahl der Spiele
Der Quelltext von kommerziellen Anwendungen ist das Kapital der Software-Entwickler.
Das Gleiche gilt auch für Software-Entwickler von Computerspielen . Aus diesem Grund
war es nicht möglich, ähnlich aktuelle Spiele für diese Analyse zu bekommen wie für
die Analyse der Benutzerschnittstelle. Selbst der Quelltext von älteren kommerziellen
Spielen wird eher selten unter eine freie Lizenz wie die GPL1 gestellt. Eine der wenigen
Ausnahmen stellt das kommerzielle Spiel Quake 3 Arena [Id 99a] dar, dessen Quelltext
[Id 99b] auch in dieser Arbeit analysiert wurde. Die beiden anderen Mehrbenutzerspiele
stammen deshalb von nicht-kommerziellen Projekten.
1
http://www.gnu.org/licenses/gpl.html
4.2. Analysierte Spiele
Spiel
Beschreibung
Bei Quake 3 Arena handelt es sich um ein MUG. Die Spieler
verbinden sich mit einem Server, der von einem der Spieler gehostet werden kann und das Spiel zentral koordiniert.
Kooperation ist nicht möglich. Es ist ein rein konkurrenzbetontes Spiel. Die Spieler müssen gleichzeitig agieren, weshalb
das Spiel nebenläufig ist.
Planeshift ist ein MMORPG [Ato06a]. Die Spieler müssen
sich, wie für ein MMORPG üblich an einem Server anmelden und authentifizieren. Das Spiel wird ebenfalls von einem Server zentral koordiniert. Es müssen nicht alle Spieler
gleichzeitig am Spiel teilnehmen. Das Spiel ist also, wie wir
es von anderen MMORPGs kennen, asynchron. Kooperation ist zum Beispiel durch das Bilden von Gruppen möglich.
Das Spiel ist nicht konkurrenzbetont. Der Quelltext von Planeshift kann unter [Ato06b] eingesehen werden.
BZFlag ist genau wie Quake 3 Arena ein MUG [Rik06a]. Es
unterscheidet sich hinsichtlich der charakteristischen Eigenschaften nicht wesentlich von Quake 3 Arena. Da in diesem
Spiel aber auch Teams konkurrieren können, ist es nicht nur
konkurrenzbetont sondern auch kooperativ. Der Quelltext
von BZFlag kann unter [Rik06b] eingesehen werden.
4.3. Ergebnisse der Analyse
Im folgenden werden die Ergebnisse der Quelltext-Analyse präsentiert. Wie im Kapitel
zuvor werden die identifizierten Entwurfsmuster in alphabetischer Reihenfolge vorgestellt. Der Zweck von Entwurfsmustern, die schon in Kapitel 3 aufgeführt wurden, ist
hier weggelassen worden.
Die Entwurfsmuster wurden in der Regel wie in der Analyse zur Benutzerschnittstelle
während der Ausführung des Spiels identifiziert, was die anschließende Suche im Quelltext erleichterte. Bei der zweiten Vorgehensweise wurden die Objekte oder Dateien innerhalb des Quelltextes gesucht, bei der man eine Implementierung des Entwurfsmusters
vermutet. Dies trifft vor allem auf Entwurfsmuster aus dem Kapitel Base Technology von
[SLht] zu.
Um die Implementierung der Entwurfsmuster zu verdeutlichen, werden Klassen- bzw.
Interaktionsdiagramme und Teile aus dem Quelltext verwendet. Bei den QuelltextZitaten sind die für das Verständnis unwichtigen Teile durch jeweils drei Punkte ersetzt
worden.
4. Analyse der Quelltexte
40
Abbildung 4.1.: Active Map in BZFlag
4.3.1. Active Map
Von den analysierten Spielen bietet lediglich BZFlag eine Active Map an. In Abbildung
4.1 sind Screenshots der Active Map aus zwei verschiedenen Spielszenen zu sehen.
Wie man leicht erkennen kann, hat die Active Map eine quadratische Form, begrenzt durch rosafarbene Linien. Durch sie wird eine verkleinerte Sicht von oben auf
die dreidimensionale Spielwelt dargestellt. Unterschiedlich große, grau-grüne Quadrate
visualisieren Hindernisse wie Pyramiden oder Quader. Die weißen Kreuze symbolisieren
Flaggen, die der Spieler aufnehmen kann, um sein Fahrzeug zu modifizieren. Die bunten
kleinen Quadrate zeigen die Position der Mitspieler in den Teamfarben an. Das weiße
kleine Quadrat im Zentrum der Active Map ist die Position des Spielers. Von diesem
Quadrat führen zwei orangefarbene Linien weg. Die Fläche zwischen diesen beiden Linien
entspricht dem Sichtfeld des Spielers. Dementsprechend befindet sich ein Mitspieler des
gelben Teams im Sichtfeld unseres Spieler. Der Rest der Spielwelt wird nicht gezeichnet
und bleibt transparent.
Wenn man beide Active Maps miteinander vergleicht, fällt auf, dass der Spieler
sich in jeder Szene in der Mitte befindet und die Blickrichtung nach oben führt. Der
Grund dafür liegt darin, dass die Blickrichtung und Position des Spielers innerhalb der
Active Map festgelegt ist. Deshalb bewegt sich die Spielwelt innerhalb der Active
Map, sobald sich der Spieler in der Spielwelt bewegt oder dreht. Dies wird deutlich,
wenn man sich die beiden Screenshots in Abbildung 4.1 anschaut. Auf dem linken Bild
befindet sich Norden2 in der unteren rechten Ecke der Active Map. In dem rechten
Bild von Abbildung 4.2 liegt Norden hingegen unterhalb der Position des Spielers. Die
Karte hat sich demnach gedreht.
Zur Realisierung dieser Active Map dient die Klasse RadarRender und deren Me2
im Bild mit N gekennzeichnet
4. Analyse der Quelltexte
41
thoden, die in Abbildung 4.2 zu sehen sind. Die Methode drawShot zeichnet die Schüsse
der Spieler, die Methode drawTank die Positionen der Mitspieler und drawFlag die Flaggen. Hindernisse und Spielfeldbegrenzung werden von den Methoden renderObstacles
und renderWalls gezeichnet. Alle genannten Methoden werden innerhalb der Methode
render aufgerufen, die auf die Methoden der Klasse World zugreift, um die aktuellen
Daten der Objekte zu erhalten.
Abbildung 4.2.: Objekte für die Erzeugung der Active Map in BZFlag
Um die Objekte relativ zur Spielwelt in der Active Map darzustellen werden die
Objekte dann von den jeweiligen draw-Methoden der Klasse RadarRenderer in die xyEbene projeziert. Um das zu erreichen vernachlässigt Planeshift die z-Koordinate, da
bei einer Active Map die Tiefe der Objekte nicht von Bedeutung ist.
4.3.2. Buddy List
Das Pattern Buddy List wird von Planeshift implementiert. Die Realisierung erfolgt
entsprechend dem in Abbildung 4.3 dargestellten Interaktionsdiagramm.
Clientseitig ist die Klasse pawsBuddyWindow für die Darstellung der Buddy List
zuständig. Öffnet der Spieler das Buddy List Widget, erzeugt die Methode Show der
Klasse pawsBuddyWindow ein Objekt vom Typ psUserCmdMessage, die den Befehl buddylist und den Typ des Befehls MSGTYPE_USERCMD für die Versendung zum Server vorbereitet. Anschließend wird die Nachricht3 an den Server gesendet.
Auf dem Server wird der Typ der Nachricht ausgelesen und ein Objekt vom Typ
psUserCmdMessage erzeugt. Diesmal wird allerdings der Konstruktor von psUserCmdMessage aufgerufen, der die Nachricht wieder in ihre Befehle und Argumente zerlegt. Anschließend kümmert sich die Methode BuddyList der Klasse UserManager um die Bearbeitung des Inhalts der Nachricht. Diese liest die Buddies des Spielers aus der buddyList
Member-Variablen der Klasse psCharacter aus. Mit Hilfe der Klasse psBuddyListMsg
3
Da die Buddy List auf dem Server und nicht auf dem Client liegt, handelt es sich vermutlich um die
Implementierung von Centralized Objects.
4. Analyse der Quelltexte
42
Abbildung 4.3.: Interaktionsdiagramm für die Buddy List in Planeshift
wird die Nachricht für den Client generiert und mit deren Methode SendMessage an den
Client gesendet. Die Nachricht enthält folgende Informationen, die für die Buddy List
relevant sind:
– Nachrichtentyp (in diesem Fall BuddyList)
– Anzahl der Buddies
– Nicknames der Buddies
– Online-Status der Buddies
Im Client erhält wieder die Klasse pawsBuddyWindow die Nachricht des Servers. Dort
wird sie von der Methode HandleMessage ausgewertet. Diese extrahiert die relevan-
4. Analyse der Quelltexte
43
ten Informationen mit Hilfe der Klasse psBuddyListMsg. Einer der beiden Konstruktoren der Klasse speichert die Daten hierzu in seine Feldvariablen, die anschließend
von der Methode HandleMessage in die beiden Member-Variablen onlinebuddies und
offlinebuddies vom Typ csStringArray kopiert werden. Buddies die gerade online
sind, werden dementsprechend in das Array onlinebuddies eingefügt, alle anderen Buddies in das Array offlinebuddies. Nachdem beide Arrays alphabetisch sortiert worden
sind, werden Sie im Widget ausgegeben.
Bevor Buddies in der Buddy List aufgelistet werden, muss sie der Spieler zuvor hinzufügen. Dazu gibt er in einem dafür vorgesehenen Textfeld den Namen eines Mitspielers
ein. Sobald der Name bestätigt wird, erstellt die Methode OnStringEntered der Klasse
pawsBuddyWindow die Nachricht für den Server. Als Parameter bekommt die Nachricht
den Namen des Spielers und den Befehl zum Hinzufügen zur Buddy List.
Anschließend erfolgt die Übertragung der Nachricht an den Server, wo sie von der
Methode Buddy verarbeitet wird. Diese überprüft zunächst, ob ein Spieler mit dem
übergebenen Namen existiert, und erhält dabei die ID, die auf dem Server mit dem
Spieler assoziiert ist. Danach werden ID und Name der Buddy List den Spielfigurendaten in einem Objekt vom Typ psCharacter durch die Methode AddBuddy hinzugefügt.
Jetzt wird das Client-Objekt des Buddys gesucht und die ID des Spielers in dessen
BuddyOf-Liste eingetragen. Wie wir später noch sehen werden, ist diese Vorgehensweise
für die Benachrichtigung, ob ein Buddy sich ein- bzw. ausgeloggt hat, wichtig.
Damit der Spieler nicht nach jedem Ausloggen seine Buddy List erneut anlegen
muss, werden die Buddy List Daten persistent gespeichert. Hierfür wird die Methode
AddBuddy der Klasse psServer mit den IDs des Spielers und des Buddys aufgerufen.
Zuletzt wird noch die geänderte Buddy List an den Client gesendet. Dies erfolgt,wie
eben beschrieben, über den Aufruf der Methode BuddyList der Klasse UserManager .
Der Spieler hat auch die Möglichkeit Spieler aus der Buddy List zu entfernen. Da
der Mechanismus analog zu dem des Hinzufügens abläuft, wird hier nicht näher darauf
eingegangen.
Loggt sich der Spieler ein, wird seine Buddy List aus der Datenbank in das Buddy
List-Array der Klasse psCharacter durch die Methode LoadBuddies geladen.
Beim Ein- und Ausloggen des Spielers wird die Methode NotifiyBuddies der Klasse
UserManager aufgerufen. In dieser Methode werden, wie weiter oben bereits angesprochen, mittels des Feldes BuddyOf alle Mitspieler, auf deren Buddy List der gerade einbzw. ausgeloggte Spieler steht, über den Vorgang informiert werden. Dazu wird zum Beispiel beim Einloggen des Spielers die Methode NotifiyBuddies mit dem Wert true für
den Parameter logged_in aufgerufen. Nun werden alle Spieler, die sich in der BuddyOf
Liste befinden und gerade online sind, darüber informiert, dass der Buddy sich eingeloggt
hat. Die Methode NotifyBuddies sendet hierzu zwei Nachrichten an den Client. Zum
einen wird mit Hilfe der Klasse psBuddyStatus eine Nachricht über die Statusänderung
des Buddys generiert, die vom Client in der Methode HandleMessage verarbeitet wird,
und dafür sorgt, dass der Buddy von der Offline Liste in die Online Liste verschoben
wird. Zum anderen wird eine Chat-Nachricht an den Client des Spielers gesendet. Sie
4. Analyse der Quelltexte
44
informiert den Spieler darüber, dass der Buddy dem Spiel gerade beigetreten ist.
4.3.3. Embedded Chat
Das Entwurfsmuster Embedded Chat haben wir bereits in Kapitel 3 kennengelernt.
Hier werden wir anhand der Quelltexte zeigen, wie die Spiele Chat-Nachrichten von
Spielern erfassen, wie sie die Nachrichten den Empfängergruppen zuordnen, und wie von
ihnen die Ausgabe formatiert wird. In Abschnitt 4.3.6 wird mit dem Entwurfsmuster
Mediated Updates gezeigt, auf welche Weise die Chat-Nachrichten an alle Empfänger
verteilt werden.
Generell ist die Funktionalität des Embedded Chat in Planeshift umfangreicher als
in den beiden anderen Spielen. Dies deckt sich mit den Erfahrungen der Analyse aus
Kapitel 3. Dort waren ebenfalls die Embedded Chats der MMORPGs umfangreicher
ausgestattet, als die Embedded Chats der MUGs.
Abbildung 4.4.: Planeshift - Embedded Chat Klassendiagramm
Sowohl bei Planeshift, als auch bei den beiden MUGs, gibt der Spieler zunächst die
Nachricht ein. In Planeshift ist dafür ein Texteingabefeld vorgesehen, dass durch die
Klasse pawsEditTextBox realisiert wird und gemeinsam mit dem Ausgabefeld permanent
während dem Spiel angezeigt werden kann.
Quake 3 Arena und BZFlag bieten hingegen kein Widget für die Eingabe der Nachrichten an. Die Eingabe wird zum Beispiel in Quake 3 Arena mit einem Hotkey initiiert,
woraufhin alle Tastatureingaben an die Methode Message_Key weitergeleitet werden,
bis die Aktion beendet oder abgebrochen wird (siehe Abbildung 4.5). Der geschriebene
Nachrichtentext wird dann einfach über dem Spielfeld visualisiert.
Nach dem Senden der Nachricht wird der Inhalt des Eingabetextfeldes gelöscht und
der Tastaturfokus wieder freigegeben.
4. Analyse der Quelltexte
45
{
void Message Key ( int key ) {
...
i f ( key == K ESCAPE) {
c l s . k e y C a t c h e r s &= ˜KEYCATCH MESSAGE;
F i e l d C l e a r ( &c h a t F i e l d ) ;
return ;
}
i f ( key == K ENTER | | key == K KP ENTER )
{
...
}
c l s . k e y C a t c h e r s &= ˜KEYCATCH MESSAGE;
F i e l d C l e a r ( &c h a t F i e l d ) ;
return ;
}
Field KeyDownEvent ( &c h a t F i e l d , key ) ;
}
Abbildung 4.5.: Erzeugen einer Chat-Nachricht in Quake 3 Arena
4. Analyse der Quelltexte
46
Die Embedded Chats erlauben das Senden der Nachricht an bestimmte Gruppen
von Mitspielern. Die MUGs unterscheiden hierbei folgende Adressaten:
– ein Mitspieler
– Mitspieler des eigenen Teams
– alle Mitspieler
Planeshift ermöglicht darüber hinaus Nachrichten an folgende Spielergruppen zu senden:
– Mitspieler der eigenen Gilde4
– Mitspieler innerhalb einer begrenzten Entfernung zum Autor der Nachricht
Damit das System die Adressaten erfährt, gibt der Spieler vor der Nachricht ein Kommando wie guild ein. Dieses Kommando wird von der Methode HandleCommand interpretiert und gemeinsam mit der Nachricht an den Server weitergeleitet. Auf dem Server
liest die Methode HandleMessage den Befehl aus und gibt dann die Nachricht an die
zuständige send-Methode weiter. In diesem Fall wäre das die SendGuild-Methode.
Anstelle von Kommandos zur Unterscheidung der Adressaten, verwenden die MUGs
unterschiedliche Hotkeys für das Öffnen des Eingabetextfeldes. Der Hotkey initiiert also
nicht nur die Eingabe der Nachricht, sondern legt auch gleichzeitig den Nachrichten-Typ
fest. Die Zuteilung auf dem Server läuft dann genauso wie in Planeshift ab.
Ein weiterer Unterschied ist die Formatierung der Nachrichten. Alle Spiele stellen
Nachrichten an unterschiedliche Adressaten in unterschiedlichen Farben dar. Bei den
MUGs wird das Mapping der Farben auf dem Server erledigt, in Planeshift ist der Client
dafür verantwortlich.
4.3.4. Invitation
Invitation gehört ebenfalls zu den Entwurfsmustern, die ausschließlich von Planeshift
realisiert werden. Der Ablauf ist im Interaktionsdiagramm in Abbildung 4.6 illustriert.
Um einen Mitspieler einzuladen, muss der Spieler zunächst das Gruppen-Widget, welches durch die Klasse pawsGroupWindow realisiert wird, öffnen. Durch einen Klick auf
den Button Invite wird die Methode OnButtonPressed aufgerufen, welche ein Widget
mit einem Textfeld öffnet, in dem der Name des Einzuladenden eingetragen wird. Die
Bestätigung des eingegebenen Namens startet die Methode OnStringEntered, die eine
Nachricht mit dem Namen des eingeladenen Mitspielers und den Befehl invite enthält.
Auf dem Server wird die Nachricht von der Methode HandleMessage der Klasse
GroupManager behandelt. Der Befehl invite führt hier zum Aufruf der Methode invite
derselben Klasse. In dieser Methode wird erst einmal überprüft, ob folgende Voraussetzungen für eine Einladung erfüllt sind:
4
Gilden stellen in MMORPGs persistente Gruppen dar.
4. Analyse der Quelltexte
47
– Der Einladende muss in einer Gruppe sein. Falls nicht wird eine Gruppe mit ihm
als Gruppenleiter erstellt.
– Der Eingeladene darf nicht in einer anderen Gruppe Mitglied sein.
– Der Einladende muss Gruppenleiter sein.
– Der Einladende darf nicht mit dem Eingeladenem identisch sein.
Sind die Voraussetzungen erfüllt, wird ein Objekt der Klasse PendingGroupInvite erzeugt. Diese Klasse speichert die Daten der Einladung und verarbeitet später die Antwort
des Eingeladenen. Darauf erstellt der GroupManager mit Hilfe des QuestionManagers die
Nachricht vom psQuestionMessage und ruft anschließend deren Methode SendMessage
auf, um sie an den Client des Eingeladenen zu senden.
Auf dem Client des Eingeladenen kümmert sich die Klasse psQuestionClient um alle
Anfragen an den Spieler. Dies betrifft auch Einladungen. In der Methode HandleMessage
werden die einzelnen Informationen der Nachricht mit Hilfe der Klasse psQuestionMessage ausgelesen. Da eine Einladung in Planeshift eine grundsätzlich einer Bestätigung
bedarf, wird dann die Methode HandleConfirm aufgerufen, die wiederum ein Objekt der
Klasse psConfirm erzeugt. In dem Konstruktor von psConfirm wird ein Widget geöffnet,
das dem Eingeladenen die Einladung visualisiert. Der Spieler hat nun die Möglichkeit
entweder anzunehmen oder abzulehnen. In beiden Fällen wird die Nachricht wieder an
den Server gesendet, wo sie an die Methode HandleMessage der Klasse QuestionManager
weitergeleitet wird. Diese Methode ermittelt zunächst anhand der eindeutigen QuestionID, welches PendingQuestion-Objekt zu dieser Nachricht gehört. Anschließend ruft sie
die HandleAnswer-Methode des gefundenen PendingQuestion-Objekts auf. Falls der
Eingeladene der Einladung zugestimmt hat, wird nun die Methode HandleJoinGroup
der Klasse GroupManager ausgeführt, die schließlich den Eingeladenen durch den Aufruf
der Methode AddPlayerToGroup der Gruppe hinzufügt.
4.3.5. Login
Das Entwurfsmuster Login wird von dem Spiel Planeshift implementiert. In Abbildung
4.7 ist ein Screenshot des Login-Fensters von Planeshift abgebildet.
In dem Textfeld unter Account gibt der Spieler seinen Benutzernamen ein, das Passwort
in das Textfeld darunter. Auf der rechten Seite sieht man eine Liste der Server, in der
aber beim derzeitigen Entwicklungsstand des Projekts lediglich ein Server zur Auswahl
steht. Um die Anmeldung auszuführen, klickt der Spieler auf den OK-Button, was dazu
führt, dass die Methode OnButtonPressed der Klasse pawsLoginWindow aufgerufen wird
(siehe Abbildung 4.8). Diese prüft zunächst, ob der Benutzernamen und das Passwort
angegeben worden sind, und ruft dann die Methode ConnectToServer derselben Klasse
auf.
Diese Methode versucht eine Verbindung zum Server aufzubauen und ruft, falls die
Verbindung hergestellt werden konnte, die Methode Authenticate der Klasse psNet-
4. Analyse der Quelltexte
48
Manager auf und übergibt dabei den Benutzernamen und das Passwort als Parameter. Die Authenticate-Methode macht nichts anderes als die Authenticate-Methode
der Klasse psAuthenticateClient aufzurufen. Diese Methode erstellt dann ein Objekt
vom Typ psPreAuthenticateMessage und sendet mit deren Methode SendMessage eine
Nachricht zum Server, um die Authentifizierung zu initiieren.
Auf dem Server wird diese Nachricht von der Methode HandlePreAuthent der Klasse
psAuthenticationServer verarbeitet. Hier wird geprüft, ob der Client die korrekte
Version besitzt und ob der Server für die Annahme von Clients bereit ist. Ist die Version
korrekt und der Server bereit, wird ein Objekt vom Typ psPreAuthApprovedMessage
erzeugt und mit dessen Methode SendMessage dem Client einen Bestätigung geschickt.
Auf dem Client erhält die Methode HandlePreAuth der Klasse psAuthenticationClient die Nachricht und sendet daraufhin dem Server mit der Methode SendMessage
der Klasse psAuthenticationMessage eine Nachricht mit dem Benutzernamen und dem
Passwort.
Auf dem Server überprüft die Methode HandleAuthent der Klasse psAuthenticationServer zuerst den Benutzernamen. Falls dieser existiert, wird anschließend das übermittelte Passwort mit dem zum Benutzernamen abgespeicherten Passwort verglichen. Sind
beide Passwörter identisch, wird eine Nachricht vom Typ psAuthApprovedMessage erzeugt und zum Client gesendet.
4.3.6. Mediated Updates
Der Zweck des Entwurfsmusters Mediated Updates ist es, den administrativen Aufwand für Updates zu minimieren, in dem man ein zentrale Instanz zur Verteilung der
Updates verwendet.
Alle Spiele verwenden das Entwurfsmuster Update your friends. Wie dies implementiert wird, soll an Quake 3 Arena und dem Austausch von Chat-Nachrichten
demonstriert werden.
In Abbildung 4.9 sehen wir dazu ein Interaktionsdiagramm, in dem drei Objekte, der
Client des Senders, der Server und der Client des Empfängers untereinander Nachrichten
austauschen. Zu beachten ist, dass hier mehrere Empfänger existieren können.
Gibt der Spieler eine Chat-Nachricht ein, wird bei jedem Tastendruck die Methode
Message_Key ausgerufen. Sobald die Enter-Taste gedrückt wird, bedeutet das, dass der
Spieler die eingegebene Nachricht jetzt absenden möchte. Dann wird die eingegebene
Nachricht mithilfe der Funktion AddReliableCommand an die Liste der Befehlsnachrichten des Server gehängt. Wenn die Nachricht an der Reihe ist, sendet sie der Client zum
Server. Dort angekommen wird die Nachricht an die Funktion G_SAY übergeben, die
den Inhalt und den Adressaten der Nachricht ermittelt und anschließend die Funktion
G_SayTo, welche die Nachricht an die Empfänger sendet, n-mal für n Empfänger aufruft.
Nachdem die Nachricht an alle Empfänger verteilt wurde, wird bei jedem Empfänger
die Funktion CG_ServerCommand aufgerufen, die die Nachricht des Servers verarbeitet.
Stellt die Funktion fest, dass es sich um eine Chat-Nachricht handelt, ruft sie die Funktion
4. Analyse der Quelltexte
49
CG_Printf auf, welche die Nachricht auf dem Client ausgibt.
Dieser Verteilungsmechanismus ist bei den anderen Spielen ähnlich implementiert,
weshalb auf diese hier nicht auch noch eingegangen wird.
4.3.7. User List
Eine User List existiert in allen drei Spielen. Bei den beiden MUGs kann die User List
per Hotkey während des Spiels aufgerufen und über die Spielwelt gezeichnet wird. Da die
Anwendungsinformation hier höher als die Bewusstseinsinformation bewertet wird, wird
auf eine permanente Einblendung der User List verzichtet. In Planeshift lässt sich die
User List per Button oder mit einem Befehl im Chat-Eingabetextfeld abfragen. Die
User List wird dann in beiden Fällen nach Namen sortiert im Ausgabetextfeld des
Chats ausgegeben. Die Ausgabe beschränkt sich dabei auf maximal 30 Spielernamen.
Zusätzlich wird die Anzahl der aktuell teilnehmenden Spieler angezeigt.
Auf dem Server nimmt die Klasse UserManager und deren Methode Who den Befehl
zur Ausgabe der User List entgegen (siehe Abbildung 4.10). Die Methode iteriert mit
einem Iterator vom Typ ClientIterator über maximal 30 Clients, die gerade online
sind. Die Limitierung ist damit zu erklären, dass eine Nachricht in einem 1024 Byte
großen Array gespeichert wird. Warum bei mehr als 30 Clientnamen die Nachrichten
nicht einfach in mehrere Pakete der maximalen Größe aufgeteilt werden ist nicht klar,
denn diese Methode verwendet Planeshift auch, um die Namen von weniger als 30 Clients
zu versenden.
In jedem Durchlauf wird in die Variable temp der Nickname des referenzierten Clients
kopiert und an die Variable message vom Typ String angehängt. Nach der Iteration wird
mit clients->Count die Gesamtzahl der Spieler an die Nachricht gehängt.
Zum Schluss wird eine Nachricht vom Typ psSystemMessageSafe erzeugt, die aus
den aufrufenden Client, dem Befehlstyp Who und der User List, die Nachricht für den
Client erzeugt. Mit der Methode SendMessage wird schließlich die Nachricht an den
Client gesendet.
Auf die anderen beiden Frameworks wird hier nicht näher eingegangen, da die Implementierung ähnlich ist.
4.3.8. What’s up
Das Entwurfsmuster What’s up hat den Zweck Anwender, die zu einem späteren Zeitpunkt zu einer Interaktion hinzukommen, zu integrieren.
In BZFLag werden die Spielweltdaten vor dem Beitritt zu einem Spiel geladen. Die
Spielweltdaten sind in der Klasse World enthalten, die sowohl vom Client, als auch vom
Server verwendet wird. Die Spielweltdaten bestehen aus den Informationen über den
Aufbau der 3D-Umgebung, der Konfiguration der Karte und die aktuellen Spielerinformationen.
Bevor der Client sich in das Spiel einklinken kann, werden die Daten auf den Client
4. Analyse der Quelltexte
50
kopiert. Es beginnt mit dem Aufruf der Methode start der Klasse WorldDownLoader.
Hier wird zunächst geprüft, ob die Spielinformationen bereits lokal vorhanden sind. Wenn
dies nicht der Fall ist, wird die Methode askBZFS aufgerufen, die dem Spieler anzeigt, dass
die Spielweltdaten runtergeladen werden und den Server mit einer Nachricht auffordert,
die Spielweltdaten zu senden. Zum Schluss wird in dieser Methode noch eine Datei als
Cache für die Spielweltdaten angelegt.
Die Funktion sendWorldChunk des Servers sendet dem Client nun so lange Teile des
Objekt World, bis das ganze Objekt auf dem Client kopiert ist.
Anschließend werden auf dem Client die Daten aus dem Cache in das Laufzeitobjekt
gelesen.
4.3.9. Who’s that girl
Der Zweck des Entwurfsmusters Who’s that girl ist es, Nachrichten in einem GroupwareSystem mit einem Anwender zu verbinden.
Dieses Entwurfsmuster wird von allen analysierten Spielen implementiert. Sie erzeugen
zu jedem verbundenen Client ein Client-Objekt, in dem unter anderem die IP-Adresse
des Clients gespeichert wird. Erhält ein Server eine Nachricht eines Clients, dann wird
die übermittelte IP-Adresse mit denen der Client-Objekte verglichen. In Planeshift bearbeitet die Methode CheckIn der Klasse NetBase ankommende Pakete (siehe Abbildung
4.11). Die IP-Adresse wird aus der Nachricht ausgelesen und in eine Variable vom Typ
SOCKADDR_IN gespeichert. Diese Variable wird der Methode GetConnByIP der Klasse
Netmanager übergeben, die zu der IP-Adresse das passende Connection-Objekt ermittelt und zurückgibt. In diesem Connection-Objekt ist die Nummer des Client-Objekts
gespeichert, wodurch die Zuordnung Client und Nachricht damit erreicht ist.
Im Gegensatz zu den anderen Spielen behandelt Q3A den Fall, dass auf einem Rechner mehrere Clients laufen. In diesem Fall gewährleistet die IP-Adresse alleine keine
eindeutige Zuordnung zum Client. Deshalb wird in Q3A neben der IP-Adresse auch der
Port geprüft, auf dem der Client die Nachrichten sendet. Diese werden in die Nachricht
gepackt und auf dem Server von der Variablen qport ausgelesen und anschließend mit
den Ports der Clients verglichen (siehe Abbildung 4.12).
4.4. Zusammenfassung
Leider erwiesen sich die Quelltexte als sehr schlecht dokumentiert. Auch die Form des
Quelltextes trägt nicht besonders zum Verständnis der Implementierungsdetails bei. Die
Methode main5 von BZFlag erstreckt sich zum Beispiel über mehr als tausend Zeilen.
Selbst das ehemals kommerzielle Produkt Quake 3 Arena macht hier keine Ausnahme. Dennoch konnte eine Reihe von Entwurfsmustern ausgegraben werden. Und wie
erwartet befinden sich darunter jetzt auch technische Entwurfsmuster, wie zum Beispiel
Mediated Updates. In Abbildung 4.13 sehen wir das Diagramm von Abbildung 3.30
5
Diese Methode befindet sich in der Datei bzfs.cxx in dem Verzeichnis /src/bzfs
4. Analyse der Quelltexte
51
Entwurfsmuster
Active Map
Buddy List
Embedded Chat
Invitation
Login
Mediated Updates
User List
What’s up
Who’s that girl
BZFlag
Planeshift
Quake 3 Arena
ja
nein
ja
nein
ja
ja
ja
ja
ja
nein
ja
ja
ja
ja
ja
ja
nein
ja
nein
nein
ja
nein
nein
ja
ja
nein
ja
Tabelle 4.2.: Identifizierte Entwurfsmuster anhand der Quelltexte.
um die hier identifizierten Entwurfsmuster erweitert. Diese Entwurfsmuster und deren
Beziehungen sind in dem Diagramm orangefarben dargestellt.
Die Ergebnisse bestätigen letztlich nochmal das, was wir in Kapitel 3 feststellen konnten. Es gibt eine signifikante Menge an Entwurfsmustern die sowohl in seriösen Anwendungen als auch in Computerspielen anwendbar sind.
4. Analyse der Quelltexte
52
Abbildung 4.6.: Interaktionsdiagramm zu Invitation von Planeshift.
4. Analyse der Quelltexte
53
Abbildung 4.7.: Login-Fenster in Planeshift
Abbildung 4.8.: Klassendiagram für das Pattern Login von Planeshift
4. Analyse der Quelltexte
54
Abbildung 4.9.: Interaktionsdiagramm zur Verteilung von Chat-Nachrichten über
Mediated Updates in Quake 3 Arena
4. Analyse der Quelltexte
55
void UserManager : : Who( psUserCmdMessage& msg ,
Client ∗ client , intclientnum ) {
c s S t r i n g message ( ( s i z e t ) 1 0 2 4 ) ;
c s S t r i n g temp ( ( s i z e t ) 1 0 2 4 ) ;
...
C l i e n t I t e r a t o r i (∗ c l i e n t s ) ;
f o r ( C l i e n t ∗ c u r r = i . F i r s t ( ) ; c u r r && count <30;
c u r r = i . Next ( ) )
{
...
temp . Format ( format . GetData ( ) , c u r r −>GetName ( ) ,
g u i l d T i t l e . GetData ( ) , guildName . GetData ( ) ) ;
...
message . Append ( temp ) ;
...
}
...
temp . Format ( ”\%u shown from \%u p l a y e r s o n l i n e \n” ,
count , c l i e n t s −>Count ( ) ) ;
...
psSystemMessageSafe newmsg ( c l i e n t n u m ,MSG WHO, message ) ;
newmsg . SendMessage ( ) ;
}
Abbildung 4.10.: Erzeugen einer User List in Planeshift
bool NetBase : : CheckIn ( ) {
//
check
for
incoming
packets
SOCKADDR IN addr ;
...
p a c k e t l e n = RecvFrom (&addr , &l e n ,
( void ∗ ) i n p u t b u f f e r , MAXPACKETSIZE) ;
...
//
Identify
the
connection
Connection ∗ c o n n e c t i o n = GetConnByIP(&addr ) ;
...
}
Abbildung 4.11.: Identifizierung eines Clients in Planeshift anhand der IP-Adresse
4. Analyse der Quelltexte
56
void SV PacketEvent ( n e t a d r t from , msg t ∗msg ) {
...
q p o r t = MSG ReadShort ( msg ) & 0 x f f f f ;
...
f or ( i =0, c l=s v s . c l i e n t s ; i < s v m a x c l i e n t s −>i n t e g e r ;
i ++, c l ++) {
...
i f ( c l −>netchan . q p o r t != q p o r t ) {
continue ;
}
...
}
...
}
Abbildung 4.12.: Identifizierung des Autors der Nachricht in Quake 3 Arena anhand
der Ports
Abbildung 4.13.: Beziehungen zwischen den identifizierten Entwurfsmustern.
4. Analyse der Quelltexte
57
5. Neue Entwurfsmuster
Nachfolgend werden die sieben Entwurfsmuster, die während der Analyse der Mehrbenutzerspiele ausgegraben wurden, beschrieben. Dabei lehnt sich das Schema der Beschreibung an die Form, wie sie in [SLht] verwendet wird, an.
5.1. Automatic Software Update
Intent
Context
http://www.flickr.com/photos/gokidgo/74678689/
Informiere den Benutzer, sobald eine neue Version seiner ClientSoftware verfügbar ist.
Sie entwickeln Client-Software für ein verteiltes System. Das System
und die Client-Software werden von ihnen ständig weiterentwickelt
und es werden immer wieder Fehler in der Software behoben. Jetzt
überlegen sie, wie sie Benutzer dazu bringen, die neueste Version der
Anwendung zu verwenden.
4 4 4
Problem
Software
erhält
auch
nach
ihrer
Veröffentlichung
Änderungen, die entweder durch neue Funktionalitäten
oder Fehlerbeseitigung bedingt sind. Verwendet ein Benutzer eine veraltete Version einer Client-Software sind die
neuen Funktionen für ihn nicht zugänglich oder beseitigte
Fehler treten weiterhin auf. Die Client-Software auf dem
aktuellen Stand zu halten, ist für den Benutzer mit hohem
Aufwand verbunden.
Scenario
Durch Rechtschreibreformen ändern sich die Grammatikregeln der
deutschen Sprache. Für Schüler stellt das ein Problem dar, denn
ihre Klausurnoten hängen unter anderem davon ab, dass sie ihre
Sätze nach den aktuellen Grammatikregeln bilden. Deshalb werden
die Schulbücher neu aufgelegt, sobald sich die Rechtschreibung ändert.
Diese neuen Schulbücher werden automatisch an die Schüler ohne deren Zutun verteilt.
Symptoms
Sie sollten es in Betracht ziehen dieses Entwurfsmuster anzuwenden,
wenn . . .
– sich die Client-Software oft ändert.
Solution
Deshalb: Lassen Sie nur Verbindungen zum System mit aktuellen Clients zu. Bringen Sie ältere Clients, die sich mit
dem System verbinden wollen, auf den aktuellen Stand der
Client-Software.
Collaborations
Bei dem Verbindungsaufbau sendet der Client seine Versionsnummer
zum Server. Auf dem Server ist die aktuelle Versionsnummer des Clients gespeichert. Der Server vergleicht beide Versionsnummern miteinander. Ist die Versionsnummer des anfragenden Clients niedriger als
die gespeicherte Versionsnummer, muss der Client aktualisiert werden.
Dazu wird der Verbindungsaufbau unterbrochen und die notwendigen
Dateien auf den Client übertragen. Anschließend wird der Client neu
gestartet und der Verbindungsaufbau zum Server wiederholt. Der Client sendet erneut sein Versionsnummer, die jetzt der aktuellen Versionsnummer entspricht. Die Verbindung wird zum System hergestellt.
Rationale
Ohne Automatic Software Update muss sich der Benutzer selbst
um die Aktualität seiner Client-Software kümmern. In der Regel
können Benutzer mittels Web-Client Updates von der Website des
Herstellers herunterladen. Führt der Benutzer diese Aktion in kurzen
regelmäßigen Abständen durch, wird er zwar seine Software immer auf
dem aktuellen Stand halten können, ein Teil seiner Bemühungen zur
Aktualisierung sind aber nutzlos, da nicht immer ein Update verfügbar
ist. Wählt der Benutzer aber recht lange und unregelmäßige Abstände
zwischen den Aktualisierungen, sind dabei häufiger Updates verfügbar,
seine Software ist dafür nicht immer auf dem aktuellen Stand.
Check
Wenn Sie dieses Entwurfsmuster anwenden, sollten sie folgende Fragen beantworten:
– Wird die Software sofort bei der Verbindung zum System aktualisiert, oder erst wenn der Benutzer einer Aktualisierung zustimmt?
5. Neue Entwurfsmuster
59
Danger Spots
Müssen bei einem Update viele Dateien geändert werden, kann die
Übertragung zum Client sehr lange dauern. Geben Sie dem Anwender die Möglichkeit, die Aktualisierung abzubrechen um sie zu einem
späteren Zeitpunkt zu wiederholen.
Achten Sie darauf, die Updates auf dem Client des Benutzers so
zu speichern, dass der Benutzer sie auch von seinem lokalen Speichermedium ausführen kann. Muss der Benutzer aus irgendeinem Grund
die Software neu installieren, wird dadurch vermieden, dass die Updates über die in der Regel wesentlich langsamere Internet-Verbindung
wiederholt heruntergeladen werden müssen.
Known Uses
Guild Wars ist ein MMORPG, bei dem sich der Spieler mittels ClientSoftware zu einem Server verbindet. Nach dem Start des Clients,
wird zunächst der Client auf Aktualität überprüft.
Abbildung 5.1.: Automatic Software Upate in Guild Wars.
Ist der Client nicht aktuell, werden die Dateien des Clients auf den
neuesten Stand gebracht, wobei das Fenster aus Abbildung 5.1
erscheint. In diesem Fenster wird dem Spieler der Fortschritt der
Aktualisierung angezeigt. Auf Wunsch des Benutzers kann der
Vorgang auch abgebrochen werden, was zur Folge hat, dass der
Client ebenfalls beendet wird.
Entropia Universe ist ebenfalls ein MMORPG. Wie in Guild Wars
wird bei dem Verbinden mit dem Server die Version des Clients
überprüft, da nur Clients mit der aktuellsten Client-Version an
dem Spiel teilnehmen dürfen. Muss der Client aktualisiert werden,
erscheint ein Fenster wie in 5.2 abgebildet, in dem die zu aktualisierende Datei und der Fortschritt des Aktualisierungsprozesses
angezeigt wird. Der Spieler hat auch die Möglichkeit den Vorgang
5. Neue Entwurfsmuster
60
abzubrechen, in dem er den Abort-Button benutzt. Dies führt aus
genanntem Grund aber auch zum Abbruch der Verbindung zum
Server.
Abbildung 5.2.: Automatic Software Upate in Entropia
Universe.
4 4 4
Related Patterns Update your Friends sorgt dafür, dass die Daten, auf die die Benutzer
gemeinsam zugreifen, konsistent sind.
5. Neue Entwurfsmuster
61
5.2. Blind Date
http://www.flickr.com/photos/berencsy/49434057/
Alternative name(s): Meeting Stone
Intent
Erleichtere die Gruppenbildung zur Lösung von kollaborativen Aufgaben.
Context
Sie entwickeln ein System, in dem Anwender Aufgaben nur gemeinsam lösen können. Dabei spielt es keine Rolle, welche Anwender im
konkreten Fall kollaborieren.
4 4 4
Problem
Sollen Anwender eine Aufgabe gemeinsam lösen, dann
müssen sich mindestens zwei Anwender zusammentun. Kennt
der Anwender jedoch niemanden, der für diese Aufgabe
verfügbar ist, ist es schwer für ihn den geeigneten Anwender zu finden.
Scenario
Stellen sie sich ein Entwicklerteam vor, dass die Extreme Programming Methode verwendet. Eine Anwendung dieser Methode ist die
Programmierung in Paaren. Aber wie bilden sich diese Paare? Bei
Extreme Programming an einem Ort ist die Antwort einfach: Wann
immer etwas implementiert werden soll, fragt der Entwickler andere
Programmierer im Raum nach einem Partner für diese Aufgabe. Das
signalisiert den anderen Entwicklern, dass der fragende Entwickler eine Session starten möchte. Sobald ein anderer Entwickler verfügbar
ist, trifft er sich mit dem fragenden Entwickler und die Kollaboration
beginnt.
Symptoms
Sie sollten es in Betracht ziehen dieses Entwurfsmuster anzuwenden,
wenn . . .
– ihre Gruppen eher homogen sind, was bedeutet, dass unterschied-
5. Neue Entwurfsmuster
62
liche Benutzer eine Gruppe bilden können, um die Aufgabe zu
lösen.
– das Bedürfnis zur Zusammenarbeit durch einen speziellen Kontext einer Systembenutzung ausgelöst wird (z.B. wenn ein Benutzer spezielle Erfahrungen gesammelt hat).
Solution
Deshalb: Verbinde die Aufgabe mit einer Meeting Area. Lassen Sie Benutzern ihre Repräsentationen bei dem Treffpunkt
platzieren, um zu signalisieren, dass sie die Aufgabe lösen
möchten. Informieren Sie alle wartenden Benutzer, sobald
sich genügend Anwender an der Meeting Area befinden und
erlauben Sie den wartenden Benutzern die Kollaboration zu
starten.
Collaborations
Der Benutzer navigiert zunächst zur Meeting Area. Die Meeting Area
ist eine Beschreibung der Aufgabe. In den meisten Fällen steht sie
in Beziehung zu einem bestimmten Anwendungskontext. Beispiele für
einen Kontext könnten eine Lehrstunde im Verlauf eines Kurses oder
eine spezielle Erfahrungsstufe in einem Mehrbenutzerspiel sein.
Wenn der Benutzer sich entscheidet, die Aufgabe zu lösen, stellt er
seinen Avatar in die Meeting Area. Technisch gesehen wird das Objekt
des Benutzer in eine Liste mit Benutzern, die bereit sind, gestellt.
Sobald sich genügend Benutzer an der Meeting Area befinden (d.h.,
die Liste der wartenden Benutzer hat eine ausreichende Größe) initiiert das Systeme eine kollaborative Session und fügt alle wartenden
Benutzer zu dieser hinzu.
Rationale
Verglichen mit anderen Mitteln der Gruppenbildung, in denen Benutzer ihre Partner unter Berücksichtigung der Persönlichkeiten (oder
Fähigkeiten) auswählen, bringt das Entwurfsmuster Blind Date Benutzer, abhängig von ihrer zeitlichen Verfügbarkeit zur Lösung einer
bestimmten Aufgabe, zusammen.
Der Vorteil dabei ist, dass Benutzer sich nicht kennen müssen.
Check
Wenn Sie dieses Entwurfsmuster anwenden, sollten sie folgende Fragen beantworten:
– Wie soll die Meeting Area visualisiert werden?
– Wird die kollaborative Session initiiert sobald genügend Benutzer verfügbar sind, oder sollen die Benutzer lediglich informiert
werden und die Entscheidung ob eine Gruppe gebildet wird, dem
Benutzer, der sich zuerst in der Meeting Area eingetragen hat,
überlassen werden?
5. Neue Entwurfsmuster
63
Danger Spots
Falls es länger dauert bis andere Benutzer der Meeting Area beitreten, kann der Benutzer vergessen, dass er seine Benutzerrepräsentation
an der Meeting Area platziert hat. Deshalb sollten Sie in Erwägung
ziehen, die Absicht des Benutzers in seiner Benutzerschnittstelle zu
visualisieren.
Es gibt keine Garantie, dass die Gruppe gut zusammenarbeitet. Sie
sollten über Mittel zum Verlassen der Gruppe nachdenken.
Known Uses
World of Warcraft ist ein MMORPG in dem manche Aufgaben nur
gemeinschaftlich bewältigt werden können. In dem linken Teil von
Abbildung 5.3 erreicht ein Spieler eine Meeting Area (der Stein
vor dem Spieler). Durch Anwendung des meeting stones bringt
der Spieler sein Interesse zum Ausdruck und wird in die Liste
der wartenden Spieler aufgenommen. Danach kann er fortfahren
die virtuelle Welt zu erkunden. Der Umstand, dass er weiter nach
Partnern für die Aufgabe sucht, wird durch die Verwendung eines
Icons an der Active Map angezeigt (siehe Abbildung 5.3).
4 4 4
Related Patterns Birds of a feather kann verwendet werden, um potentielle Gruppenmitglieder, basierend auf gemeinsame Interessen, zu finden.
Invitation kann verwendet werden, um einen bestimmten Benutzer
explizit zu einer kollaborativen Session einzuladen.
Collaborative Session: Das Blind Date wird dazu verwendet,
die Mitgliedschaft für eine Collaborative Session bereitzustellen.
5. Neue Entwurfsmuster
64
Abbildung 5.3.: Ein Meeting Stone als Implementierung einer
Meeting Area in dem Spiel World of Wacraft
5. Neue Entwurfsmuster
65
5.3. Name Generator
Intent
Generiere für den Benutzer einen gültigen, noch nicht vergebenen Namen.
Context
Sie entwickeln ein kollaboratives System, in dem Benutzer durch eindeutige Namen identifiziert werden.
4 4 4
Problem
Um seine Registrierung für das System abzuschließen muss
der Anwender einen eindeutigen Namen wählen. Je mehr Benutzer angemeldet sind desto mehr Namen sind vergeben. Da
ein Benutzer aber nicht weiß, welche Namen bereits vergeben
sind, bleibt ihm nichts anderes übrig, als einen Namen nach
dem anderen auszuprobieren, bis er einen gefunden hat, der
noch nicht verwendet wird.
Scenario
Peter hat sich sein erstes Auto gekauft und ist ganz stolz darauf. Jetzt
muss er noch zur Zulassungsstelle, um sein Auto anzumelden. Dort angekommen übergibt er dem Schalterbeamten die erforderlichen Unterlagen und teilt ihm auch den Wunsch auf ein besonderes Kennzeichen
mit. Der Schalterbeamte stellt nach einer kurzen Überprüfung in seinem System fest, dass dieses Kennzeichen bereits vergeben ist. Peter
ist enttäuscht, da er sich sehr auf das Kennzeichen gefreut hatte. Jetzt
fällt ihm keine Alternative ein, und wenn doch, wer garantiert ihm,
dass dieses Kennzeichen nicht auch schon vergeben ist? Dann werden
seine Gedanken vom Schalterbeamten unterbrochen. Dieser nennt ihm
ein paar Kennzeichen, die seinem Wunschkennzeichen sehr ähnlich sind
und versichert ihm, dass diese alle noch zu haben sind. Nach kurzem
Zögern, entscheidet sich Peter für eines dieser Kennzeichen. Zwar ist
es nicht genau das Kennzeichen, welches er sich gewünscht hat, aber
er muss sich nicht mehr weiter über die Auswahl eines Kennzeichens
den Kopf zerbrechen.
5. Neue Entwurfsmuster
66
Symptoms
Sie sollten es in Betracht ziehen dieses Entwurfsmuster anzuwenden,
wenn . . .
– das System eine sehr große Anzahl an Benutzern erreicht hat.
Solution
Deshalb: Generieren Sie einen Namen der noch nicht verwendet wird. Schlagen Sie diesen Namen dem Benutzer vor.
Collaborations
Innerhalb des Formulars für eine Registrierung existiert ein Textfeld,
in dem der Benutzer seinen gewünschten Benutzernamen einträgt. Sobald der Benutzer den Namen bestätigt, prüft das System, ob der
Name noch nicht verwendet wird. Ist der Name bereits vergeben, generiert das System einen Benutzernamen, der noch nicht verwendet
wird, und schlägt diesen Namen dem Benutzer als Alternative zu dessen gewünschten Namen vor. Dabei weist das System darauf hin, dass
der andere Name bereits vergeben ist. Auf Wunsch kann der Anwender
sich weitere Namen generieren lassen.
Rationale
Ob beruflich oder privat, Benutzer müssen für Anwendungen oft einen
eindeutigen Benutzernamen angeben. Es ist umständlich für die Benutzer sich immer wieder neue Benutzernamen auszudenken. Deswegen verwenden sie häufig ihren eigenen Namen. In Systemen mit großer
Benutzerzahl sind solche Namen in der Regel bereits vergeben. Dem
Benutzer bleibt in diesem Fall nichts anderes übrig, als nach einem
neuen Namen zu suchen, falls er die Dienste des Systems in Anspruch
nehmen will. Ein Generator, der einen neuen Namen generiert, erspart
dem Benutzer diesen Aufwand.
Check
Wenn Sie dieses Entwurfsmuster anwenden, sollten sie folgende Fragen beantworten:
– Kann der Benutzer einen Teil des Namens vorgeben und das System erweitert den Namen, so dass er eindeutig ist?
– Sollen generierte Namen von dem Benutzer abgeändert werden
können?
– Sollen nur Namen generiert werden, die auch wie Namen klingen,
oder sind auch Namen wie rfhtjfjf“ erlaubt?
”
Danger Spots
Werden Namen vom System per Zufall generiert, besteht die
Möglichkeit, dass der generierte Name politisch nicht korrekt ist. Sorgen sie dafür, dass politisch nicht korrekte Namen herausgefiltert werden.
Werden die gleichen Namen immer in der gleichen Reihenfolge vorgeschlagen, besteht die Möglichkeit, dass vermeintlich freie Namen von
5. Neue Entwurfsmuster
67
Benutzern verwendet werden, die sich unmittelbar davor registriert haben.
Known Uses
Anarchy Online ist ein MMORPG, in dem der Spieler mit unterschiedlichen Spielfiguren spielen kann. Bevor er mit einer Spielfigur spielen kann, muss er für jede Spielfigur einige Parameter
auswählen und der Spielfigur einen Namen geben. Dieser Name
muss in der Spielwelt eindeutig sein. Der Spieler hat aber auch
die Möglichkeit sich einen Namen generieren zu lassen (siehe Abbildung 5.4).
Abbildung 5.4.: Name Generator in Anarchy Online.
Star Wars Galaxies ist ein MMORPG, in dem der Spieler, wie in Anarchy Online, Spielfiguren erstellt und ihnen einen eindeutigen
Namen zuweist. Auch hier erhält der Spieler die Möglichkeit, den
Namen generieren zu lassen (siehe Abbildung 5.5).
4 4 4
Related Patterns Quick Registration: Innerhalb einer Quick Registration wählt
der Benutzer seinen eindeutigen Benutzernamen aus.
User Gallery listet alle registrierten Benutzer mit deren Benutzernamen auf.
User List zeigt alle Benutzer einer Session mit deren Benutzernamen
an.
User Profile zeigt persönliche Daten mit dem Benutzernamen eines
Benutzers an.
5. Neue Entwurfsmuster
68
Abbildung 5.5.: Name Generator in Star Wars Galaxies.
5. Neue Entwurfsmuster
69
5.4. Navigator
http://www.flickr.com/photos/elliotzhangyd/69025594/
Alternative name(s): Waypoints
Intent
Visualisiere den Weg zu einem unbekannten Ziel.
Context
Sie entwickeln ein kollaboratives System, in dem sich Anwender innerhalb einer virtuellen Welt bewegen. Um den Anwendern das Gefühl
von einer realen Welt zu geben, verwehren Sie ihnen die Möglichkeit,
sich an beliebige Orte in der virtuellen Welt zu teleportieren.
4 4 4
Problem
Eine Aufgabe erfordert es, dass sich der Benutzer zu einem
bestimmten Zielort begibt, der weder von seiner aktuellen
Position aus sichtbar ist, noch nah genug ist, um in einer
Active Map dargestellt zu werden. Kennt der Benutzer nicht
den Weg zum Zielort, ist es nicht leicht für ihn dorthin zu
finden.
Scenario
Der Entwickler Ralf wird zu einer Vortragsreihe über Extreme Programming nach Berlin eingeladen. Dies ist Ralfs erste Reise nach Berlin, und er kennt nur die Adresse des Veranstaltungsortes. Wie er nach
Berlin gelangt, weiß er, aber wie er in Berlin zu dem Veranstaltungsort kommen soll, weiß er nicht. Deshalb beschließt er, als er in Berlin
angekommen ist, Berliner, die sich dort auskennen, nach dem Weg zu
fragen. Einer der angesprochenen Personen ist so nett und zeichnet
ihm den Weg von seinem Standort bis zum Veranstaltungsort auf ein
Blatt Papier auf. Das einzige was jetzt Ralf noch tun muss, ist diesem
Weg zu folgen.
Symptoms
Sie sollten es in Betracht ziehen dieses Entwurfsmuster anzuwenden,
wenn . . .
5. Neue Entwurfsmuster
70
– Der virtuelle Raum ist so groß, dass es Benutzern schwer fällt,
sich zu orientieren.
– Aufgaben führen Benutzer in einer virtuellen Umgebung an ihnen
unbekannte Orte.
Solution
Deshalb: Visualisieren Sie einen virtuellen Pfad an dem der
Benutzer sich entlang bewegen muss, um an den Zielort zu
gelangen.
Collaborations
Der Benutzer wählt einen Zielort aus. Dadurch wird dem Benutzer ein
Pfad, der von dem Standort des Benutzer bis zum Zielort hin führt,
visualisiert. Für andere Benutzer ist dieser Pfad unsichtbar. Nur der
Punkt des Zielortes bleibt konstant. Der Rest des Pfades ändert sich
mit der Bewegung des Benutzers. Gelangt der Benutzer an den Zielort
wird der Pfad aus der virtuellen Umgebung entfernt.
Rationale
Menschen haben das Bedürfnis auf direktem Weg zu einem Ziel zu
gelangen. Damit Ziele, deren Wege dorthin dem Menschen unbekannt
sind, ohne Umwege erreicht werden können, verwenden Sie Hilfsmittel
wie Strassenkarten, die die Navigation erleichtern oder moderne Navigationsgeräte, die sie komplett übernehmen. Das gleiche Bedürfnis
haben auch Benutzer in virtuellen Umgebungen.
Check
Wenn Sie dieses Entwurfsmuster anwenden, sollten sie folgende Fragen beantworten:
– Wie soll die Navigationshilfe visualisiert werden?
– Für welche Lokationen soll der Benutzer eine Navigationshilfe
erhalten?
Danger Spots
Manche Anwender benötigen keine Orientierungshilfe und empfinden die Navigationshilfe eher als störend. Geben Sie Benutzern die
Möglichkeit, die Navigationshilfe zu deaktivieren.
Known Uses
Everquest 2 ist ein MMORPG mit einer dreidimensionalen virtuellen
Welt. Einige Objekte im Spiel sind als Wegpunkte definiert. Diese
Objekte können Orte oder NPCs1 sein. Wählt der Spieler einen
Wegpunkt aus, führt ein Strahl innerhalb der Spielwelt von der
Spielfigur zum Zielpunkt hin (siehe Abbildung 5.6).
Der Strahl wird permanent angezeigt bis der Spieler das Ziel erreicht hat.
Star Wars Galaxies ist ein MMORPG mit einer dreidimensionalen viruellen Welt. Im Laufe des Spiels erhält der Spieler Aufgaben, die
1
Non-Player-Character: Eine Spielfigur, die von der künstlichen Intelligenz des Spiels gesteuert wird.
5. Neue Entwurfsmuster
71
Abbildung 5.6.: Navigator in Everquest 2.
es zu lösen gilt. Die Aufgaben führen den Spieler an unterschiedliche Orte innerhalb der virtuellen Welt. Ein Strahl ähnlich wie
in Everquest 2 führt den Spieler zu diesen Orten (siehe Abbildung 5.7).
Abbildung 5.7.: Navigator in Star Wars Galaxies.
4 4 4
Related Patterns Travel together ermöglicht den Benutzern gemeinsam den Informationsraum zu erkunden.
5. Neue Entwurfsmuster
72
Virtual Me kann verwendet werden, um dem Benutzer die Bewegung innerhalb einer virtuellen Umgebung zu visualisieren.
5. Neue Entwurfsmuster
73
5.5. Role Indicator
Intent
Context
http://www.flickr.com/photos/gail/131371472/
Visualisieren Sie die Rollen der Benutzer.
Sie entwickeln ein kollaboratives System, in dem Benutzer Rollen zugeordnet werden können.
4 4 4
Problem
Ein Benutzer möchte eine Aktion ausführen. Seine Rolle erlaubt ihm aber nicht die Durchführung dieser Aktion. Da er
auch niemanden kennt, der die geeignete Rolle besitzt, ist es
schwierig für ihn, sein Ziel, die Aktion auszuführen, zeitnah
zu erreichen.
Scenario
Militärische Organisationen haben einen Verhaltenskodex, der unter
anderem beinhaltet, dass rangniedrigere Soldaten vor ranghöheren Soldaten salutieren müssen. Die Soldaten kennen sich aber aufgrund der
hohen Anzahl nur selten persönlich. Damit sie trotzdem den Rang eines
anderen Soldaten erkennen können, besitzt jeder Soldat ein Rangabzeichen auf der Schulter, der den Rang des Soldaten visualisiert. Der
Rang entspricht der Rolle des Soldaten und das Rangabzeichen dem
Role Indicator.
Symptoms
Sie sollten es in Betracht ziehen dieses Entwurfsmuster anzuwenden,
wenn . . .
– Benutzer auf andere Benutzer mit bestimmten Rollen angewiesen
sind.
Solution
Deshalb: Zeigen Sie die Rolle des Benutzers in unmittelbarer
Nähe seines Avatars an, so dass andere Benutzer die Rolle
mit dem Benutzer assoziieren können.
5. Neue Entwurfsmuster
74
Collaborations
Wird ein Avatar eines Benutzers für eine User Gallery, Buddy
List oder in einem anderen Kontext visualisiert, dann wird ebenfalls
festgestellt, welche Rolle der Benutzer hat. Anschließend wird das Symbol, welches der Rolle zugeordnet ist, geladen. Das Symbol wird dann
gemeinsam mit dem Avatar visualisiert.
Rationale
Inhaber von bestimmten Rollen können von anderen Benutzer als Rolleninhaber eindeutig identifiziert werden. Das hat den Vorteil, dass die
Suche nach diesen Benutzern weniger Zeit in Anspruch nimmt. Benutzer gelangen dadurch schneller an ihr Ziel.
Check
Wenn Sie dieses Entwurfsmuster anwenden, sollten sie folgende Fragen beantworten:
– Mit welchen Symbolen sollen die Rollen visualisiert werden?
– Wenn der Benutzer mehr als eine Rolle haben kann, welche Rolle
soll dann visualisiert werden?
Danger Spots
In Systemen, wo wenige Benutzer Rollen besitzen, die Aktionen erlauben, welche von vielen Benutzern nachgefragt werden, kann die Implementierung des Entwurfsmusters Role Indicator dazu führen,
dass sich die Benutzer durch viele Anfragen anderer Benutzer in ihrer
Nutzung des Systems gestört fühlen. Sorgen sie zum Beispiel mit einem Entwurfsmuster wie Attention Screen dafür, dass diese Benutzer Ereignisse, die ihre Aufmerksamkeit beanspruchen, einschränken
können.
Known Uses
World of Warcraft ist ein MMORPG, in dem Spieler in einer kollaborativen Session gemeinsam eine Gruppe bilden können. Einer der
Spieler einer Gruppe ist der Gruppenleiter. Dies wird den anderen
Spieler der Gruppe durch eine Krone am Avatar des Benutzers
visualisiert (siehe Abbildung 5.8).
Abbildung 5.8.: In World of Warcraft werden Gruppenleiter mit
einer Krone am Avatar visualisiert.
5. Neue Entwurfsmuster
75
4 4 4
Related Patterns Role [Fry06] weist Benutzern Rollen zu, die von Role Indicator
anderen Benutzern angezeigt werden.
Attention Screen ermöglicht es dem Benutzer festzulegen, welcher
Typ von Nachricht seine Aufmerksamkeit erhält.
User Gallery: In der User Gallery werden alle Benutzer mit deren Avatare angezeigt.
Hall of fame zeigt die wertvollsten Benutzer des System mit deren
Avataren an.
5. Neue Entwurfsmuster
76
5.6. Spectator
http://www.flickr.com/photos/noqontrol/78000368/
Alternative name(s): Observer
Intent
Erlaube dem Benutzer die Aktivitäten anderer Benutzer zu beobachten.
Context
In einem kollaborativen synchronen System arbeiten Anwender gemeinsam an einem Ziel.
4 4 4
Problem
Neue Benutzer wissen mit der Anwendung nicht richtig umzugehen. Sie führen Aktionen aus, die den Ablauf einer Session in negativer Weise beeinträchtigt.
Scenario
Der kleine Kevin möchte in der lokalen Jugendmannschaft Fußball
spielen. Er ist ein wenig unsicher, weil er nicht weiß, was ihn erwartet.
Sein Vater gibt ihm den Tipp, er solle sich vor einer Anmeldung, einfach mal ein Training anschauen. Es stehe jedem frei, von einer kleine
Tribünen das Training der Mannschaft zu beobachten. Daraufhin besucht Kevin das nächste Training der Mannschaft. Keiner der Spieler
nimmt Notiz von Kevin, der von der Tribüne aus das Training beobachtet. Kevins Anwesenheit hat keinen Einfluss auf das Training, aber
er kann beobachten wie das Training abläuft und sieht wie sich Trainer
und Spieler verhalten. Beim nächsten Training ist er auch dabei und
macht für einen Anfänger verhältnismäßig wenig Fehler.
Symptoms
Sie sollten es in Betracht ziehen dieses Entwurfsmuster anzuwenden,
wenn . . .
– Unerfahrene Benutzer erhalten wenig oder gar keine Akzeptanz
von erfahrenen Anwendern.
5. Neue Entwurfsmuster
77
Solution
Deshalb: Geben Sie dem Anwender die Möglichkeit einer laufenden Session als Beobachter beizutreten, ohne dass seine
Anwesenheit Einfluss auf die Session nehmen kann. Dadurch
erhält er einen Einblick in den Ablauf einer Session, ohne dass
erfahrene Benutzer durch Anfänger-Fehler gestört werden.
Collaborations
Ein Anwender wählt zunächst eine kollaborative Session aus einer Liste laufender kollaborativer Sessions aus. Bevor der Anwender seiner
ausgewählten Session beitritt, erhält er die Möglichkeit zu entscheiden,
ob er der Session regulär beitritt oder als Beobachter. Nachdem er als
Beobachter der Session beigetreten ist, kann er innerhalb der Session
frei navigieren und die Aktionen der Anwender verfolgen.
Rationale
Die Rolle Spectator lässt es nicht zu, dass ein Benutzer Änderungen
im System durchführt. Benutzer, die mit der Anwendung noch nicht
vertraut sind, können sich mit dieser Rolle ein Bild von dem Ablauf
einer Session machen, ohne Gefahr zu laufen, mit falschen Aktionen
die Session negativ zu beeinflussen. Dies führt dazu, dass Anfänger bei
ihrer ersten echten“ Teilnahme weniger Fehler machen, was wiederum
”
bei erfahrenen Anwendern zu mehr Akzeptanz von Anfängern führt.
Check
Wenn Sie dieses Entwurfsmuster anwenden, sollten sie folgende Fragen beantworten:
– Sollten Anwender darüber informiert werden, dass sie jemand beobachtet?
– Dürfen Beobachter mit den Anwendern der Session Kontakt aufnehmen?
– Sollen die Aktionen der Anwender, die zu einem anderen Zustand
der Session führen, dem Spectator explizit angezeigt werden?
Dies könnte den Lerneffekt eines unerfahrenen Benutzers erhöhen.
Danger Spots
Achten Sie darauf, dass Beobachter keine geheimen Objekte anderer
Benutzer sehen können.
Known Uses
Counter Strike Source ist ein MUG, in dem Spieler in einer synchronen kollaborativen Session in Teams gegeneinander antreten. Bevor der Spieler an einem Spiel partizipiert, muss er sich für eines
der beiden Teams entscheiden. Oder aber er schließt sich dem
Spiel als Beobachter an (siehe Abbildung 5.9). In diesem Fall
kann er sich wie ein regulärer Spieler auf dem Spielfeld bewegen,
bekommt aber keine Spielfigur zugewiesen und kann damit auch
keinen Einfluss auf das aktuelle Spiel nehmen.
Entscheidet sich der Spieler dem Spiel als regulärer Spieler beizutreten, wird er als Beobachter entfernt und dem Spiel als regulärer
5. Neue Entwurfsmuster
78
Abbildung 5.9.: Spectator in Counter StrikeSource.
Spieler hinzugefügt, sofern die maximale Spielerzahl nicht erreicht
ist.
Guild Wars ist ein MMORPG, in dem die Spieler neben dem Rollenspiel die Möglichkeit haben in Teams gegeneinander anzutreten.
Die besten Teams können in Meisterschaftsspielen Wettkämpfe
austragen. Die Meisterschaftsspiele können ähnlich wie in Counter Strike Source von anderen Spielern beobachtet werden (siehe
Abbildung 5.10). Allerdings kann ein Beobachter dem Spiel nicht
nachträglich als regulärer Spieler beitreten.
4 4 4
Related Patterns Collaborative Session: In einer Collaborative Session
können Benutzer synchrone Kollaboration planen und koordinieren.
Navigation: Ermöglicht dem Anwender mittels Eingabegeräten
durch die Anwendung zu navigieren.
Role [Fry06] wird einem Anwender zugeordnet. Dieser erhält dann
nur Zugriff auf die Objekte, die für diese Benutzerrolle freigegeben
sind.
5. Neue Entwurfsmuster
79
Abbildung 5.10.: In Guild Wars können Spieler Meisterschaften
beobachten.
5. Neue Entwurfsmuster
80
5.7. Waiting Queue
Intent
Context
http://www.flickr.com/photos/pinelife/161506281/
Stellen Sie Benutzer, die an einer kollaborativen Session teilnehmen
möchte, in eine Warteschlange.
Sie entwickeln ein System, in dem synchrone kollaborative Sessions
teilnehmerbegrenzt sind.
4 4 4
Problem
Ist die maximale Teilnehmerzahl einer kollaborativen Session
erreicht, ist es für den Aspirant schwierig, den richtigen Moment zum Beitritt zur Session zu finden, denn er weiß nicht,
wann einer der Teilnehmer die Session verlässt.
Scenario
An Wochenenden besuchen viele junge Menschen Diskotheken. Bei besonders beliebten Diskotheken ist der Andrang oft größer, als die maximale erlaubte Besucherzahl. Ist die Disco voll, warten neue Aspiranten
vor der Disco darauf, dass Gäste die Discothek verlassen. Hierdurch
bildet sich vor der Diskothek eine Warteschlange, wobei später eintreffende Besucher sich ans Ende der Warteschlange einreihen. Verlässt
ein Gast die Disco darf der Erste aus der Warteschlange die Diskothek
betreten (d.h., je länger ein Aspirant wartet, desto höher steigt die
Wahrscheinlichkeit, dass er die Disco betreten kann).
Symptoms
Sie sollten es in Betracht ziehen dieses Entwurfsmuster anzuwenden,
wenn . . .
– die Anzahl der registrierten Benutzer des Systems die maximale
Teilnehmerzahl einer Session überschreitet.
– die Teilnehmerzahl einer Session häufig die maximale Teilnehmerzahl erreicht.
Solution
Deshalb: Stellen Sie wartende Benutzer in eine Warteschlan-
5. Neue Entwurfsmuster
81
ge. Sobald ein anderer Benutzer die Session verlässt, fügen
Sie den Benutzer, der sich am längsten in der Warteschlange
befindet, der Session hinzu.
Collaborations
Äußert ein Benutzer den Wunsch einer kollaborativen Session beizutreten, prüft das System zunächst ob die maximale Teilnehmerzahl der
Session erreicht ist. Trifft dies zu, wird der Beitritt zur Session unterbrochen und der Benutzer in eine Warteschlange gestellt. Anschließend
wird dem Client des Benutzers, eine Nachricht gesendet, dass er sich
in einer Warteschlange für den Beitritt zu der Session befindet. Der
Benutzer wird automatisch in die Session aufgenommen, wenn alle
Benutzer, die sich vor ihm in Warteschlange befinden, den Zutritt zur
Session erhalten haben und ein weiterer Benutzer die Session verlässt.
Rationale
Wenn sich Benutzer zu einer kollaborativen Session anmelden, möchten
Sie in der Regel unmittelbar mit ihrer Aktivität beginnen. Wiederholt
ergebnislose Versuche zur Anmeldung aufgrund einer überfüllten Session, führen hingegen zur Frustration bei dem Benutzer. Eine Warteschlange gibt ihm das Gefühl gegenüber anderen wartenden Benutzern
eine faire Chance zu bekommen, der Session beizutreten. Außerdem
muss er nicht wiederholt dieselben Aktionen ausführen und kann so
lange er in der Warteschlange ist, andere Dinge erledigen.
Check
Wenn Sie dieses Entwurfsmuster anwenden, sollten sie folgende Fragen beantworten:
– Ist es sinnvoll die Waiting Queue beliebig groß werden zu lassen?
– Gibt es eine Möglichkeit die Dauer bis zum Beitritt in die Session
zuverlässig hochzurechnen?
Danger Spots
Abhängig von der Fluktuation der Benutzer kann eventuell viel Zeit
vergehen, bis der Benutzer von der Waiting Queue in die kollaborative
Session wechseln kann. Darüber hinaus besteht die Möglichkeit, dass
der Benutzer generell nicht auf den Beitritt warten möchte. Geben
Sie deshalb dem Benutzer die Möglichkeit, die Waiting Queue zu
verlassen und den Beitritt abzubrechen.
Known Uses
World of Warcraft ist ein MMORPG, in dem mehrere 1000 Spieler in
einer synchronen kollaborativen Session spielen. Hin und wieder
kann es vorkommen, dass eine kollaborative Session ausgelastet
ist. Meldet sich dann ein Spieler im System an erhält er eine
Nachricht wie sie in Abbildung 5.11 zu sehen ist.
In der ersten Zeile wird der Grund angegeben, warum sich der
5. Neue Entwurfsmuster
82
Abbildung 5.11.: Waiting Loop in World of Warcraft.
Spieler in der Warteschlange befindet. Darauf folgt seine Position
innerhalb der Warteschlange. Zuletzt folgt eine Hochrechnung wie
lange der Spieler warten muss, bis er der Session beitreten kann.
4 4 4
Related Patterns Collaborative Session: Das Entwurfsmuster Waiting Queue
wird dazu verwendet, den Beitritt zu einer Collaborative Session zu koordinieren.
5. Neue Entwurfsmuster
83
5.8. Known Uses in seriösen Anwendungen
Trotzdem die Beschreibung der gefundenen Entwurfsmuster ausreicht, um sie auch in
seriösen Anwendungen zu verwenden, fehlt uns für den Beweis des in Abschnitt 2.4
hergeleiteten Monomorphismus letztendlich noch die Known Uses der Entwurfsmuster in
seriösen Anwendungen. Dies soll nun beispielhaft für einige Entwurfsmuster nachgeholt
werden.
Automatic Software Update hat mit dem Windows Update [Mic06] der aktuellen Betriebssystemversionen von Microsoft einen besonders prominenten Known Use.
Bekannt ist dieser Known Use vor allem deswegen, weil er dazu verwendet wird, Updates
zu installieren, die kritische Sicherheitslücken der Windows Betriebssysteme schließen
sollen. Außerdem lässt sich damit auch die Aktualisierung der Betriebssystemversion
durchführen. Allerdings ist das Window Update nicht mit dem gleichen Zwang verbunden, wie es in den genannten Spielen der Fall ist. Viel mehr hat der Anwender die
Möglichkeit die Funktion das Windows Updates innerhalb eines vorgegebenen Rahmens
zu konfigurieren (siehe Abbildung 5.12). Auf Wunsch lässt es sich auch komplett deaktivieren.
Abbildung 5.12.: Konfiguration des Microsoft Windows Update.
5. Neue Entwurfsmuster
84
Weitere Known Uses von Automatic Software Update findet man in dem WebClient Firefox [Moz02] und in dem Email-Client Thunderbird [Moz05]. Beide bieten
ebenfalls eine Konfiguration des implementierten Entwurfsmusters an (siehe Abbildung
5.13 und 5.14).
Abbildung 5.13.: Konfiguration von Automatic Software Update in Firefox.
Für das Entwurfsmuster Name Generator findet man in der Internetauktionsplattform Ebay [eBa06] einen Known Use. Ebay bietet diesen Service seinen Benutzer bei der
Registierung an. Dort kann der Benutzer überprüfen lassen, ob sein gewünschter Name
vergeben ist. In diesem Fall bietet Ebay dem Benutzer eine Reihe alternativer Namen
an (siehe Abbildung 5.15).
Für das Entwurfsmuster Waiting Queue findet man einen Known Use auf dem
Internet-Portal von IGN Entertainment [IGN06]. Das Portal bietet Informationen rund
um das Thema Computerspiele an. Daneben können auch die Demoversionen der neuesten Spiele heruntergeladen werden. Sind bereits alle Download-Slots einer Demo in
Benutzung, wird man in eine Warteschlange aufgenommen. Gleichzeitig wird angezeigt,
an welcher Position man sich innerhalb der Warteschlange aktuell befindet und eine
Hochrechnung der Zeit bis zum Start des Downloads vergehen wird.
5.9. Zusammenfassung
An den aufgeführten Entwurfsmustern zeigt sich, dass Mehrbenutzerspiele durchaus Orte
sind, an dem es sich lohnt nach Entwurfsmustern zu graben.
Die genannten Known Uses aus den seriösen Anwendungen bestätigen die Annahme,
dass ein Monomorphismus zwischen der Pattern Language PLT (die Menge der hier
ausgegrabenen Entwurfsmuster) und den beiden Pattern Languages P4CMI und PIGD
besteht.
Bedenkt man nun, dass die ausgegrabenen Entwurfsmuster ausschließlich aus der Ana-
5. Neue Entwurfsmuster
85
Abbildung 5.14.: Konfiguration von Automatic Software Update in Thunderbird.
lyse der Benutzerschnittstelle gewonnen wurden, die Quelltexte aufgrund der genannten
Mängel für das Ausgraben nicht geeignet sind, weil es dort schon schwierig genug war,
allein bekannte Entwurfsmuster zu identifizieren, und es noch eine handvoll weitere Methoden gibt Entwurfsmuster auszugraben, die hier gar nicht zur Anwendung kommen
konnten, dann wird einem deutlich, welches Potenzial bei der Ausgrabung von neuen
Entwurfsmuster in Computerspielen steckt.
5. Neue Entwurfsmuster
86
Abbildung 5.15.: Realisierung von Name Generator in der Internetauktionsplattform
Ebay.
Abbildung 5.16.: Waiting Queue in einem Portal für Computerspiele.
5. Neue Entwurfsmuster
87
6. Zusammenfassung
Diese Arbeit sollte zeigen, dass es Gemeinsamkeiten zwischen seriösen Anwendungen
und Computerspielen gibt. Der Beweis dieser Theorie sollte dadurch erfolgen, dass man
Entwurfsmuster findet, die in beiden Bereichen anwendbar sind.
Zunächst wurden die zwei Pattern Languages P4CMI und PIGD miteinander verglichen. Dabei stellte sich heraus, dass mindestens zwischen einem Entwurfsmuster aus
jeder der beiden Pattern Languages ein Isomorphismus besteht.
Dann wurde dazu übergangen, Known Uses von Entwurfsmustern aus P4CMI in einer
Reihe von Mehrbenutzerspielen anhand der Benutzerschnittstelle zu identifizieren. Auch
hier gab es ein positives Ergebnis. Es konnte eine signifikante Anzahl an Entwurfsmustern in Mehrbenutzerspielen entdeckt werden. Das Gleiche wurde dann noch einmal
mit Quelltexten von Mehrbenutzerspielen durchgeführt, und erneut bestätigte sich die
Annahme, dass es Gemeinsamkeiten gibt. In beiden Fällen konnten darüber hinaus auch
starke Beziehungen bezüglich der gemeinsamen Entwurfsmuster festgestellt werden.
Schließlich wurde eine handvoll neuer Entwurfsmuster vorgestellt, die während der
Analyse in den Mehrbenutzerspielen ausgegraben wurden, und für die auch Known Uses
in seriösen Anwendungen existieren.
Die Ergebnisse sind doch sehr deutlich und zeigen, dass es Gemeinsamkeiten gibt, und
dass es sich für die Entwickler von seriösen Anwendungen lohnen kann, in Mehrbenutzerspielen nach Entwurfsmuster zu suchen. Umgekehrt gilt natürlich das Gleiche für die
Entwickler von Mehrbenutzerspielen.
In dieser Arbeit wurde lediglich eine Methode zur Ausgrabung von Entwurfsmustern
in Mehrbenutzerspielen angewendet. Wie wir gesehen haben, existieren aber noch eine Reihe anderer Methoden. Zum Beispiel würde es sich anbieten, die Spielentwickler
zu interviewen oder gleich ein Pattern Mining Workshop mit den Spielentwicklern zu
organisieren.
Außerdem konnte ein Großteil der Entwurfsmuster von P4CMI nicht in den Mehrbenutzerspielen identifiziert werden. Hier wäre zum Beispiel eine Prüfung der Anwendbarkeit in den Mehrbenutzerspielen sinnvoll.
Letztlich zeigen die Ergebnisse dieser Arbeit, dass es für die Entwickler beider Welten
sinnvoll ist, nach den Lösungsmöglichkeiten für Probleme in dem jeweils anderen Bereich
zu suchen.
Literaturverzeichnis
[Ale77]
Alexander, C.: A pattern language. Oxford University Press, 1977
[Ale79]
Alexander, C.: The timeless way of building. Oxford University Press, 1979
[Are05]
ArenaNet: Guild Wars. 2005. – http://de.guildwars.com/
[Ato06a] Atomic Blue Corporation: Planeshift. 2006. – http://www.planeshift.it
[Ato06b] Atomic Blue Corporation: Planeshift. Quelltextversion vom 04.05.2006.
– http://planeshift.cvs.sourceforge.net/planeshift/planeshift/
[Bjö04]
Björk, Staffan: Patterns in Game Design. Charles River Media, 2004
[Bli06]
Blizzard Entertainment: World of Warcraft. (europäische Server) 2006. –
http://www.wow-europe.com/de/
[Cop92] Coplien, James O.: Advance C++ programming styles and idioms. Reading,
MA : Addison-Wesley, 1992
[Cor98]
Corfman, Russel: An overview of Patterns, Cambridge University Press, 1998,
S. 19–29
[DeL98] DeLano, David E.: Patterns Mining, Cambridge University Press, 1998, S.
87–95
[Die06]
Die Welt: Computerspiele-Branche entdeckt die Alten als Zielgruppe. 2006.
– http://www.welt.de/data/2006/08/24/1008151.html
[eBa06]
eBay: eBay. 2006. – http://www.ebay.de
[Epi04]
Epic:
Unreal
Tournament
2004.
http://www.unrealtournament.com/ut2004/index.html
[Fry06]
Frysch, Stephan: Patterns in CSCL Systems. 2006
2004.
–
[Fun01] Funcom: Anarchy Online. 2001. – http://www.anarchy-online.com/
[GHJV97] Gamma, Erich ; Helm, Richard ; Johnson, Ralph ; Vlissides, John: Entwurfsmuster : Elemente wiederverwendbarer objektorientierter Software. Bonn
: Addison-Wesley, 1997
[Gra04] Gravity Corp:
Ragnarok Online.
http://www.euro-ro.net/
(europäische Server) 2004. –
[Id 99a] Id
Software:
Quake
3
Arena.
http://www.idsoftware.com/games/quake/quake3-arena
1999.
–
[Id 99b] Id
Software:
Quake
3
Arena.
ftp://ftp.idsoftware.com/idstuff/source/quake3-1.32b-source.zip
1999.
–
[IGN06] IGN Entertainment: 3DGamers. 2006. – http://www.3dgamers.com/
[KLXH04] Knutsson, B. ; Lu, H. ; Xu, W. ; Hopkins, B. Peer-to-peer support for
massively multiplayer games. 2004
[Koc04] Koch Media:
Carcassonne.
online.de/index2.shtml
[Mic06]
2004. –
http://www.carcassonne-
Microsoft: Windows Update. 2006. – http://update.microsoft.com
[Min03] Mindark: Entropia Universe. 2003. – http://www.project-entropia.com/
[Moz02] Mozilla Foundation:
Firefox.
europe.org/de/products/firefox/
2002. –
[Moz05] Mozilla Foundation:
Thunderbird.
europe.org/de/products/thunderbird/
2005. –
http://www.mozillahttp://www.mozilla-
[Rau05] von Rauchhaupt, Jens: Die Werbung der Zukunft ist embedded“. 2005. –
”
http://www.adzine.de/1.html
[Rik06a] Riker, Tim: BZFlag. 2006. – http://www.bzflag.org/
[Rik06b] Riker, Tim: BZFlag. 2006. – http://prdownloads.sourceforge.net/bzflag/bzflag2.0.6-20060409.zip?download
[SLht]
Schümmer, T. ; Lukosch, S.: Patterns for computer mediated interaction.
Wiley, noch nicht veröffentlicht
[Son03]
Sony Online Entertainment:
Star Wars Galaxies.
http://starwarsgalaxies.station.sony.com/
[Son04]
Sony Online Entertainment:
http://everquest2.station.sony.com/
[Tur06]
Turbine Games: Dungeon & Dragons Online. 2006. – http://ddo.com
[Ubi03]
Ubi Soft: Scrabble. 2003. – http://www.ubi.com/DE/Games/Info.aspx?pId=966
[Val05]
Valve:
Counter
Strike
Source.
2005.
–
http://storefront.steampowered.com/v2/index.php?area=game&AppId=240
Everquest
2.
2003. –
2004.
–
[ZNR00] Zagal, J. ; Nussbaum, M. ; Rosas, R. A Model to Support the Design of
MultiPlayer Games. 2000
Literaturverzeichnis
90
A. Liste der Entwurfsmuster aus P4CMI
Die Namen und Ziele der hier aufgeführten Entwurfsmuster sind wortwörtlich aus einer
nicht finalen Version von [SLht] zitiert. Der Namen befindet sich auf der linken Seite und
rechts davon das Ziel bzw. der Zweck. Entwurfsmuster, bei denen weder ein Problemnoch Solution-Element bestand, wurden weggelassen.
Abbreviation
Reduce the effort involved in written communication by
using short forms for common phrases.
Active Map
Shows a graphical and scaled representation of the space and
enrich this with awareness information.
Active Neighbors
Visualize activities not only on the local user’s current artifact, but also on related artifacts.
Activity Counter
Show how many users interact with a specific unit of
information.
Activity Status Bar
Provide an explanation about other user’s activities while
not yet showing the activity’s intermediate result.
Ask the Author
Support readers in clarifying the author’s intention.
Attention Screen
Define, who and what may take the user’s attention.
Authoritative
stance
In-
Allow expert users to act as an authoritative instance and
rate information in the collaboration space.
Availability Status
Indicate to what extent you may be interrupted.
Awareness Proxy
Hook into a client server system to monitor and display awareness information.
Away Message
Inform an active user that a reply to his request will be
delayed.
Believe
Group
in
Your
Change data optimistically and undo the operations if users
performed conflicting changes.
Bell
Inform participants of a session that a user would like to join
the group.
Birds of a Feather
Find the users who have most in common with the requesting user.
Buddy List
Show only selected known users.
Centralized Objects
Allow users to access data objects remotely.
Change Warning
Indicate that the version used by the local user has been
changed by another user.
Collaborative Session
Allow users
collaboration.
Daily Report
Inform the user about changes on relevant artifacts in a user
defined frequency (e.g., once a day).
Detect A Conflicting
Change
Distributed
Command
Don’t Trust Your
Friends
Detect conflicting changes.
Door
Suggest navigation paths and enforce spatial distribution.
Ease to say Goodbye
Make it easy for a user to leave a group.
Elephant’s Brain
Store information on the users’ activities in a log to allow
the users to understand (other) users’ activities and the artifacts’ evolution.
Embedded Chat
Allow users to communicate synchronously with low technology support.
Emote
Let users express personal feelings.
to
plan
and
coordinate
synchronous
Keep all replicas of shared object consistent.
Allow only one user at a time to change a specific part of
the shared state.
A. Liste der Entwurfsmuster aus P4CMI
92
External Awareness
View
Provide an external awareness information in case that the
visualization of the application cannot (or should not) be
changed.
FAQ
Reduce noise produced by repeated questions.
Feed Facts
Stimulate discussions by adding facts.
Find the Guru
Contact the user who is most likely able to help with a specific artifact.
Flag
Use a flag to recognize important content.
Floor Control
Provide one user with the floor for a set of shared objects
so that he can manipulate the objects while other users are
not allowed to manipulate the objects.
Forum
Provide means
communication.
Hall of Fame
Honor the most helpful participants in the system by showing them in a Hall of Fame.
Hello Hello
List new members of a group or community at a prominent
place and introduce them to other members.
Gaze
Over
Shoulder
Group Award
the
for
persistent
asynchronous
group
Detect the users’ interaction with shared artifacts.
Honor all group members for a result achieved by the group.
Guess What I Need
Reduce network communication costs and response time by
replicating only selected shared objects.
Immutable Versions
Store different versions as a version tree that allows only
additive changes and therefore provides a maximum of concurrent changes.
In-Place Awareness
View
Show the awareness information in a close proximity to the
related artifact to ease the process of connecting awareness information with the semantic context of the referred
artifact.
A. Liste der Entwurfsmuster aus P4CMI
93
Intelligent Human
Distinguish between automated responses and a real user by
sending him an intellectual challenge.
Interaction Directory
Interactive User Info
List potential interaction contexts.
Interest Agent
Collect relevant group activities for an absent user.
Intimacy Gradient
Structure interaction between people in a way that they can
distinguish between close and loose interaction.
Invitation
Allow users to plan interaction with other users.
Leave Me Alone
Let the user manipulate data without being locally disturbed
by other users who might want to change the same data.
Letter of
mendation
Let the users rate other users regarding their reliability or
expertise.
Recom-
Make the information about other users clickable and
connect it with means for communication and collaboration.
Local Awareness
Provide awareness information in the context of the artifact,
which is in the local user’s focus.
Lock and Key
Provide access to an object or place only if the user can
present a matching key or answering a specific question.
Login
Let users identify themselves before they can use an
application.
Lovely Bags
Use bags for storing shared objects in a container because
they provide the best concurrency behavior.
Mailing List
Provide means for discussion in a geographically distributed
group.
Masquerade
Control how much private information you reveal to other
users when interacting in a collaborative environment.
Mediated Updates
Minimize the administrative load for updates by using a
central instance that dispatches the updates.
A. Liste der Entwurfsmuster aus P4CMI
94
Mentor
Pair a novice with an experienced member to ease the novice’s integration.
Moderator
Raise the quality of a discussion.
More
Words
than
Multiple
ties
1000
Share graphical content during communication to foster mutual understanding.
Personali-
Allow users to interact with the system even though they
technically look different.
Navigation
Provide mechanisms for moving around in the virtual
environment.
Neighborhood
Watch
Pay Back
Regulate the community using member feedback.
Persistent Session
Make results achieved in a collaborative session available for
re- viewing or resuming collaborative activities.
Personalized Attributes
Presence Indicator
Store different state for each user in a shared object’s state.
Quick Registration
Make it as easy as possible for a user to join a community.
Reciprocity
Ensure that the users benefit, if they contribute to the system. Let the benefit grow, when the user contributes more.
Red Card
Allow users to remove another user from the community.
Remember to Forget
Do not consider activities from the Elephant’s brain, that
are no longer relevant to the users.
Remote Selection
Let remote users know what the local user has selected.
Remote
on
Let the server notify clients about state changes of shared
data.
Reimburse the users’ services in the community by means of
a virtual currency.
Subscripti-
Indicate that remote users look at an artifact, which is visible
on the local user’s screen.
A. Liste der Entwurfsmuster aus P4CMI
95
Remote Viewport
Provide information to a user in a shared space about the
part of the space that is seen by other users.
Replicate for Freedom
Replicate for Speed
Provide wire- and waveless data access.
Role Reversal
Swap the roles between client and server in a client server
interaction.
Room
Provide the group with a place, where they can meet for
collaboration.
Semantic Net
Use a semantic net, which contains all artifacts and the relations between artifacts to make semantic relations explicit.
Shared Annotation
Provide means for sharing comments for a specific content.
Shared Folder
Allow users to organize their shared data.
Spontaneous
boration
Colla-
Allow users to access data objects without network delay.
Support users to collaborate based on the awareness of other
users.
Team Narrative
Allows users to attach their comments to artifacts.
Telecursor
Allow remote gestures and let remote users know where local
users are working on.
Timeline
Visualize who has been active at a specific point in time.
Threaded
ons
Train the
mender
Discussi-
Recom-
Structure contributions to a discussion in an interaction
space in threads.
Improve recommendations
information.
by
rating
the
proposed
Transform a Conflicting Change
Do not execute a change in the same way as it was performed
by the initiating user but in a way that reflects the replaying
user’s current system state.
Travel Together
Explore an information space together with a team mate.
A. Liste der Entwurfsmuster aus P4CMI
96
Translator
Automatically translate messages to ease multi-lingual
communi- cation.
Unit of Work
Keep track of all changes during a user’s transaction so that
the changes can be replayed and undone by other clients.
Update Your Friends
Distribute local state changes to the other users to achieve
consistency.
User Gallery
Show who is using a collaborative application.
User List
Show who is currently participating in a session.
Virtual Me
Create a virtual representation of the users’ self that is seen
by other users before and during interaction.
Vote
Quickly test the group’s mood with respect to a specific
question.
What Has Happened
Here?
Replay how the current state of a Collaborative Session
has evolved to update latecomers.
What’s up?
Integrate latecomers in already started interaction.
Who am I
Help a user to understand with which account he is currently
connected to a collaborative system.
Who’s Listening
Show, who received information produced by local user.
Who’s that Girl
Associate a user with messages in your groupware system.
A. Liste der Entwurfsmuster aus P4CMI
97