Bachelorthesis als PDF

Transcription

Bachelorthesis als PDF
Konzeption eines virtuellen Haustieres
für ein touch-fähiges Handy
und Umsetzung der Schwerpunkte.
Bachelorthesis
an der Fakultät für Gestaltung
der Hochschule Augsburg
Erstgutachter: Prof. KP Ludwig John
Zweitgutachter: Erich Seifert
vorgelegt von
Melanie Schmidt
Augsburg, 10.02.2010
Danksagung
Hiermit möchte ich folgenden Personen für die Unterstützung während meiner Arbeit danken:
Prof. KP Ludwig John - für die sehr gute Betreuung während meines Projektes
und die Bereitstellung eines Testhandys
Erich Seifert - für die Betreuung und kompetente Hilfestellung bei Fragen der Programmierung
Manuel Weiss - für die große Unterstützung bei der 3D-Modellierung und Animation
Abstrakt
Einen Drachen streicheln? Und das auf einem Handy?
Das Ziel der Bachelorarbeit ist es, ein virtuelles Haustier in moderner 3D-Grafik für ein Handy
mit Touch-Oberfläche zu entwickeln.
Entwicklungsumgebung:
JavaME und dessen Mobile 3D Graphics API (m3g, JSR-184) sowie LCDUI und LWUIT.
Entwickelt unter Windows Vista mit Eclipse SDK Version: 3.5.0 und dem Wireless Toolkit
2.5.2_01 für CLDC
1. Motivation
2. Vorwort
2.1. Definition des Themas
2.2. Eingrenzung des Themas
2.3. Aufbau der Arbeit
3. Konzept von LittleLegends
4. Recherche
4.1. Definition eines virtuellen Haustieres
4.2. Bekannte Spiele mit virtuellen Haustieren
5. Implementierung eines Prototypen
5.1. Design
5.1.1. Methoden
5.1.2. Konzept des Sets und der GUI
5.1.3. GUI
5.1.4. Charakterentwicklung
5.1.5. 3d-Modellierung von Charakter, Set und Objekten
5.1.6. Animation
5.1.7. H3t-Exporter
5.1.8. M3g-Converter
5.2. Programmierung
5.2.1. Recherche und Vergleich von Methoden
5.2.2. Die M3G-API
5.2.3. KI und Datensicherung
5.2.4. Konzept der Klassen und Methoden
5.2.5. UseCase
5.2.6. UML
6. Ergebnis
7. Bewertung
8. Ausblick
9. Glossar
10. Quellenangaben
1
2
2
2
2
3
7
7
9
11
11
11
12
13
16
17
19
20
22
23
23
25
31
32
37
39
42
42
43
44
47
1
1.
Motivation
Seit Snake 1998 vorinstalliert als erstes embedded Handyspiel auf dem Markt kam, hat sich in
der mobilen Spielebranche einiges getan. Mit der Verbreitung von JavaME (Java Micro Edition),
welches speziell auf die geringen Ressourcen von mobilePhones und PDAs zugeschnitten ist,
entstanden kleine, downloadbare Programme, sogenannte MIDlets. 2002 kamen die ersten
Spiele zum Herunterladen und es entstand ein neuer Industriezweig. Neben professionellen
Agenturen konnten auch Privatpersonen mit Java-Kenntnissen eigene Spiele programmieren
und auf ihrem Handy installieren oder der Öffentlichkeit zugänglich machen.
Neben den klassischen 2D-Spielen wie Tetris oder Asteroids, von denen mindestens eines auf
jedem Handy vorinstalliert mit ausgeliefert wird, finden immer mehr aufwendige 3D-Spiele Verbreitung. Von der Adaptierung von Konsolen- und PC-Spielen bis hin zu ganz neuen Spielen, die
die Möglichkeiten eines aktuellen Handys, wie Sensorentechnik und Touchscreen, ausnützen.
Durch die stetig wachsende Leistungsfähigkeit der Handys werden immer aufwendigere und
optisch eindrucksvollere Spieleproduktionen möglich.
Mit diesem Thema beschäftige ich mich in meiner Bachelorarbeit. Die Arbeit stellt die Frage, in
wie weit schon 3D auf aktuellen Handys möglich ist. Weiter möchte ich wissen, wie ein JavaMe
Spiel 3D-Dateien einbinden kann und wie ich aktuelle Interfaces wie den Touchscreen dazu
nutzen kann.
Dieses Thema habe ich mir ausgesucht, weil ich mich auf Java-Programmierung spezialisiert
habe. Durch weitere Semesterprojekte an der FH Augsburg habe ich bereits Einblick in die
mobile Java-Programmierung erhalten und dies hat bei mir großes Interesse geweckt. Genauso
gerne beschäftige ich mich mit der 3D-Modellierung. Nun lag es nahe, meine beiden Interessensgebiete miteinander zu verbinden und ein aktuelles wie auch zukunftsträchtiges Projekt
daraus zu entwickeln.
2
2. Vorwort
2.1.
Definition des Themas
In meiner Bachelorarbeit möchte ich ein Spiel entwickeln, in dem es um ein virtuelles Haustier
geht, dass der User pflegen muss. Wie bei den oben recherchierten, bereits existierenden
Spielen, soll es auch meinem Spiel darum gehen, das Haustier zu füttern, waschen und pflegen.
Bei guter Pflege und Befriedung aller Bedürfnisse soll sich das Wesen, wie bei dem Spiel Tamagotchi,
zu einer höheren Form entwickeln.
Dieses Simulationsspiel möchte ich für ein Handy mit Touchscreen entwickeln, um diese
Möglichkeit der Interaktion zu nutzen. Z.B. soll der User sein Haustier direkt auf dem Bildschirm
streicheln können.
Die verwendete Methode für das Design des Haustieres soll 3D sein. Die Einbindung von 3D in
die Handyumgebung ist freigestellt. Aufgrund Erfahrungen im Bereich JavaME werde ich diese
Programmiersprachen verwenden.
2.2.
Eingrenzung des Themas
Das Thema meiner Bachelorarbeit beinhaltet die Erstellung des Konzeptes für dieses Spiel mit
dem virtuellen Haustier. Das Konzept soll vollständig und abgeschlossen sein.
Zusätzlich erstelle ich einen Prototypen, der ausgewählte Aktions- und Interaktionsmöglichkeiten
besitzt. Für den Prototypen entwickel ich ein virtuelles Haustier ohne Entwicklungsstufen sowie
zwei verschiedene Szenerien mit Objekten. Diese Szenerien sollen in JavaME eingebunden und
mit dem 3D-Haustier interagiert werden. Folgende Interaktionsmöglichleiten sollen möglich
sein: Füttern, Waschen, Streicheln. Desweiteren soll eine Attributabfrage ermöglicht und eine
grafische Oberfläche erstellt werden um das Spiel zu steuern und mit dem Wesen zu interagieren.
2.3.
Aufbau der Arbeit
Als erstes gehe ich in dieser Dokumentation auf die Recherche für das Bachelorprojekt ein. Ich
zeige auf, was es bereits an ähnlicher Software oder Applikationen auf dem Markt gibt. Danach
werde ich den Begriff virtuelles Haustier definieren, da dies der Kernbegriff meiner Arbeit ist.
Im Abschnitt vier dieser Dokumentation erläutere ich das Konzept von LittleLegends. LittleLegends ist der Name des Spiels, welches ich im Rahmen der Bachelorarbeit entwickelt habe und
von dem ich ein Prototyp realisierte.
Im darauffolgenden Abschnitt gehe ich genauer auf die Implementierung des Prototypen ein.
Zuerst erkläre ich die Entscheidungen und Methoden im Bereich Design wie Charakterentwicklung und Modellierung, sowie Entwurf einer Userinterfaces. Dabei gehe ich auch auf das verwendete Format und die benutzen Exporter und Konverter ein.
Danach erläutere ich die technische Seite der Arbeit. Ich gehe dabei auf die verwendete API ein
und Vergleiche Methoden, die für das Projekt in Frage kämen. Danach erkläre ich genauer die
Implementierung der verschiedenen Aktionen und im Konzept definierte Eigenschaften sowie
veranschauliche die verwendeten Methoden und Klassen.
Im Anschluss fasse ich meine Ergebnisse kurz Zusammen und bewerte diese hinsichtlich
gewählter Methode und daraus resultierender Effizienz und Qualität inhaltlicher und perfomanter Kriterien der Applikation.
3
3.
Konzept von LittleLegends
Grundbedürfnisse
Alle lebenden Wesen haben Grundbedürfnisse. Bei Vernachlässigung dieser Bedürfnisse
werden sie krank oder sterben nach einiger Zeit. Bei LittleLegends soll durch Grundbedürfnisse,
die der User zu beachten hat, ein lebendes Wesen simuliert werden. Ignoriert er diese oder
beachtet diese nicht ausreichend hat das Auswirkungen auf die Attribute des Wesens.
Hunger/Durst
Hunger ist ein essentielles Grundbedürfnis. Schon im ursprünglichen Tamagotchi-Spiel wurde
auf das Füttern sehr viel Wert gelegt. Jedoch war es in diesem sehr unrealistisch, da man das
Wesen im Durchschnitt alle 10 Minuten füttern muss. In LittleLegends soll dies in realistischer
Weise geschehen. Nahrung sollte dreimal am Tag gegeben werden und zwischendurch einige
Snacks.
Schlaf
Der Schlaf ist neben Nahrungsaufnahme das wichtigste für lebende Wesen. Auch in LittleLegends sollen die Wesen ausreichen Schlaf bekommen. Um den User aber für die Nacht zu entlasten wird die Schlafphase länger ausfallen als Lebewesen normal brauchen.
Toilette/Waschen
Stubenreinheit ist für Besitzer von realen Haustieren ein wichtiges Kriterium. Auch in LittleLegends, in dem die Wesen als Haustiere fungieren und in einer wohnlichen Umgebung leben,
sollen die User ihrem Tier Sauberkeit beibringen.
Lernen
Als Fabeltiere sind die Wesen in LittleLegends wesentlich klüger als normale Haustiere. Somit
können sie mehr lernen als das „Stöckchen holen“ beim Hund. Aber damit sie sich nicht langweilen müssen sie kontinuierlich beim Lernen unterstütz werden. Dies beeinflusst ebenfalls das
Attribut Gehorsam. Mit seinem Wesen zu lernen ist eine gute Möglichkeit ihn zu erziehen.
Spieltrieb
Besonders junge Wesen, ob menschliche Kinder oder Hundewelpen, haben einen gesunden
Spieltrieb. Es sollte dem Wesen auch die Möglichkeit geben werden diesen auszuleben, indem
der User sich selber mit ihm beschäftigt oder ihm Spielzeug gibt.
4
Eigenschaften
vom User beeinflussbare:
- Faulheit
- Gewicht
- Lernbereitschaft
vom User nicht beeinflussbare:
- Faul
- Verspielt
- Klug
Attribute:
- Aufmerksamkeit
- Hunger
- Durst
- Müdigkeit
- Stimmung
- Sauberkeit
- Spieltrieb
- Gehorsam
- Gesundheit
- Harndrang
- Zuneigung
5
Veränderung der Attribute:
Essen
Schlafen
Toilette
Waschen
Lernen
Spielen
→ Stimmung+, Hunger -, Sättigung-, Harndrang+
→ Müdigkeit-, Stimmung+, Hunger+
→ Harndrang-, Stimmung+, Reinlichkeit+
→ Reinlichkeit+, Stimmung+, Gesundheit+, Zuneigung+
→ Müdigkeit+, Gehorsam+, Lernbereitschaft-, Spieltrieb+
→ Spieltrieb-, Stimmung+, Gesundheit+, Gesundheit+, Lernbereitschaft+, Zuneigung+
Bei Vernachlässigung oder Übertreibung der Grundbedürfnisse:
Überfütterung
→ Gesundheit-, Gewicht+, Hunger+, Müdigkeit+, Sättigung+, Faulheit+
Unterfütterung
→ Gesundheit-, Gewicht-, Hunger+, Gehorsam-, Lernbereitschaft-,
Sättigung+, Stimmung-, ZuneigungSchlafmangel
→ Gesundheit-, Hunger-, Stimmung-, ZuneigungZu viel Schlaf
→ Gewicht+, Faulheit+, Gehorsamkeine Toilette
→ Sauberkeit-, Gehorsam-, Stimmung-, Zuneigungzu wenig waschen → Sauberkeit-, Gesundheit-, Stimmung-, Zuneigungzu viel waschen → Stimmungzu wenig Lernern → Gehorsamzu viel lernen
→ Stimmung-, Lernbereitschaft-, Zuneigung-, Spieltrieb+
zu wenig spielen → Stimmung-, Gewicht+, Zuneigung-, Lernbereitschaftzu viel spielen
→ Stimmung+, Gehorsam-, Lernbereitschaft+
zu wenig
Aufmerksamkeit → Gehorsam-, Stimmung-, Faulehit+
6
zeitliche Auswirkungen auf die Attribute
Die zeitliche Komponente hat wesentliche Auswirkungen auf die Attribute des Wesens. Essentielle Attribute wie Sättigung, Hunger und Harndrang verändern sich schneller als nicht lebenswichtige Attribute wie Lernbereitschaft und Spieltrieb. Allerdings verändern sich Attribute auf
die viel Einfluss genommen werden kann durch verschiedene Aktionen wie z.B. die Stimmung
verändert sich ebenfalls sehr schnell.
Bei Vernachlässigung der Bedürfnisse werden Minuspunkte gegeben. Diese werden stündlich
aktualisiert.
Ein Tag des virtuellen Haustieres entspricht einem 24 Stunden Tag.
Lebensdauer und Entwicklung
Das virtuelle Haustier lebt 30 Tage.
Tag 1: (Stunde 0-2): Ei
Tag 1: (Stunde 2) :Baby
Tag 5: Erwachsener
Tag 20: Greis
Nach 30 Tagen ist das Spiel zu Ende. Das Haustier stirbt nicht wie bei dem ursprünglichen
Tamagotchi, sondern der User entlässt es in die Freiheit wo es nun alleine weiterlebt und für sich
selbst sorgen kann.
Bein Vernachlässigung wird das Haustier krank und kann früher sterben. Dies wird durch die
Anzahl der Minuspunkte ermittelt. Ebenfalls kann sich die Entwicklung bei schlechter Pflege
verzögern.
7
4.
Recherche
4.1.
Definition eines virtuellen Haustieres
Ein virtuelles Haustier, auch digitales Haustier genannt, ist ein künstliches für Menschen geschaffenes, unechtes Haustier. Manche Menschen haben lieber ein virtuelles Haustier anstatt
eines echt Haustieres. Diese Haustiere haben keine physikalische Form, sondern sind abhängig
von der Hardware, auf der sie laufen und der Software, mit der sie programmiert sind. Virtuelle
Haustiere sind meist in Spielen enthalten. Diese Spiele haben jedoch kein bestimmtes Ziel. Der
User muss versuchen durch Pflege und Interaktion mit dem künstlichen Wesen dieses solange
wie möglich am Leben zu erhalten und oft diesem helfen, sich zu einer höheren Form weiter zu
entwickeln. Die Interaktionsmöglichkeiten sind beschränkt und vorgegeben, wie z.B. es füttern,
mit ihm spielen oder waschen. Die Spiele benutzen visuelle Effekte oder eine beschränkte künstliche Intelligenz um den Anschein zu erwecken, dass das Tier lebendig ist und dem Nutzer das
Gefühl von Realität vermitteln. Dies wird durch einen gewissen Grad an Autonomie und unvorhersehbaren Aktionen unterstützt.1 Das verstärkt das Verantwortungsgefühl des Users für sein
virtuelles Haustier.
Virtuelle Haustiere können Simulationen von echten Tieren sein wie in dem Spiel Nintendogs2
oder Fantasiewesen wie in Tamagotchi3 . Die Wesen wollen Aufmerksamkeit und umsorgt
werden. Bei schlechter Pflege können sie krank werden oder manche sogar sterben. Allerdings
ist es danach immer möglich ein neues Spiel zu beginnen. Besonders Kinder können jedoch zu
solchen virtuellen Haustieren eine enge Beziehung aufbauen und möchten beim Tod der Wesen
diese nicht einfach ersetzten.
1
2
3
vgl. http://en.wikipedia.org/wiki/Virtual_pets
http://nintendogs.nintendo.de/
http://www.tamagotchi.de/, http://www.tamagotchi.com/
8
Es gibt drei verschiedene Arten von Software mit virtuellen Haustieren.
Geräte-basierende virtuelle Haustiere
Digitale Haustiere wie Tamagotchi oder Giga Pets auf unabhängigen kleinen Computern. Im Fall des Tamagotchis
wurde das Spiel in einem kleinen Ei-förmigen, transportablen
Gerät geliefert mit Knöpfen auf der Außenhülle, um mit dem
Haustier zu interagieren.
4
Web-basierende digitale Haustiere
Manche Internetseiten bieten kostenlos ein Spiel mit
einem virtuellen Haustier an. Der Benutzer muss sich lediglich registrieren. Diese Spiele enthalten manchmal auch
eine virtuelle Community, wie Neopia in Neopets1 oder
Marada in Marapets2 . In diesen Spielen kann man interne
Spielen spielen und damit virtuelles Geld verdienen um
Futter oder Gegenstände für das Haustier zu kaufen.
Manchmal kann man auch echtes Geld in Spielgeld umwandeln lassen um mehr virtuelles Geld zu Verfügung
zu haben oder besondere Items zu erstehen. In diesen
Communities kann der User auch selbst aktiv werden und
eigene Wesen erstellen.
3
Software-basierende virtuelle Haustiere
Virtuelle Haustiere in Computer- und
Videospielen sind meist eine Unterklasse
von Lebenssimmulationen. Der Computer
bietet durch höhere Rechenleistung und
Speichervermögen mehr Möglichkeiten für
qualitative visuelle Effekte und Interaktivität.
Haustiere auf dem PC können somit eine
höhere virtuelle Intelligenz und die Fähigkeit
zu lernen besitzen. 1
2
3
4
4
http://www.neopets.com/ [Stand 01.01.2010]
http://www.marapets.com/ [Stand 01.01.2010]
http://www.marapets.com/marapets.php [Stand 01.01.2010]
http://images.amazon.com/images/G/03/software/features/0DUIbeduerfnissegr.jpg [Stand 01.01.2010]
9
4.2.
Bekannte Spiele mit virtuellen Haustieren
Tamagotchi
„Das Tamagotchi (jap. [...], Wortschöpfung aus tamago (dt. „Ei“) und wotchi (von engl. watch, dt. „Uhr“))
ist ein aus Japan stammendes Elektronikspielzeug,
das in der zweiten Hälfte der 1990er Jahre weltweit
überaus populär war und im Jahr 2004 wieder neu
aufgelegt wurde.“1 Das ursprüngliche Tamagotchi
ist c.a. 4 cm breit und 6 cm hoch. Das darin digitale
Wesen ist ein Küken. Das Küken schlüpft bei seiner
Geburt aus einem Ei. Ab diesem Zeitpunkt muss der
Nutzer sich rund um die Uhr um dieses Wesen kümmern. Es pflegen, mit ihm spielen, es füttern, mit
ihm lernen, usw. Das Display der Original-Version
hat eine Auflösung von 32 x 16 Pixeln, weswegen das
Wesen darin oft nicht als Küken zu erkennen ist. Bei
Vernachlässigung kann es krank werden und sterben.
Es gibt jedoch eine Reset-Funktion mit der man ein
neues Spiel beginnen kann. Auf der Außenhülle sind
je nach Version drei bis neun Knöpfe angebracht,
mit Hilfe denen der User mit dem Tamagotchi-Küken
interagieren kann. Das Tamagotchi hat sich seit 1996
stetig weiterentwickelt. Neuere Modelle wie das
Tamagotchi Connexion, haben eine Infrarot-Schnittstelle, mit der sich zwei Küken besuchen können und
sogar miteinander Kindern bekommen können.
9
2
3
10
1
2
3
vgl. http://de.wikipedia.org/wiki/Tamagotchi [Stand 01.01.2010]
http://www.timboucher.com/journal/wp-content/uploads/2009/01/tamagotchi.jpg
http://www.ubergizmo.com/photos/2008/9/color-tamagotchi.jpg
10
IPuppy
IPuppy ist eine Applikation für das IPhone. Das Prinzip
ist dasselbe wie beim Tamagotchi, nur wurden hier die
Möglichkeiten des IPhone bezüglich Grafik, Speicher
und des Touch-Screens ausgenutzt. Als Haustier kann
man sie einen Hundewelpen von der Rasse Schnauzer1
, Husky2 oder Chihuahua3 (je nach gekaufter Version)
aussuchen. Es gibt unterschiede bezüglich Farbe und
Fell. Im Laufe des Spiels wächst der Welpe zu einem
größeren Hund heran.
Interaktionsmöglichkeiten, wie den Hund durch Berührung des Screens zu waschen sind neu. Ebenfalls kann
man mit seinem Hund spazieren gehen . Dabei findet
der Hund Gegenstände, die der User verkaufen kann
und dafür digitales Geld erhält, mit der er neue Gegenstände für den Hund wie besseres Shampoo, Spielzeug
oder ein Hundekörbchen kaufen kann.
15
15
4
5
Nintendogs
Nintendogs ist ein Spiel auf dem NintendoDS. Ebenso wie bei IPuppy besitz der
User einen oder auch mehrere Welpen um
die er sich kümmern muss. Mit dem Touchscreen des NintendoDS kann der User mit
dem Hund interagieren, es streicheln oder
kitzeln. Es gibt vier verschiedene Versionen,
die jeweils mit einem anderen Hund beginnen, z.B. ein Labrador oder Dalmatiner. 6
7
7
1
2
3
4
5
6
7
http://appshopper.com/games/ipuppy-schnauzer
http://appshopper.com/games/ipuppy-husky
http://appshopper.com/games/ipuppy-2
http://www.iphonediario.com/noticias/303315673screen.jpg
http://images.appshopper.com/screenshots/291/068226.jpg
Vgl. http://nintendogs.nintendo.de/
http://images.businessweek.com/ss/05/11/miyamoto/image/nintendogs.jpg
11
5.
Implementierung eines Prototypen
5.1.
Design
Als erstes möchte ich auf das Design von LittleLegends eingehen, angefangen von den ersten
Enwürfen auf Papier über die Modellierung in 3D bis hin zur Interfacegestaltung. Als erstes
werde ich die benutzen Methoden und Software aufzeigen. Danach erörtere ich das Konzept
des Designs und werde genauer auf das Menü des Prototypen sowie die Charakterentwicklung
von 2D in 3D eingehen. Als letzten Punkt dieses Abschnitts stelle ich die benutzen Softwaretools
zum Export und Konvertieren der 3d Modelle vor.
5.1.1. Methoden
Für die 3D-Modellierung und Animation benutze ich die Software 3ds Max 9. Um die 3D-Objekte
in JavaMe einzubinden verwende ich das Format m3g. Darauf werde ich später im Kapitel Programmierung weiter eingehen. 3ds Max kann das jedoch Format m3g nicht korrekt exportieren.
Deswegen habe ich als Alternative das M3G-Toolkit von Mascot Capsul1 benutzt, welches den
H3T-Exporter, einen M3G-Konverter und M3g Viewer enthält. Auf das Format h3t und den Exporter werde ich später noch genauer eingehen. Somit exportiere ich meine 3D-Szenen zuerst
in h3t um diesen dann mit dem Converter in m3g umzuwandeln.
1
http://www.mascotcapsule.com/toolkit/m3g/en/index.php
12
5.1.2. Konzept des Sets und der GUI
Das Set von LittleLegends sollte einfach, bunt aber trotzdem ansprechend sein, damit nicht nur
Kinder Spaß an dem Spiel haben, sondern auch Jugendliche und Erwachsene. Es entstand ein
farbliches Bild ähnlich von Playmobil-Welten. Eine Abstraktion von Elementen des Sets und des
Menüs hatte nicht nur ein einheitliches Bild zur Folge sondern auch eine Vereinfachung bei der
Erstellung der Elemente für die Welt, was in Anbetracht des kurzen Entwicklungszeitraum am
geeigneten schien. Ich werde in der Beschreibung des Designs dieser Arbeit nur auf im Prototypen realisierte Abschnitte des Konzepts von LittleLegends eingehen.
Das Set des Prototypen beinhaltet zwei Wohnräume. Einmal das Wohnzimmer, in dem sich
das Wesen hauptsächlich aufhält, isst und schläft. Zum anderen das Badezimmer, in dem das
Wesen gewaschen werden kann.
Immer sichtbar auf dem Bildschirm des Handys ist das grafische Userinterface (GUI). Die GUI
in Form einer blauen Leiste am unteren Rand des Screens enthält sechs verschiedene kleine
Grafiken. Diese Grafiken sind die Buttons, mit denen man mit dem Wesen und seiner Welt
interagieren kann. Mit diesen Buttons kann man alle Bedürfnisse des Wesens beeinflussen oder
zu einem Menü gelangen. Die Buttonleiste ist im Rahmen der Usability am unteren Rand des
Bildschirms, damit der Benutzer nicht bei Interaktion mit den Buttons den restlichen Schirm
mit den Fingern oder der Hand verdeckt. Grafisch sollten sich die Buttons im Einklang mit den
bunten 3D-Elementen befinden und den Blick des User nicht allzu sehr ablenken, aber trotzdem
auffällig genug sein um eine schnelle Identifikation zu ermöglichen.
Mit Hilfe der Buttons gelangt der User auch von dem Wohnraum in das Badezimmer und
zurück. Genaueres zum grafischen Userinterface behandle ich im nachfolgenden Abschnitt.
Im Prototypen in LittleLegends habe ich als virtuelles Haustier einen Drachen konzipiert. Der
Drache als Fabelwesen ist weder Mensch noch Tier. Er hat eine gewisse Intelligenz aber auch
tierische Neigungen. Dieser Zwiespalt stellt schon das Konzept von LittleLegends dar, in dem
das Wesen gefüttert werden muss, dieses gleichzeitig aber auch lernen kann, was eine gewisse
Intelligenz voraussetzt. Dies sollte auch das Set darstellen, in dem zum einem das Wesen in
einem Wohnzimmer eines anscheinend ganz normalen Hauses wohnt und in einer Dusche gewaschen wird. Im Gegensatz dazu aber in einem Körbchen schläft und mit Steaks, also Fleisch,
gefüttert wird. Da das Spiel für Kinder und Jugendliche konzipiert ist, wollte ich zudem eine
Verharmlosung bis hin zur Verniedlichung des Wesens und seinen Bedürfnissen.
13
5.1.3. GUI
Die Buttons
Füttern
Der erste Button in der Leiste stellt ein Steak dar. Wie oben erwähnt frisst ein
Drache laut Fabelgeschichten Fleisch. Dies wurde verharmlost in dem diesem
zum Essen ein Steak gegeben wird. Bei Betätigung des Buttons erscheint ein
Steak welches der User auf das Wesen ziehen muss damit die Essensanimation abgespielt wird und sich die Attribute Sättigung, Harndrang und Stimmung erhöhen und Hunger verringert.
Waschen
Der Button mit dem Schwamm führt den User ins Badezimmer. Dort steht
das Wesen in einer Dusche und kann nun vom Benutzer gewaschen werden.
Wenn man ins Badezimmer kommt ändern sich auch die Buttons in der Leiste.
Es befinden sich dort nun ein gelber Pfeil nach links, ein Schwamm, eine
Bürste und eine Shampoo-Flasche. Mit dem gelben Pfeil gelangt der User
zurück ins Wohnzimmer. Mit der Shampoo-Flasche kann auf das Wesen fünf
Mal ein Schaum aufgetragen werden. Mit dem Schwamm kann man diesen
Schaum wieder wegwischen und mit der Bürste kann das Wesen geschrubbt
werden.
Alle Aktionen erhöhen die Reinlichkeit, Stimmung, Gesundheit und Zuneigung.
Schlafen
Der dritte Button ist dazu da das Wesen schlafen zu legen. Wenn man auf den
Button drückt wird die Schlafanimation aktiviert. Die Buttons auf der unteren
Leiste verschwinden und es tauchen drei neue auf. Ein Pfeil nach links, eine
ausgeschaltete Glühbirne und eine eingeschaltete Glühbirne. Bei dem Pfeil
handelt es sich um einen Button der den User zurück ins vorherige Menü
bringt. Mit den Glühbirnen kann man das Licht ein oder ausschalten. Denselben Effekt kann der User hervorrufen, wenn er im Wohnzimmer auf die rote
Lampe klickt, allerdings wird hierbei keine Schlafanimation aktiviert. Die
Attribute Stimmung und Hunger erhöhen sich, die Müdigkeit wird reduziert.
14
Spielen
Der Button mit dem Ball soll dazu dienen mit dem Wesen zu spielen.
Diese Funktion wurde noch nicht implementiert.
Lernen
Mit dem Button mit dem Buch drauf soll der User mit dem Wesen lernen
können. Diese Funktion wurde noch nicht implementiert.
Neue Ausstattung
Der Button mit dem Pinsel und der Farbe steht für eine Renovierung oder
Neuausstattung des Wesens. Diese Funktion ist noch nicht realisiert. Hier
soll der User die Räume des Hauses verändern können. Z.B. soll die Farbe
der Wände im Wohnzimmer geändert oder dem Wesen ein neues Körbchen
gegeben werden.
Information
Der letzte Button ist für Information. Dieser Button ist in jedem Zimmer
sichtbar. Der User soll jederzeit auf Informationen über die Attribute des
Wesens zugreifen können. Wenn auf diesen Button geklickt wird, erscheint
ein blaues, halbtransparentes Viereck, in dem die wichtigsten Attribute
des Wesens wie Fröhlichkeit, Sättigung oder Harndrang aufgelistet wird. Zu
jeden Attribut gibt es eine fünfstufige Skala, die durch kleine Kreise dargestellt
werden. Rote Kreise bedeuten Pluspunkte, leere Kreise sind Minuspunkte.
Umso mehr rote Kreise es gibt umso mehr Bedürfnisse sind gestillt und
umso besser ‚geht‘ es dem Wesen. In diesem Fenster gibt es unter den
Attributen einen Punkt „ins Menü“. So lässt sich das Spiel pausieren und ins
Hauptmenü zurückkehren.
15
Sauberkeitsleiste
Im Badezimmer erscheint links oben eine Leiste.
Diese stellt die Sauberkeit des Wesens dar und spiegelt das
Attribut Reinlichkeit. Je mehr es gewaschen wird, desto mehr
erhöht sich der innere rote Balken.
Menü
Bei Spielbeginn erscheint zuallererst das Menü. Dort kann der User auswählen ob er sein Spiel
weiterspielen oder ein neues Spiel beginnen möchte. Ebenfalls kann er von dort in die Hilfe
oder das Spiel beenden.
Bei dem Untermenü Hilfe sind alle für den User relevanten Attribute aufgelistet und kurz
erklärt, wofür diese stehen und wie er sie im Spiel beeinflussen kann.
16
5.1.4. Charakterentwicklung
Zur Entwicklung eines eigenen Charakters für LittleLegends habe ich zu allererst die Arten von
virtuellen Haustieren untersucht, die es in Spielen gibt. In dem Anschnitt Bekannte Spiele mit
virtuellen Haustieren (Seite 6) habe ich bereits einige existierende Spiele vorgestellt. Dabei
habe ich bemerkt, dass besonders bei Software-basierenden Spielen, reale Haustiere simuliert
werden, wie ein Hund, Katze oder auch Pferde. Fantasiewesen kommen hauptsächlich in webbasierenden Spielen vor, wo auch die User gestalterischen Einfluss auf die Wesen nehmen können.
Somit wollte ich auch im Bereich der Software einen unrealistischen Charakter entwickeln um
freie Hand in der Gestaltung und im Bereich der Bedürfnisse des Wesens zu haben. Infolge dessen habe ich Fantasie und Märchen als Thema vorgegeben. Geplante Charaktere waren unter
anderem Einhörner oder Sphingen, aber nur der Drache wurde im Prototypen konzeptioniert
und realisiert.
Am Anfang habe ich zwei unterschiedliche Skizzen von einem Drachen erstellt. Diese Skizzen
habe ich einigen Kindern bei der
Zielgruppenbefragung gezeigt und
auswählen lassen was ihnen besser
gefällt. Das Resultat war eine eindeutige Mehrheit für den kleinen
grünen Drachen, der wesentlich
besser auf die etwas ältere Zielgruppe zugeschnitten ist.
Danach hab ich zwei Skizzen als
Vorlage für die 3d-Modellierung
erstellt.
17
5.1.5. 3d-Modellierung von Charakter, Set und Objekten
Modellierung des Drachen
Zur Modellierung des Drachen habe ich die Poly by Poly Technik benutzt. Der Vorteil davon ist,
dass ich jedes Polygon einzeln setzte und somit die Polygonanzahl sehr genau bestimmen kann.
Dies war notwendig, da der Charakter sehr Polygonarm konstruiert werden musste aufgrund
der geringen Performance, Speicher und Grafikleistung des Smart Phones.
Die Topologie des Drachen musste zum Animieren ausgelegt sein, weswegen auch die Gliedmasen nicht eins zu eins von der 2D- Zeichnung übernommen wurden.
Ebenfalls besteht das Mesh vollkommen aus Quads, was dem Drachen weichere Konturen gibt
und scharfe Kanten beim Animieren vermeidet.
18
Modellierung des Sets und der Objekte
Das Set besteht aus einem Wohnzimmer und einem Badezimmern.
Dem Wohnzimmer wurden mehrere Elemente hinzugefügt. Einmal Gegenstände, die der
Drache oder der User benutzen kann, wie das Körbchen oder die Lampe, zum anderen Objekte
die lediglich zur Atmosphäre beitragen, wie Fenster mit einem Blick nach draußen, eine Tür,
Teppich, der Schrank und der Spielzeugritter.
Im Badezimmer stehen eine Duschwanne, der Duschhahn, Handtücher, ein Regal und
Shampoo-Flaschen.
Alle Objekte wurden entweder mit Boxmodelling erstellt, wie die Duschwanne, oder mit
Splines und einem Lathe-Modifier, wie die Shampoo-Flaschen. Hier wurde ebenfalls versucht,
so polygonreduziert wie möglich zu arbeiten um die Perfomance des gesamten Spiels auf dem
Handy nicht zu belasten. Die Farbgebung ist aus dem RGB-Raum und recht bunt gehalten um
der Playmobilrichtung gerecht zu werden.
19
5.1.6. Animation
Um den Drachen für die Animation vorzubereiten habe ich Bones als Grundgerüst erstellt mit
Helfern zum erleichterten Bedienen. Danach habe ich das Mesh an die Bones gebunden und
somit geskinned. Nun musste noch das Mesh geweighted werden, d.h. einstellen welcher
Scheitelpunkt von welchen Bone beeinflusst wird.
Aufgrund der Limitation von dem h3t-Exporter konnte ich jedem Vertex nur einen Bone zuweisen. Auf den h3t-Exporter werde ich im nachfolgenden Abschnitt weiter eingehen. Das hatte zur
Folge, dass das Mesh bei der Animation scharfe Kanten aufwies.
Die benötigten Animationen für den Prototypen sind:
-
-
-
-
-
-
-
Walkcycle normal
Walkcycle fröhlich
Walkcycle traurig
Unter der Dusche
Essen
Schlafen
Gestreichelt werden
20
5.1.7. H3T-Exporter
Wie oben bereits erwähnt benutzte ich als Zwischenformat h3t. Dieses Format ist das einzige
funktionierende, kostenlose Tool zum Export von einer 3D-Szene für das Konvertieren in m3g.
Allerdings hat dieses Format einige Einschränkungen und Vorgaben.
Ich werde im Folgenden die wichtigsten Vorgaben vom h3t-Exporter erläutern die, während
meiner Arbeit Ausschlag gebend waren.
Bones
H3t hat eine Bones-Limitierung von drei. Das heißt, dass
einem Vertex nur drei Bones zugeordnet werden darf.
Diese Vorgabe beschränkt die flüssige Animation des
Charakters und hat Verzerrungen und scharfe Kanten zur
Folge. Abweichend von der Angabe in der Dokumentation
von h3t war es in 3ds Max nicht möglich mit einem Limit
von drei das Mesh korrekt zu exportieren. Die Lösung
war die Zurodnung der Vertices auf ein Limit von eins zu
reduzieren, was die beschrieben Folgen verstärkt hat.
Morphing
Um Animationen wie den Mund vom Drachen zu öffnen, ist es üblich Morphs zu verwenden.
D.h., dass ein zweites identisches Mesh erstellt wird mit der gewünschten Mimik.
Mit einem Morph-Modifier kann dieses Mesh auf das Original angewendet werden und je nach
Einstellung der Übereinstimmung wird die Verformung übertragen. Somit kann man eine Animation erstellen, in der der Drachen den Mund öffnet. Allerdings werden im Exporter von 3ds
Max diese Option nicht unterstützt.
Im h3t-Exporter für Maya wird diese Option jedoch im Gegensatz zu Max unterstütz, weswegen ich meinem Kommilitonen Manuel Weiss aus IAM5, der sich mit Maya sehr gut auskennt,
gebeten habe mir bestimmte Animationen in Maya zu erstellen.
21
Material
Um Material und Farbe korrekt exportieren zu können muss ein h3t-Material verwendet
werden. Dies ist nach der Installation des h3t-Plugins im Materialeditor zu finden. Hier kann
dann unter anderem die Sichtbarkeit oder Glanz einstellen werden. Es ist möglich eine Farbe
zu verwenden oder ein bis zwei Bitmaps als Textur. Die Bitmaps müssen quadratisch sein mit
einer Seitenabmessung gleich einer Zweierpotenz (2, 4, 16, 32, 64, 128, 256). Umso höher die
Kantenlänge umso qualitativer ist das Bitmap. Jedoch sollte diese nicht zu groß gewählt werden
hinsichtlich der Performance-Einschränkungen. Die Texturen werden bei Export mit ausgelagert
als PNG-Files.
Es ist allerdings nicht möglich Polygone eines Objekts unterschiedliche Materialien zu geben.
Transparenz
Es ist nicht möglich mit h3t transparente Objekte korrekt zu exportieren.
Animation
In 3ds Max hatte ich das Problem, dass sich, wenn ich den Drachen vom Mittelpunkt verschoben habe, das Mesh im Exporter verzerrte. Um eine korrekte Exportiertung zu gewährleisten
durfte das Objekt nicht verschoben werden. Dies trat allerdings erst auf nachdem ich das Mesh
an die Bones geskinned habe. Eine Lösung für dieses Problem habe ich nicht gefunden. Selbst
nach einem erneuten Versuch das Mesh an die Bones mit zu skinnen und neu zu weighten ließ
es sich nicht korrekt exportieren. Ich habe somit auf Translationen in den Animationen von 3ds
Max verzichtet .
22
5.1.8. M3g-Converter
Nach dem Export von h3t-Files aus 3ds Max konnte ich diese mit dem M3G-Converter von
Mascot Capsule umwandeln in M3G-Files. Dazu musste ich lediglich im Konverter die zu konvertierende Datei auswählen. Der Konverter hat nun im selben Order wie die h3t Datei eine M3G
Datei erstellt. Falls in der Szene Texturen waren, wurden die vom h3t-Exporter erstellen PNGFiles in die M3G-Dateien mit eingebunden.
23
5.2. Programmierung
5.2.1. Recherche und Vergleich von Methoden
OpenGL ES
1
„OpenGL ES (Open Graphics Library for Embedded Systems) ist eine Spezifikation für ein plattform- und programmiersprachenunabhängiges API (Application Programming Interface) zur
Entwicklung von 3D-Computergrafik. Die Spezifikation beschreibt eine vereinfachte Version
der OpenGL Spezifikation welche sich besonders für den Einsatz im Bereich von eingebetteten
Systemen eignet.”2
OpenGL ES findet unter anderem Anwendung auf der PlayStation 3, dem IPhone von Apple
oder das N900 von Nokia.
Spiele mit OpenGL ES
-
Neocore
-
Armadillo Roll
Vorteile:
-
Direkte und schnelle Steuerung der Grafikausgabe
-
Komplex und leistungsstark
Nachteile
-
Hohe Einarbeitungszeit
-
Beispiele aus C, C++ können nicht direkt übernommen werden
-
3D Szenen aus 3d-Software-Tools können nicht direkt eingebunden werden
1
2
http://www.khronos.org/opengles/images/opengles_75px.png
http://de.wikipedia.org/wiki/OpenGL_ES
24
Mobile 3D Graphics API (m3g)
M3G ist eine Spezifikation, die eine API für das Entwicklen von Javaprogrammen mit 3D-Computer Grafik zu Verfügung stellt. Es erweitert die Ressourcen von Java, Micro Edition. Das objekt-orientierte Interface beinhaltet
30 Klassen die zum Zeichen von komplexen, animierten drei-dimensionalen Szenen verwendet werden.
Die Klassenbibiliothek [JSR-184] berücksichtigt die geringe Rechenleistung
und die limitierten Resourcen von Handys und PDAs. „Ziel des [JSR-184] ist
es, eine schnelle 3D-Grafik auf Handys und PDAs zu ermöglichen, die die
Implementierung von Spielen, Simulationsprogrammen und interaktiven
Animationen erlauben.“ 1
Vorteile
Schnelle Implementierung von 3D-Szenen
Erstellung von Morphing-Effekten
Zugriff auf die Animationen mittels eines AnimationControllers
Nachteile
Geringe Performance, somit Einschränkungen der Polygonanzahl und Texturen
Fazit
Um eine einfache Implementierung meiner Szenen aus 3ds Max zu gewährleisten, habe ich
mich für die JSR-184 API des M3G entschieden. Zusätzlich ist dies auf JavaME abgestimmt, so
dass ich mich nur in die Klassen des M3G einarbeiten musste.
Screenshot von Asphalt 3: Street Rulse,
zeigt die Möglichkeiten von der Mobile
3D Graphics API
2
1
2
Breymann / Mosemann, Seite 223
http://en.wikipedia.org/wiki/Mobile_3D_Graphics_API
25
5.2.2. Die m3g-API
Anforderungen
M3g erfordert CLDC 1.1 und MIDP 2.0. Weiterhin muss die API JSR-184 auf den Handys
vorhanden sein, sowie eine hohe Rechenleistung im Bereich 3d-Darstellung.
Implemetierung
M3g besitzt zwei Modi für das Rendering:
- Retained Mode: Rendert die 3D-Welt auf Basis der Licht und Kamerapositionen
- ImmediateMode: Einzelne Objekte können direkt auf den Bildschirm gezeichnet werden,
ohne die gesamte Welt zu rendern.
Beide Modi können nebeneinander verwendet werden und ermöglichen bei richtiger Verwendung eine performante Applikation.
Mobile 3D Graphics API
MIDP
CLDC 1.1
Integration er Mobile 3D API in die bestehende Umgebung
26
Szenegraph
„ Der Retained Mode basiert auf einem Szenegraph, der die Hierachie der darzustellenden
Szene beschreibt. Der Graph besteht aus einem Weltknoten, der die Wurzel des Graphen ist,
und aus weiteren Knoten, die die Geometrie, Beleuchtung, die Position und Orientierung, die
Beschaffenheit der Objekte und die Kameraeigenschaften beschreiben. Dabei finden Operationen, die auf einen Knoten angewendet werden (z.B. eine Rotation), auch auf Kindknoten
anwendung.”1 Ein Szenengraph wird mit einer 3D-Software wie 3ds Max, Maya oder Blender
erstellt. Dazu wird die Szene in dem Programm erstellt und beim Export in m3g, oder wie bei
mir mit dem Zwischenschritt über h3t, wird der Graph in das File mit eingebunden. Mit dem
m3g Viewer kann man sich nicht das 3d-Objekt anschauen sonder auch den Szenegraphen
anzeigen lassen. Bei direktem Export von 3ds Max in M3G wird eine html Datei erzeugt die den
Szenegraphen anzeigt.
World
Group
Sprite3D
Mesh
Group
Group
Camera
Morphing Mesh
Light
Beispiel eines Szenegraphs
1
Background
Breymann / Mosemann, Seite 224
Skinned Mesh
27
Klassen im m3g
In diesem Abschnitt möchte ich die wichtigsten Klassen von m3g Vorstellen um einen Überblick
zu erhalten.
Auf die Mobile 3d-API wird in J2ME durch das Package javax.mircoedition.m3g zugegriffen.
Loader und Object3D
„ Im M3G [gibt es] die Klasse Loader mit der Methode load(). Mit dieser Methode [wird] ein
Szenegraph im M3G-Dateiformat [geladen]. Die Klasse Loader deserialisiert einen Szenegraphen, und die einzelnen 3D-Objekte einer Szene werden in ein Array von Objekt 3D-Objekten
(Rückgabewert der Methode load() eingetragen. Die ist im M3G der übliche Wert, 3D-Objekte
im MIDlet aus einer Datei einzulesen. Fast alle Klassen des M3G außer Loader, Transform, RayIntersection und Graphics3D erben von der Klasse Objekt3D.“ 1
Graphics3D
Die Klasse Graphics3D ist das zentrale Element der API. Sie wird für das Rendering benutzt und
es gibt davon nur eine Instanz. Laut [JSR 184] muss die Klasse wie folgt eingebunden werden:
Public class MyCanvas extends Canvas
{
Graphics3D myGraphics3D = Graphics3D.getInstance(); //Graphics-Singelton holen
Public void paint(Graphics g)
{
Try {
myGraphics3D.bindTarget(g); //Renderingausgabe an das Singelton binden
myGraphics3D.render(myWorld);// Szene rendern
}
Finally{
myGraphics3D.releasTarget();//Renderingausgabe freigeben.
}
//…
}
//…
}
Die Rendering-Ausgabe ist meist ein Graphics-Objekt welches von der paint()-Methode der
Klassen Canvas oder GameCanvas übergeben wird. Zusätzlich kann Graphics3D auch ein Image2D-Bild rendern, welches z.B. für eine Textur verwendet werden kann.
Das Graphics3D hat verschiedene Eigenschafte die unterstütz werden, wie z.B. ANTIALIAS,
DITHER oder TRUE_COLOR. Allerdings werden nicht alle Eigenschaften von der Hardware oder
Software auf dem PDA oder Handy unerstützt.2
1
2
Breymann / Mosemann, Seite 225
Breymann / Mosemann, Seite 228
28
World, Group und Node
Die Klasse World ist die Wurzel des Szenegraphen und somit dessen Einstiegspunkt. Weitere
Knoten werden der World-Klasse mittels der addChild()-Methode hinzugefügt.
Beim Rendern des Graphics3D-Objektes muss diesem ein Objekt der Klasse World übergeben
werden. Die Klasse World erweitert die Group-Klasse um Methode zum Setzten von Hintergrund- und Kamera-Instanzen.
Die abstrakte Klasse Node ist die Basis-Klasse aller Szenengraph-Knoten. Die fünf Klassen die
von Node erben sind Camera, Mesh, Sprite3D, Light und Group.
In LittleLegends werden die Szenen, wie das Wohnzimmer oder das Badezimmer, von der Klasse
World abgeleitet, da es das oberste 3D-Objekt ist. Der Drache ist ein Node, welcher an World
angehängt ist.
Camera
„Die Klasse Camera wird für die Transformation der 3D-Szene auf Bildschirmkoordinaten eingesetzt, wobei sich das M3G bei der Projektion und beim Clipping an OpenGL hält.“1 Es ist möglich
in einer Szene mehrere Kameras einzusetzten und diese miteinander Kombinieren.
Light
Es gibt in M3G vier Lichtarten
-
Ambient Light
Dieses Licht beleuchtet alle Objekte aus jeder Richtung gleichmäßig.
-
Directional Light
Diese Lichtart ist dem Sonnenlicht ähnlich. Es kommt gleichmäßig aus einer Richtung,
die Position des Lichts hat keine Bedeutung.
-
Omnidirectional light
Auch hier werden alle Objekte aus allen Richtungen beleuchtet, allerdings nimmt die
Intensität mit der Entfernung ab.
-
Spot light
Ein Spotlight beleuchtet die Objekte aus einer bestimmten Richtung, wobei die
Entfernung von Objekt und Licht von Bedeutung ist.
In LittleLegends werden zum optimalem Ausleuchten der Szenen zwei direktionale Lichter benutzt.
1
Breymann / Mosemann, Seite 233
29
Erzeugen und Verwendung einer M3G-Datei
Wie eine M3G-Datei mit Hilfe von h3t-Exporter und Konverter erzeugt wird habe ich bereits im
Kapite 8.1.7 ht3-Exporter (Seite 20) erläutert. Hier möchte ich dies nochmals an einer Grafik
des schematischen Aufbaus genauer darstellen:
1
Lang, Seite 8
1
30
Die Verwendung von M3G-Dateien ist nicht immer einfach und hängt auch davon ab, von
welchem 3D-Programm exportiert wurde. So hat Maya nach dem Exportieren einen geringfügigen anderen Aufbau des Szenengraphens als 3ds Max. So musste ich für die Dateien von Maya
die Klasse Actor einfügen um das zu animierende Mesh mit find(ID) zu lokalisieren und diesem
einen AnimationController, mit der ID des Controllers aus dem Szenengraphen, zuzuweisen.
Bei beiden Exporten, von Maya und von Max, musste ich jedesmal im Szenegraphen nachschaunen welche ID das SkinnedMesh hat, welches ich in die Szene einfügen möchte.
Beispiel eines
Szenegraphen
31
5.2.3. KI und Datensicherung
In LittleLegends wurde eine einfache KI auf Basis permanenter Datenspeicherung konzpiert.
Das Konzept, dass das Wesen lernen soll wurde noch nicht umgesetzt.
Datensicherung mit einem RecordStore
Ein RecordStore ist ein permanenter Speicher auf dem Handy. Die Klasse RecordStore verwaltet
das Hinzufügen, Lesen, Löschen und Ändern im internen Speicher. Ein RecordStore hat einen
eindeutigen Namen und ein positive ganze Zahl als Primärschlüssel. Datensätze werden als
Byte-Arrays geschrieben. Deswegen müssen Daten, die in integer oder String vorliegen, zuerst
umgewandelt werden. Das umgekehrte Prinzip muss zum Auslesen von Byte in ein beliebiges
Format angewendet werden.
Wenn der Benutzer nun in LittleLegends eine Interaktion ausführt, z.B. den Drachen füttert,
werden bestimmte Attribute wie die Stimmung um eins erhöht. Danach werden alle Attribute
in dem RecordStore gespeichert und wieder ausgelesen, um für den User zur Verfügung zu
stehen.
Zeitlich Komponente durch Thread-Programmierung
Um die Zeit vergehen zu lassen, wird in dem Prototypen mit dem Starten des MIDlets auch ein
Thread gestartet. Dieser beeinflusst nach einer bestimmten Zeit (z.B. jede Minute oder jede
Stunde) die Attribute. Er verringert z.B. die Stimmung und erhöht den Harndrang. Dies simuliert
somit vergehende Zeit in der Welt des virtuellen Haustieres. Die Zeit soll einem realistischen
Wert von 24 Stunden darstellen. Im Prototypen ist die Zeit minütlich eingestellt um diese zu
Präsentieren.
Was noch nicht implementiert ist, ist da Altern des Wesens. Da noch keine Geburt oder andere
Entwicklungsstufen vorhanden sind, wurde erstmal vernachlässigt. Ebenso gibt es noch keine
Unterscheidung zwischen Tag und Nacht der realen Welt. Dazu eine Abfrage der Systemuhr des
Handys implementiert werden.
1
1
http://picture.yatego.com/images/3ef727e15b1151.0/eki-clock-uhr-galery.jpg
32
5.2.4. Konzept der Klassen und Methoden
In diesem Abschnitt möchte ich auf die verwendeten Klassen und ihre Funktion eingehen.
Eine schematische Darstellung befindet sich in den zwei folgenden Abschnitten UseCase und
UML.
MyMIDlet
MyMIDlet ist die Startklasse des gesamten Programms und ist von MIDlet abgeleitet. Somit
besitzt sie die typischen Funktionen initialize(), startApp(), pauseApp() und destroyApp().
In der Methode startApp() wird je eine Instanz der Klasse Attributes und Controller sowie Time
erstellt, auf die ich später noch genauer eingehen werde. Die initialize-Methode wird aufgerufen.
In der initialize()-Methode wird da Menü aufgerufen und der menustatus, das heißt in welchem
Menü sich die Applikation beim Start befindet, bzw. in welchem Raum sich das virtuelle Haustier gerade aufhält, übergeben. Ebenfalls wird eine Instanz der Klasse Controller mitgegeben, die
in startApp() erstellt wurde.
MyCanvas
Die MyCanvas-Klasse ist die Hauptklasse der Applikation LittleLegends. Von hier aus werden alle
Funktionen gesteuert. MyCanvas ist von Canvas abgeleitet und besitzt dessen paint()-Methode.
Hier wird die 3D-Szene und Objekte sowie benötigte Bilder geladen und mit paint() auf den
Screen gezeichnet. Mit der Methode setLight() werden Instanzen von Light erstellt und an ein
World-Objekt angehängt. Ähnlich in der Methode setAspectRatio(), in der ein KameraObjekt
erstellt. Die Perspektive wird auf die Breite und Höhe des Handybildschirms angepasst. Dann
wird die Kamera gemäß der vom Menü übergebenen Rotationswinkeln und Verschiebungen
angepasst.
Für den Touchscreen wichtige Methoden sind pointerDragged(), pointerPressed() und
pointerReleased(). Wenn nun der User auf den Bildschirm tippt wird pointerPressed()-Methode
aufgerufen, welche zuständig für das Aktivieren der Buttons ist. Wenn über den Bildschirm mit
stetigem Druck gestrichen wird, wird pointerDragged() aufgerufen. Damit wurde z.B. das
Streicheln oder Waschen realisiert. PointerReleased wird aufgerufen, wenn der User den
Screen nicht mehr berührt, d.h. der Druck aufhört. Diese Methode wird im Prototypen nicht
verwendet.
Mit der Methode paint() wird, wie bereits erwähnt, alles an ein Graphics-Objekt gebunden
und auf die Leinwand, d.h. den Screen gezeichnet. Um zu entscheiden, welches 3d-Mesh oder
welche Buttonbar gezeichnet werden soll, habe ich einige if-Abfragen verwendet.
Die interne Klasse RefreshTaks, abgeleitet von TimerTaks ist mit seiner Methode run() für die
Animation zuständig. Wenn eine Instanz dieser Klasse aufgerufen wird,ruft sich diese solange
selber auf bis sie gestoppt wird. Diese Klasse benutzte ich zum Animieren des Walkcycles. Je
nachdem in welche Richtung der Drache laufen soll werden float-variablen hoch oder runter
gezählt bis sie einen bestimmten Wert erreicht haben. Danach ändert der Drache sein Richtung.
Diese Art funktioniert auf dem Emulator sehr flüssig, läuft jedoch auf dem Handy (besonders
auffällig bei Nokia XPressMusik 5800) viel langsamer und zäher ab, was vermutlich an den
beschränkten Speicherressourcen und der schlechten Unterstützung für 3D liegt.
33
MyCanvas_shower
Eine fast identische Klasse wie MyCanvas ist die MyCanvas_shower. Diese hat denselben Aufbau, da sie auch dieselbe Funktion besitzt, die Szene laden und Steuern. Es werden lediglich
andere 3d-Objekte und Bilder geladen und gezeichnet. Vom Menü werden andere Kameraeinstellungen übergeben.
Menu
Die Menu-Klasse wird von MyMIDlet aufgerufen. Sie ist zuständig für die Initialisierung des Displays des Handys. Weiterhin ruft sie je nach übergeben Menüstatus BathroomForm.java oder
MainroomForm.java auf.
MainroomForm
Hier werden für die Wohnzimmer-Szene die benötigte Buttonbar geladen sowie Kameraeinstellungen initialisiert. Danach wird die Klasse MyCanvas aufgerufen und dieser die Instanz des
MIDlets, der Pfad der 3d-Szene, Kameraeinstellungen, die Buttonbar sowie eine von Menu
mitgelieferte Instanz von Controller übergebenen. Die Einstellungen und Pfadangaben holt die
Klasse MainroomForm von der Klasse Mainroom.
Mainroom
In dieser Klasse werden Pfadangaben für Bilder und 3d-Objekte sowie die Kameraeinstellungen
festgelegt.
BathroomForm
BathroomForm ist fast identisch mit der Klasse MainroomForm. Sie übergibt lediglich anderen
Pfadangaben und Einstellungen.
Bathroom
Diese Klasse ist identisch mit der Klasse Mainroom. Sie enthält lediglich andere Einstellung für
die Kamera und andere Pfadangaben für Bilder.
34
Actor
Die Klasse Actor wird aus der paint()-Methode von MyCanvas aufgerufen, um eine Animation eines 3D-Objektes darzustellen. Dazu muss der Actor-Klasse das World-Objekt, die ID des
zu rendernden 3D-Meshes, die ID des AnimationControllers, der die Animation des Meshes
steuert, ein aktuelles Time-Objekt sowie die Anzahl der Frames der Animation übergeben
werden. Das Mesh wird anhand seiner ID in dem World-Objekt ausfindig gemacht und zu
seinem SkinnedMesh gecastet. Hier kann z.B. auch die Dauer und die Geschwindigkeit der Animation beeinflusst werden.
Package geom
GeomUtils
Diese Klasse ist dafür zuständig Weltkoordinaten in Bildschirmkoordinaten umzuwandeln. Dazu
werden aus der Klasse MyCanvas die aktive Kamera und die x, y und z Koodinaten als Point3fArray des zu translatierenden Punktes übergeben. Von der übergebenen Kamera holt sie die
Klasse dessen Transform-Matrix und dessen Projektion, welche in einer Transform-Variablen
gespeichert werden. Es wird eine neue Transform-Matrix erstellt, dieser die aktuelle TransformMatrix der Kamera übergeben und danach invertiert. Dann wird das Array mit den x,y und z
Koordinaten mit der neuen Kameramatrix und Projektionsmatrix transformiert. Um nun die aktuelle Bildschirmkoordinaten zu berechnen werden jeweils x, y und z mit der vierten Stelle der
4x4 Matrix, also der Stelle die für die Translation zuständig ist dividiert und mit der Screenhöhe
oder –breite multipliziert. Der selbe Wert von Höhe oder Breite muss danach noch dazu addiert
werden. Da Bildschirmkoordinaten nur aus eine x und y-Koordinate bestehen, muss der dritte
Wert, der für z zuständig ist nicht mit multipliziert und addiert werden.
vectorP[0]/vectorP[3]*screenW_2 + screenW_2, //x
-vectorP[1]/vectorP[3]*screenH_2 + screenH_2, //y
vectorP[2]/vectorP[3] //z
Point3f
Diese Klasse wird von GeomUtils aufgerufen, um x, y und z Koordinaten in einem Array zu
speichern.
35
Package KI
Attributes
In dieser Klasse sind alle dreizehn Attribute des virtuellen Haustieres definiert, welche in dem
Konzept des Prototypen festgelegt wurden. Alle Attribute sind mit Gettern und Settern ausgestattet um die Attribute aus dem Speicher hier zu speichern, damit die Applikation auf die
Werte zugreifen kann. Die Methode newGame() ist zuständig, wenn ein neues Spiel gestartet
wird. Dabei werden alle Werte der Attribute auf den Mittelwert fünf gesetzt und in der Datenbank überschrieben.
Controller
Die Controller-Klasse ist zum steuern aller Attribute und Interaktionen die Werte der Attribute
verändern zuständig. Z.B. werden bei der Aktion füttern, die durch Berührung des Buttons
mit dem Steak-Icon in der MyCanvas-Klasse ausgelöst wird, das Attribut Hunger (Hunger),
Laune(Mood)und Harndrang (Stranguary) um eins erhöht und die Sättigung (Satsifaction) um
eins gesenkt. Danach werden die Daten in dem internen Speicher gesichert und neu ausgelesen.
Database
Die Klasse Database ist der interne Speicher. Darin wird ein RecordStore erzeugt. Die Funktion
des RecordStores habe ich bereits in dem Abschitt 8.2.3 KI und Datensicherung (Seite 31) erläutert. In der Klasse Database wird somit dieser RecordStore erzeugt und wieder aufgerufen, um
mit entsprechenden Methoden Werte auszulesen, zu überschreiben, zu löschen oder einzufügen. Die Werte werden in den Methode zu Byte-Arrays umgewandelt, damit der RecordStore
diese Speichern kann. Beim Auslesen kann mit bestimmten Methoden das Byte-Array wieder
in Integer,long oder einen String umgewandelt werden. Diese Klasse habe ich aus dem Buch
„Spieleprogrammierung für Handys mit Java ME“ übernommen.
36
DB
Mit der Klasse DB wird die Klasse Database und somit der RecordStore gesteuert. Die Methode
setValues() holt sich die Werte der aktuellen Attribute mit Hilfe der übergebenen AttributeInstanz. Mit der Methode addEntry() können neue Einträge hinzugefügt werden. Dazu wird
erst abgefragt, ob der Wert des Attribues, welches in die Datenbank geschrieben werden soll,
nicht größer als zehn ist und ob dieser nicht im negativen Bereich ist. Dann wird die Methode
writeInteger(String, int) von der Klasse DB aufgerufen, welche den übergeben Integer Wert und
den String, der den Schlüssel darstellt in ein Byte-Array umwandelt und in den RecordStore
speichert. Der Schlüssel ist dafür zuständig, um den Wert an eine bestimmte Stelle des RecordStores zu speichern und um diesen Wert auch wieder auslesen zu können. Somit funktioniert
der RecordStore wie ein Hashtable, der permanent gespeichert werden kann.
Mit der Methode getValues werden die Werte der Attribute anhand ihres Schlüssels wieder
ausgelesen und die zugehörigen Variablen der Klasse Attributes gespeichert.
Time
Die Time-Klasse erbt von der Klasse Thread. Diese Klasse erzeugt die Zeit in der Applikation.
Es wird ein Thread initialisiert, der mit der run()-Methode nach einer bestimmten Zeit immer
wieder aufgerufen wird. Die Zeit zwischen den Aufrufen ist einstellbar und zu Testzwecken auf
eine Minute (6000 ms) eingestellt. Nach dieser Zeit ruft der Thread die Methoden getHungry(),
getThirsty(), getDirty() und getTired() in der Controller-Klasse auf. getHungry() z.b. reduziert
den Wert Hunger und der Sättigkeit um eins. So wird eine ablaufende Zeit simuliert und somit
Bedürfnisse wie bei einem lebenden Wesen hervorgerufen.
37
5.2.5. UseCase
Name und Identifier
füttern, UC 1
Ziel
Der User das virtuelle Haustier füttern.
Kategorie
primär
Vorbedingung
Die Appliaktion muss auf dem Handy instaliert sein und ist am laufen.
Nachbedingung Erfolg
Die Attribute Hunger, Laune, Harndrang und Zufriedenheit wird erhöht.
Nachbedingung Fehlschlag
Die Werte der Attribute bleiben gleich.
Beteiligte Akteure
User, Handy, Appliaktion
Auslöser
Geringe Attributspunkte bei Hunger
Beschreibung
- Button für Füttern drücken (Bild mit Steak, erste Button von links)
- auf dem Display erscheinendes Fleisch auf das virtuelle Haustier ziehen
Button füttern
drücken
verschieben
anzeigen
View
RecordStore
anzeigen
Steak
ok geben
Controller
Datensatz
erhöhen
Datensatz
auslesen
38
Name und Identifier
waschen, UC 2
Ziel
Der User das virtuelle Haustier waschen.
Kategorie
primär
Vorbedingung
Die Appliaktion muss auf dem Handy instaliert sein und ist am laufen.
Nachbedingung Erfolg
Die Attribute Sauberkeit, Laune, Gesundheit und Zuneigung wird erhöht.
Der Sauberkeitsbalken erhöht sich.
Nachbedingung Fehlschlag
Die Werte der Attribute bleiben gleich.
Beteiligte Akteure
User, Handy, Appliaktion
Auslöser
Geringe Attributspunkte bei Sauberkeit
Beschreibung
- Button für waschen drücken (Bild mit Schwamm, zweiter Button von links)
- auf dem Display erscheint das Badezimmer und vier neue Buttons
- Button Bürste drücken
- auf dem Bildschirm erscheinende Bürste auf das virtuelle Haustier ziehen und mit dem
Finger schrubben
Alternative 1
- Button schwamm drücken und mit dem Schwamm das Wesen schrubben
Alternative 2
- Button Shampoo drücken und Shampoo auf dem Wesen druch drücken verteilen
- Button schwamm drücken und mit dem Schwamm das Wesen schrubben um somit den
Schaum weg zu wischen
View
Button
waschen
RecordStore
anzeigen
drücken
neue Szenen
und GUI
drücken
verschieben
Button
Bürste
ok
geben
Bürste
Controller
erhöhen
Leiste
Datensatz
übergeben
Datensatz
erhöhen
und speichern
Datensatz
auslesen
39
Package: main
5.2.6. UML
40
41
Package: KI
Package: geom
42
6.
Ergebnis
Im Anschluss möchte ich nun auf die Ergebnisse meiner Arbeit eingehen. Im Bereich Konzept ist
eine vollständige Anleitung bezüglich Attribute und ihrer Wirkung bzw. ihre gegenseitige Beeinflussung entstanden. Diese Vorlage gilt für das gesamte Spiel.
Der Prototyp von LittleLegends ist begrenzt spielbar. Es gibt einen Charakter als virtuelles Haustier, das der User streicheln, füttern, schlafen legen und waschen kann. Das Spiel besitzt zwei
Szenen, das Bad und das Wohnzimmer. Eine interne Datenbank speichert alle Attributwerte
und kann diese jederzeit, auch nach Neustart des Spiels abrufen. Die Zeit wird durch einen
Thread dargestellt. Der Thread beeinflusst die Attribute, um vergehende Zeit zu erzeugen.
Der User kann mit dem virtuellen Haustier einmal mittels Touchscreen agieren, zum anderen
die Buttons auf dem Bildschirm benutzen, je nach gewünschter Aktion.
7.
Bewertung
An diesem Punkt der Dokumentation möchte ich das erzielte Ergebnis des Prototypen diskutieren.
Die Frage, wie 3D mit JavaME in Applikationen eingebunden werden kann, konnte ich in dieser
Dokumentation weitgehenden erläutern. Wie bereits erwähnt habe ich die M3G API von
JavaME genutzt und so fertige 3D-Szenen eingebunden. Dies hat den Vorteil, dass Szenengestaltung und Design unabhängig von der Programmierung entwickelt werden kann. Die Szene
und Objekte mit einer Profi-3D-Software wie 3dsMax oder Maya zu entwickeln bietet dem 3DDesigner die Möglichkeit, die ganzen Möglichkeiten des Tools auszunutzen. Somit lassen sich
einfach detailierte Szenen mit Licht und Kamera erstellen und diese auch ohne Rechenaufwand
ändern. Trotz dieser Freiheit für das 3D-Design gibt es bei diesem Format Einschränkungen die
eine flüssige Entwicklung stark behindern. Im Kapitel über den h3t-Exporter habe ich bereits
dessen Vor- und Nachteile erläutert. Zusammengefasst muss der Designer die Einschränkungen
des Exporters genau kennen und wissen, wie er diese verhindert oder umgeht. Auch die Einbindung der exportieren Dateien unterscheidet sich je nach 3D-Software und Arbeitsweise des
Designers. Zusätzlich zeigt JavaME die Szenen und Objekte nicht immer wie gewünscht an. Der
Programmierer muss anschließend meistens noch die Szenen in Bezug auf Licht, Kamera und
Position anpassen. Somit ist die Einbindung von M3G-Dateien mit hohem Aufwand verbunden.
Im Verlauf der Arbeit konnte ich die Performance des Prototypen auf einem Touchhandy, dem
Nokia 5800 XPressMusik testen. Im Wesentlichen läuft die Animation und die Szenen werden
korrekt dargestellt. Die Animation läuft jedoch mit einer sehr niedrigen Framerate (zwischen 3
und 8 fps) ab. Diese Framerate wird noch schlechter, umso mehr Meshes in die Szene eingefügt
werden, weshalb es notwendig ist, die 3D-Szenen so polygonarm wie möglich zu halten. Jedoch
auch bei völligem Entfernen des Hintergrundes und Objekten konnte das Handy die Animation
nicht flüssig abspielen.
Abschließend ist eine 3D-Applikation für ein Handy oder PDA ein Projekt mit hohem Aufwand.
Handyspiele sind Casual Games, d.h. Gelegenheitsspiele. Deswegen ist es fragwürdig, ob es sich
zurzeit lohnt, solch ein Spiel für die gängigen Handys und PDAs zu entwickeln.
Allerdings entwickeln sich die Mobiltelefone rasant weiter. Sobald diese genug Speicherkapazität haben und auch 3D effizient unterstützen werden, werden 3D-Applikationen sinnvoll.
Dann müssen sich auch die Tools zum Erstellen dieser 3D-Applikationen verbessern und es
lohnt sich für den Designer und Programmierer darin zu investieren.
43
8.
Ausblick
Als letzten Punkt dieser Dokumentation möchte ich einen Ausblick über das Projekt und den
Prototypen werfen.
Zunächst wird der Prototyp um die fehlenden Aktionen Spielen, Toilette, Trinken und Lernen
erweitert. Beim Spielen soll ein Minispiel entwickelt werden, welches mit Hilfe das Touchscreen
gesteuert wird und dem User auch auf längere Zeit nicht langweilt. Bei der Aktion Lernen wäre
es sinnvoll, auch den User zu fordern, z.B. in einem Gedächtnisspiel oder Wissensquiz. Weiterhin soll die Möglichkeit gegeben werden das Zimmer des virtuellen Haustieres zu verändern
und neu auszustatten, wie z.B. andere Tapete oder neue Gegenstände kaufen.
Zur Verbesserung der Spielqualität sollte die KI und Vergebung der Attributpunkte noch
genauer überprüft bzw. verfeinert werden. Die Eignung des Spiels sollte danach mit einem
Usabilitytest überprüft und gegebenenfalls Fehler entfernt werden. Ebenfalls muss das Menü
erweitert werden um eine genaue Hilfeanleitung sowie Einstellungsmöglichkeiten, wie z.B. die
Sprache.
Bisher fehlt auch Sound. Effekte und Aktionen wie das Duschen brauchen eine Soundunterlegung wie fließendes Wasser. Es wäre auch denkbar, dass das virtuelle Haustier Geräusche
macht oder Laute von sich gibt. Im Bereich Effekt wird beim Duschen noch eine Wasseranimation eingefügt. Weitere Effekte und Animationen, um das Haustier realistischer und interessanter zu gestalten sind durchaus anzustreben.
Das virtuelle Haustier sollte um weitere mögliche Wesen sowie deren Entwicklungsstufen
erweitert werden. Die Fähigkeit des Wesens sich zu einer höheren Lebensform bei bestimmten
Voraussetzungen, wie guter Pflege und nach Ablauf einer bestimmten Zeit, zu entwickeln, sollte
ebenfalls implementiert werden.
Die KI muss dementsprechend erweitert werden, dass das Haustier lernen kann. Dass es lernt,
wann es etwas gut gemacht und eine Belohnung erhält, z.B. einen Snack. Wenn das Wesen dies
gelernt hat, wird es Sachen, für die es belohnt wurde öfter machen, auch ohne darauffolgende
Belohnung. Genauso soll man das Haustier bei schlechtem Verhalten disziplinieren können.
Eine geeignete Methode ist das Bestärkende Lernen, wo die KI versucht ein System von Belohnung und Bestrafung für sich zu optimieren.
Sobald ein stabiles und userfreundliches Spiel entstanden ist und alle Interaktionsmöglichkeiten
implementiert wurden, gibt es weitere Möglichkeiten, das Spiel für die Nutzer auf lange Zeit
interessant zu halten. Dazu im Folgenden ein mögliche Erweiterung.
Denkbar wäre eine Online-Community, in der der User sein Wesen anderen Handybesitzer, die
LittleLegends spielen, vorstellen und diese miteinander vergleichen kann.
Möglich wäre eine Art Wettkampf zu entwickeln, in dem die Wesen der User gegeneinander in
verschiedenen Disziplinen antreten.
Die User könnten online neue Objekte, die neue Interaktionsmöglichleiten bieten, als Preis
erhalten oder miteinander tauschen.
Die Entwicklung des Wesens nicht nur durch gute Pflege, sondern auch durch das meistern verschiedener Aufgaben, wie bestimmte Spiele gewinnen oder Rätsel lösen ist eine weitere Idee.
Hierbei kann auch die Community miteinbezogen werden.
44
9. Glossar
3D
Abkürzung für dreidimensional
3dsMax
3D-Software von Autodesk, für 3D-Computergrafik
API
(für engl. application programming interface) Programmierschnittstelle
C, C++
systemnahe Programmiersprachen
CLDC
(engl. Connected Limited Device Configuration) definiert die kleinstmöglichste Konfiguration
einer J2ME-Laufzeitumgebung
embedded Game
vorinstalliertes Spiel
Exporter
wandelt Daten in ein gewünschtes Format um, Teil eines Programms
Implementierung
Umsetzung von Strukturen und Abläufen in einem System mit vorgegebenen Regeln und
Zielvorgaben
Instanz
hier: Objekt, welches zur Laufzeit von einer Klasse erzeugt wird
IPhone
Smartphone von Apple mit Multi-Touch-Funktionalität
Java
objektorientierte Programmiersprache
JavaME
Java Micro Edition, oder auch J2ME, Programmiersprachen für mobile Geräte, basierend auf
der Programmiersprache Java
JSR-184
Java Specification Requests Nummer 184, Programmbibliothek, zuständig für die 3D-Unterstützung
Klasse
aus Klassen wird in der objekt-orientierten Programmierung Objekte erstellt
Konverter
wandelt Daten in ein anderes Format um, eigenständiges Tool
45
LWUIT
Lightweight User Interface Toolkit, Programmbibliothek für JavaME für bessere Gestaltung der
Benutzerschnittstelle.
M3G
Mobile 3D Graphics API, JavaME-Sepzifikation für 3D-Grafik
M3G Converter
Konverter von h3t-Dateien in das M3G-Format
M3G-Toolkit
Software-Packet von MascotCapsule, enthält den M3G Viewer und den M3G Converter
M3G Viewer
Programm zu Visualisierung von h3t- und M3G-Dateien
Matrix
rechteckige Anordnung von mathematischen Objekten
Maya
3D-Software von Autodesk, für 3D-Computergrafik
Mesh
hier: 3D-Objekt aus Polygonen
MIDlet
in der Programmiersprache Java geschriebene Software für mobile Geräte, muss dem MIDP und
CLDC entsprechen
MIDP
Mobile Information Device Profile, Profil von JavaME
Multi-Touch
Fähigkeit es Touchscreens, gleichzeitig mehrere Berührungen zu erkennen
Nokia
Telekommunikationskonzern, bekannt als weltgrößter Mobiltelefon-Hersteller
OpenGL
Open Graphics Library, Spezifikation für eine Programmierschnittstelle zur Entwicklung von 2Dund 3D-Computergrafik
OpenGL ES
Open Graphics Library for Embedded Systems, Spezifikation von OpenGL für den einsatz in
‘eingebetteten System’, z.B. Mobiltelefone
Prototyp
Versuchsmodell, Vorab-Version des geplanten Produktes
RecordStore
Datenbank eines MIDlets
46
rendern/Rendering
Bildsynthese, Erzeugen eines Bildes aus Rohdaten
Screen
Bildschirm
Simulationsspiel
Spiele, die realitätsnahe Umgebungen und Verhaltensweisen erzeugen
Tamagotchi
jap. Elektronikspielzeug mit einem virtuellen Haustier
Touchscreen
Eingabegerät für PC oder mobile Geräte zum Bedienen durch Berührung des Bildschirms mit
den Fingern oder einem Zeigestift
Thread
Teil eines Prozesses in einem laufenden Programm
virtuelles Haustier
elektronisches Wesen, um das sich der User kümmern muss ähnlich einem echten Tier
Walkcycle
Animation eines laufenden Charakters
47
10. Quellenangaben
Print
Lucka, Thomas:
Mobile Games. Spieleprogrammierung für Handys mit JavaME. Hanser, 2008
Breymann Ulrich / Mosemann Heiko:
JavaME. Anwendungsentwicklung für Handys, PDA und Co. 2. Auflage. Hanser: 2008
Online [Stand 01.01.2010]
zu 4.1.Definition eines virtuellen Haustieres
Wikipedia: Definition virtuelles Haustier
http://en.wikipedia.org/wiki/Virtual_pets
Nintendogs Homepage
http://nintendogs.nintendo.de/
Tamagotchi Homepage
http://www.tamagotchi.de/, http://www.tamagotchi.com/
Neopets Homepage
http://www.neopets.com/
Marapets Homepage
http://www.marapets.com/
http://www.marapets.com/marapets.php
Mein eigenes Tierheim (PC)
http://images.amazon.com/images/G/03/software/features/0DUIbeduerfnissegr.jpg
zu 4.2.Bekannte Spiele mit virtuellen Haustieren
Wikipedia: Definition Tamagotchi
vgl. http://de.wikipedia.org/wiki/Tamagotchi
Bilder eines Tamagotchi
http://www.timboucher.com/journal/wp-content/uploads/2009/01/tamagotchi.jpg
http://www.ubergizmo.com/photos/2008/9/color-tamagotchi.jpg
Bilder von IPuppy
http://appshopper.com/games/ipuppy-schnauzer
http://appshopper.com/games/ipuppy-husky
http://appshopper.com/games/ipuppy-2
http://www.iphonediario.com/noticias/303315673screen.jpg
http://images.appshopper.com/screenshots/291/068226.jp
Nintendogs
http://nintendogs.nintendo.de/
http://images.businessweek.com/ss/05/11/miyamoto/image/nintendogs.jpg
48
zu 8.1.1. Methoden
M3G Toolkit
http://www.mascotcapsule.com/toolkit/m3g/en/index.php
zu 8.2.1. Recherche und Vergleich von Methoden
Bild: Logo OpenGL ES
http://www.khronos.org/opengles/images/opengles_75px.png
Wikipedia: Definition OpnegGL ES
http://de.wikipedia.org/wiki/OpenGL_ES
Wikipedia: Definition Mobile 3D Graphics API
http://en.wikipedia.org/wiki/Mobile_3D_Graphics_API
zu 8.2.3. KI und Datensicherung
Bild: Uhr
http://picture.yatego.com/images/3ef727e15b1151.0/eki-clock-uhr-galery.jpg
49
Eidesstattliche Erklärung
Hiermit versichere ich, dass ich die vorliegende Arbeit selbstständig verfasst
und keine anderen als die angegebenen Quellen und Hilfsmittel verwendet habe
und dass die Arbeit in gleicher oder ähnlicher Form noch keiner anderen
Prüfungsbehörde vorgelegen hat. Alle Ausführungen, die wörtlich oder sinngemäß
übernommen wurden, sind als solche gekennzeichnet.
Untermeitingen, den 10.02.2010