Spongebob und die verlorenen Farben

Medieninformatik Bachelor
LMU München
SS 2010
Interaktive Virtuelle 3D-Welten
Dozent : Prof. Dr. – Ing. Axel
Hoppe
Spongebob und die verlorenen Farben
Lukas Höfer
Roman Graebsch
Samy Ateia
Philip Czech
Sylvia Kempe
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
Motivation ............................................................................................................................................... 3
Exposé ..................................................................................................................................................... 3
Elemente der Spielwelt ........................................................................................................................... 4
Der Avatar ........................................................................................................................................... 4
Die Quallen .......................................................................................................................................... 4
Burger .................................................................................................................................................. 5
Bewacher Fische .................................................................................................................................. 5
Seifenblasen ........................................................................................................................................ 6
User Interface ...................................................................................................................................... 6
Intro / Outro ........................................................................................................................................ 8
Spielwelt .............................................................................................................................................. 9
Effekte ............................................................................................................................................... 10
Spezifikation .......................................................................................................................................... 11
Shader.................................................................................................................................................... 12
Nötige Ressourcen: Design ................................................................................................................ 13
statisch........................................................................................................................................... 13
dynamisch...................................................................................................................................... 13
Objekte in jedem Level .................................................................................................................. 13
Nötige Ressourcen: Shark.................................................................................................................. 14
Animation .............................................................................................................................................. 14
Path Animation .................................................................................................................................. 14
Bone-Motion Animation.................................................................................................................... 15
Beleuchtung........................................................................................................................................... 15
Planungsnotizen .................................................................................................................................... 16
Arbeitsaufteilung ................................................................................................................................... 18
2
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
MOTIVATION
Es war einmal an einem lauen Sommerabend in einem kleinen unbedeutenden Garten irgendwo
am Rande der Grossstadt, wo sich Fuchs und Hase noch gute Nacht sagen.
Fünf unbedeutende Informatiker grillten harmlos und lauschten dem entspannenden Klang der
Haus-eigenen Spongebob Ukulele.
Bei einer nervenaufreibenden Partie Spongebob Monopoly wurden die sonst so ruhigen
Gemüter erhitzt. Um die Situation zu entschärfen kam die Idee auf, mit Seifenblasen Beschuss
verbale Fehltritte im Spielverlauf zu strafen.
Nach dem erbitterten Kampf um den Sieg mussten die armen Studentenkörper mit Nahrung
versorgt werden, Hawaii Toasts waren die rettende Lösung!
Beim Aufschneiden der Ananas kam die wahnwitzige Idee:
“WIESO MACHEN WIR EIGENTLICH KEIN SPONGEBOB SPIEL??”
Der Rest ist Geschichte....
EXPOSÉ
Plankton, der grösste Schuft in Bikini Bottom versucht durch das Stehlen aller Farben die
Einwohner zu erpressen, um so an das geheime Rezept des ultimativen Krabbenburgers zu
kommen.
Der Spieler steuert seine Figur, verkörpert durch den Kinderhelden Spongebob, durch
verschiedene Level und versucht durch das Aufsammeln von Burgern seine Freunde zu befreien,
die durch seinen Erzrivalen Plankton gefangen genommen wurden, und somit die Farben im
jeweiligen Level wieder herzustellen.
Hat er diese Aufgaben erfüllt ist es ihm möglich am Ausgang ins nächste Level zu gelangen. Um
ihm dieses Vorhaben zu erschweren, befinden sich Quallen in den verschiedenen Levels, bei
deren Kontakt er wieder an den Levelanfang zurückgesetzt wird und zusätzlich Punkte vom
Konto abgezogen werden. Das Spiel bietet jedoch auch die Möglichkeit, die Quallen mittels
Spongebobs Quallenfischernetz zu fangen und sich zusätzlich Punkte dazu zu verdienen.
Im letzten Level muss sich der Spieler einen erbitterten Endkampf mit Plankton liefern um
diesen endgültig zu besiegen und alle Farben wieder herzustellen.
3
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
ELEMENTE DER SPIELWELT
DER AVATAR
Repräsentiert die Spielfigur welche vom Spieler gesteuert
wird . Diese wird über verschiedene Tasteneingaben
angesprochen:
Pfeiltaste
: Die Spielfigur bewegt sich in der Welt
nach rechts
Pfeiltaste
: Die Spielfigur bewegt sich in der Welt
nach links
Pfeiltaste
: Die Spielfigur springt
Pfeiltaste
+
: Die Spielfigur springt doppelt
(Sprung in der Luft möglich)
Leertaste : Angriff mit dem Netz wird ausgeführt (nötig
um eine Qualle zu fangen)
Bei den Tasteneingaben wird die jeweils dazu passende Animation des Playermodels ausgeführt
und die entsprechende Sounddatei abgespielt.
Bei der Angriffs-Aktion ist zu beachten dass diese mit Quallen interagieren kann. Befindet sich
zum Zeitpunkt der Ausführung eine Qualle im Bereich des Netzes, so verschwindet die Qualle
und dem Spieler wird ein fixer Punktebonus gutgeschrieben.
DIE QUALLEN
Die Qualle ist ein animiertes Objekt dass per Helper Point in der
Spielwelt instanztiiert wird. Die Animation wird mittels eines Skripts
randomisiert abgespielt. Weiterhin wird abhängig der Distanz vom
Spieler zu einer Qualle der entsprechende Sound abgespielt.
Sollte die Qualle in Berührung mit dem Spieler kommen ohne dass dieser
eine Angriffsanimation ausführt, so bedeutet dies den Spielertod.
Ein solcher zieht eine Senkung der Punkte mit sich, sowie eine Verschiebung
des Avatars zurück auf den Spawnpoint.
Im Moment des Todes werden die Shaderboxen „wobble“ und „rot“ kurzzeitig eingeblendet um
den Tod hervorzuheben.
4
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
BURGER
Krabbenburger sind die einzig anerkannte Währung im Ozean um Bikini
Bottom. Als solche, sind sie auch essentiell um die Bewacherfische von
Spongebobs Freunden zu bestechen, damit diese berfreit werden
können.
Das genaue Rezept der Krossen Krabbe darf an dieser Stelle leider nicht
verraten werden, aber es ist famos genug um Plankton alle Farben stehlen zu lassen!
Die Burger sind wie die Quallen animierte Objekte die auch per Helper Points in der Spielwelt
eingefügt werden.
Berüht der Spieler mit dem Avatar einen Burger so wird seine Animation abgespielt und er wird
aus der Welt entfernt. Weiterhin wird der Burgercounter für das aktuelle Level inkrementiert
und ein fixer Punktwert gutgeschrieben.
Am Ende der Animation wird der Burger-eigene Sound abgespielt.
BEWACHER FISCHE
Bewachefische sind nicht besonders intelligente Meeresbewohner; diese Eigenschaft wird nur
all zu gerne von Plankton ausgenutzt. Ohne zu fragen übernehmen sie die Aufgabe, auf die in
Blasen gefangenen Freunde von Spongebob und die entsprechenden Farben aufzupassen.
Trotz konstanten Training ist Spongebob leider nicht der brachialen Kraft dieser Fische
gewachsen, so dass er auf subtilere Tricks zurückgreifen muss um seine Freunde zu befreien.
Wie auch bei allen anderen Bikini Bottom Einwohnern ist die grösste Schwäche die unersättliche
Gier nach Krabbenburgern.
In jedem Level muss eine bestimmte Anzahl von Burgern vom Spieler eingesammelt werden,
damit der entsprechende Freund befreit wird (Link auf Shader). Wieviele Burger noch
gesammelt werden müssen wird in der GUI (Link hier) mittels Textausgabe angezeigt.
5
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
SEIFENBLASEN
Oh die Ironie! Dass Spongebobs Freunde gerade in seiner
zweitgrössten Liebe nach Burgern gefangen sind...Seifenblasen.
Wurden genug Burger gesammelt so platzt die Blase (wird
ausgeblendet) und der schwarz-weiss Shader wird deaktiviert.
Weiterhin erscheint ein Dialog dass der jeweilige Freund befreit
wurde und der entsprechende Sound wird abgespielt.
Auch die Abfrage ob genug Burger gesammelt wurden, läuft über
eine Sensorbox der Blase, nicht über den Bewacherfisch.
Wurde ein Freund erfolgreich befreit, so wird ausserdem die Box für den Levelausgang aktiviert,
über die man in das nächste Level gelangt.
USER INTERFACE
6
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
Im User Interface werden die wichtigsten Informationen zum Fortschritt im Spiel angezeigt.
Links oben ist zu sehen welche Freunde noch befreit werden müssen (schwarz-weiss) und
welche schon gerettet wurden (farbig).
Weiterhin ist der aktuelle Punktestand, sowie die im Level gefundenen Burger zu sehen.
Der Rat der magischen Miesmuschel wird über die Taste M einberufen, worauf in der GUI rechts
oben hingewiesen wird. Die magische Miesmuschel sollte so oft wie möglich befragt werden, um
einen reibungslosen Spielfluss zu garantieren.
Am unteren Bildschirmrand werden die Textdialoge der verschiedenen Spielszenen angezeigt,
welche durch Drücken der A-Taste ausgeblendet werden können.
Am Anfang und Ende jedes Levels wird eine Übersicht des Punktestandes mittig angezeigt um
die Leistung des Spielers zu bewerten.
Bei einem Levelwechsel wird auch die GUI genutzt um einen Ladebildschirm über den gesamten
Bildausschnitt zu legen, bis das neue Level initialisiert ist.
7
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
INTRO / OUTRO
Intro-, sowie Outro-Bilder und Texte werden am Anfang und bei Abschliessen des Spiels
auch in der GUI angezeigt.
Durch die Intro Bilder kann man per Pfeiltaste
Sounddatei begleitet.
durchschalten, der jeweile Text wird per
8
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
SPIELWELT
Die Spielwelt besteht aus vier einzelnen Levels, die jeweils einen speziellen Teil von Bikini
Bottom darstellen.
Das Spiel startet mit der Rettung von Spongebobs besten Freund Patrick Star in dessen
Wohnstein. Entsprechend ist der Grafikstil schlicht und sandig gehalten und das Level befindet
sich optisch unter dem Meeresboden.
Weiter geht es in Spongebobs Ananas, der besten Wohnananas im ganzen Ozean. Die
markantesten Einrichtungsgegenstände wurden nachmodelliert, damit dies gut zu erkennen ist.
Hier wird Spongebobs Haustier Gary befreit.
Der miesepretrige Thaddeus wird im dritten Level gerettet, welches den Weg von Spongebobs
Ananas zur krossen Krabbe darstellt. Hier gilt es Schwärme von Quallen zu bewältigen sowie
knifflige Jump n‘ Run Einlagen über bewegliche Plattformen und Angelhaken zu bezwingen.
Das letzte Level gliedert sich in zwei Teile, erst wird Mr. Crabs Blase zum Platzen gebracht,
danach findet der epische Showdown mit Plankton im Hinterzimmer der krossen Krabbe statt.
Ob einem die Schalter an der Wand helfen den Schuft zu besiegen sei jedem Spieler selbst
überlassen. Auf jeden Fall ziehen sie den weiteren Einsatz von Shadern mit sich.
Alle Levels erlauben zwar nur eine 2D Bewegung des Avatars, sind jedoch voll 3D modelliert.
Desweiteren werden einige 2D Ebenen für eine Tiefenwirkung benutzt, in welchen sich
Zierbilder wie Algen o.ä. befinden.
9
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
EFFEKTE
In Spongebobs Unterwasserwelt geht es normalerweise sehr farbenprächtig zu – doch der
Schurke Plankton hat diese entführt! Die Effekte zwischen verschiedenen Farbfiltern für die
Leveldarstellung zu wechseln werden mittels Shadernutzung realisiert.
Unterwasser Effekt:
Erzeugt einen animierten welligen Unterwasser-Effekt im Außenlevel.
Schwarz/Weiß ("SinCity") Effekt:
Dieser Effekt ist an jedes Level angepasst und stellt dort nur einen Bruchteil der enthaltenen
Farben dar, solange man noch nicht seinen Freund befreit hat. Danach wird der Effekt
deaktiviert und es erscheinen wieder alle Farben des Levels.
Wobble Effekt:
Wird ausgeführt wenn der Spieler in eine Qualle läuft. Dabei wird das Bild animiert verzerrt bis
der Spieler an den Anfang des Levels zurück gesetzt wurde.
Rot Effekt:
Wird ebenfalls ausgeführt wenn der Spieler in eine Qualle läuft. Das Bild beginnt rot zu blinken
bis der Spieler zurück gesetzt wurde.
10
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
SPEZIFIKATION
OBJEKT
Nötige Resourcen Design
Nötige Resourcen Shark
Playermodel
Basis (ohne
Animation)
spongebob_player.max, Pfad:
\src\res\level\model\
player_position.s3d_perch
Helperpoints:
stand, gear, sensortrig, netzTrigger, player
\src\res\level\model\spongebob_player.s3d_
bonemotion
levelplayer.s3d_actor - player_rawproducer:
Sensorvolumen: spongebobSensor
Collision: &collision
Bones: &bone_root mit daran gelinkten
Bones
Playermodel
Animationen
spongebob_player_fangen.max
spongebob_player_idle.max
spongebob_player_laufen_rechts.max
spongebob_player_springen.max
playermodelanim_actu00_fangen
<kit_engobj.actu(cyclic)>
playermodelanim_actu01_links
<kit_engobj.actu(cyclic)>
playermodelanim_actu02_rechts
<kit_engobj.actu(cyclic)>
playermodelanim_actu03_idle
<kit_engobj.actu(cyclic)>
spongebob_player.s3d_bonepath
playermodelanim_actu04_springen
<kit_engobj.actu(cyclic)>
bonemotion_playermodelanim
<kit_engobj.bonemotion>
playermodel_anim_script_actor
<kit_perch.script>
Quallen
Burger
Blasen
Bewacherfische
Plattformen
Spielwelt
(allgemein)
qualle.max - mit Animation, Pfad:
\src\res\level\model
Helperpoints: Quallen_mittelpunkt
Sensorvolumen: sensor
Sound: “quallenBz.wav”
box.max
Sensorvolumen: sensor
Sound: “burger.wav”
Mehrere bubble_xxx.max Dateien, für jeden
Freund eine
Sensorvolumen: sensor
Sound: “blase.wav“
bewacherFisch.max
verticalBox.max
Sensorvolumen:
ShaderBox_Qualle, ShaderBox_Rot,
ShaderBox_Farbe
Helperpoints:
playerstart, qualle_spawn_xx,
box_spawn_xx, ausgang, camera_helper,
blase
Patricks Stein
Um alle Hindernisse: Collisionboxen mit
Friction 0 um Hängenbleiben zu
verhindern
patricks_level.max
playermodel_anim.s3d_perch
player_position.s3d_perch
quallenanim.s3d_actor
qualle.s3d_perch
box.s3d_actor
box.s3d_perch
blase.s3d_actor
ausgang_blase.s3d_perch
ausgang_box.s3d_perch
plattform.s3d_actor
plattform.s3d_perch
ausgang_box.s3d_actor
blase.s3d_actor
box.s3d_actor
quallenanim.s3d_actor
producer.s3d_perch
shader.s3d_perch
levelmanager.s3d_perch
contacts.s3d_perch
sounds.s3d_perch
-
11
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
Spongebobs
Ananas
Aussenlevel
SpongebobsAnanas.max
Krosse Krabbe
krosseKrabbe.max
Levelausgang
Schalter
Siehe entsprechende Spielwelt
Nur im Level krosse Krabbe:
Aussenlevel.max
Sensorvolumen:
Schalter00_Sensor, Schalter01_Sensor,
Schalter02_Sensor
ananas_main.s3d_actor
ananas_world.s3d_actor
plattform.s3d_actor
aussen_main.s3d_actor
aussen_world.s3d_actor
producer_aussen.s3d_perch
tuer.s3d_actor
end_boss.s3d_perch
Siehe entsprechende Spielwelt
kk_world.s3d_actor
schalter_00.s3d_perch
schalter_01.s3d_perch
schalter_02.s3d_perch
Planes:
SchalterAN_00, SchalterAN_01,
SchalterAN_02
Kamera
User Interface
Sound:
“schalter_an.wav“, “schalter_aus.wav“
cameramodel.max
displaymodel.maxp
Intro/Outro
Siehe User Interface
displayworld.s3d_actor
display.s3d_perch
Siehe User Interface
SHADER
Es werden verschiedene Klassen von Shadern benötigt:
Vorgefertigte Shader aus der Shark 3D Engine welche verwendet werden um die
Ausleuchtung zu realisieren.
Dynamische aus dem Spiel heraus anschaltbare für besondere Effekte.
Statische Shader für besondere Effekte die dauerhaft in einem Level ausgeführt werden.
Die statischen Shader werden mit der Klasse eng_shader_std.alwaysenter erzeugt die, wie der
Name schon sagt immer ausgeführt wird.
Die dynamischen Shader werden mit der Klasse eng_shader_std.regionenter erzeugt. Shader mit
diesem ident werden nur ausgeführt, wenn die Kamera sich innerhalb des Objekts befindet, dem
dieser Shader zugwiesen wurde. Diese Objekte können nun dynamisch aus dem Spielverlauf
über ein verweisendes Itemeye mithilfe der Funktion disable_pos() ausgeschaltet,
beziehungsweise mit enable_pos() angeschaltet werden.
Animieren kann man die Shader indem man den .s3d_shaderprog Files ein Objekt des Typs
eng_shader_std.animgen übergibt, welches diese wiederum als Variable an die .s3d_shadercode
Files weiterreichen.
12
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
NÖTIGE RESSOURCEN: DESIGN
STATISCH
underwater_ps.s3d_shadercode
underwater_d3d9_hlsl_vs1x1.s3d_shadercode
 Ist animiert und erzeugt einen welligen Unterwasser-Effekt im Außenlevel.
DYNAMISCH
farbfilter_crabs_d3d9_hlsl_ps2x0.s3d_shadercode
farbfilter_garry_d3d9_hlsl_ps2x0.s3d_shadercode
farbfilter_patrick_d3d9_hlsl_ps2x0.s3d_shadercode
farbfilter_taddel_d3d9_hlsl_ps2x0.s3d_shadercode
farbfilter_d3d9_hlsl_vs1x1.s3d_shadercode
Alle vier oben genannten Shader sind nicht animiert und wirken wie ein Graufilter, der über das
ganze Level gelegt wird. Dabei werden einige levelspezifische Farben nicht ausgegraut um einen
“SinCity” artigen Effekt zu erzeugen.
redfilter_d3d9_hlsl_ps2x0.s3d_shadercode
redfilter_d3d9_hlsl_vs1x1.s3d_shadercode
Der Redfilter erzeugt wie der Name schon sagt einen Rot-Effekt, welcher ebenfalls animiert ist.
Er wird auch ausgeführt nachdem man in eine Qualle gelaufen ist.
wobble_d3d9_hlsl_ps2x0.s3d_shadercode
wobble_d3d9_hlsl_vs1x1.s3d_shadercode
Dieser Shader ist angelehnt an den im kit_misc Sample enthaltenen posteffects_wobble Shader.
Im Gegensatz zu diesem, ist er in unserem Spiel jedoch animiert. Er wird ausgeführt sobald man
in eine Qualle läuft.
OBJEKTE IN JEDEM LEVEL
ShaderBox_Farbe
ShaderBox_Qualle
ShaderBox_Rot
Auf diese Boxen werden die Shader angewendet um den gewünschten Effekt im Viewport zu
erzeugen.
13
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
NÖTIGE RESSOURCEN: SHARK
farbfilter_crabs.s3d_shaderprog
farbfilterAnschaltbarCrabs.s3d_shader
farbfilter_garry.s3d_shaderprog
farbfilterAnschaltbarGarry.s3d_shader
farbfilter_patrick.s3d_shaderprog
farbfilterAnschaltbarPatrick.s3d_shader
farbfilter_taddel.s3d_shaderprog
farbfilterAnschaltbarTaddel.s3d_shader
redfilter.s3d_shaderprog
redfilter.s3d_shader
underwater.s3d_shaderprog
underwater.s3d_shader
wobble.s3d_shaderprog
posteffects_wobble.s3d_shader
shader.s3d_perch
ANIMATION
Es wurden zwei Arten der Animation verwendet, zum einen reine Animationen über die Pathpos
(Animation entlang eines Pfades), zum anderen Bonemotion Animation (anhand eines Skeletts
im Model).
PATH ANIMATION
Qualle:
Die Animation der Qualle beschreibt eine reine Auf- und Abbewegung der Qualle, diese wird auf
Shark3D Seite mittels Skript noch randomisiert.
Plattform:
Die Animation der Plattform ist eine reine Translation der Position nach links und rechts.
Burger:
Beim Aufsammeln eines Burgers wird dieser sich drehend nach oben geschoben.
Schuh:
Der Schuh wird durch eine Translation von oben nach unten ins Bild eingeblendet.
14
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
BONE-MOTION ANIMATION
Für die Animation des Playermodels wurde dieses in 3D Studio Max mit mehreren Bones in
Armen, Beinen und Nase versehen. Für die verschiedenen Animationen wurden entsprechend
.max Dateien erstellt die eine Animation des Models per Bones enthalten.
laufen_rechts.max:
Beine und Arme bewegen sich versetzt zueinander und schwingen jeweils nach vorne und
hinten in Ausrichtung der Bewegungsachse im Spiel. Das ganze Model wird dabei jeweils leicht
nach links und rechts gekippt um eine realistischere Bewegung zu simulieren.
Für die Bewegung nach links ist keine spezielle Animation nötig, da das Model per Shark3D
gedreht wird und die gleiche Animation in die andere Richtung ausführt.
springen.max:
Bei der Sprung Animation wird der linke Arm nach hinten, der rechte Arm mit Netz nach vorne,
gedreht; die Beine werden leicht nach Hinten gebogen.
fangen.max:
Mit dem rechten Arm und dem daran gelinkten Netz wird eine Fangbewegung ausgeführt, die
restlichen Bones bleiben unberührt.
idle.max:
Die Grundposition des Models, nur die Nase wackelt etwas auf und ab.
BELEUCHTUNG
Für die Ausleuchtung der Szene wurde keine spezielle Verteilung von Lichtquellen
vorgenommen. Jede Spielwelt besitzt eine einzelne Lichtquelle und allen darin enthaltenen
Objekten wurde ein Ordinary Shader für lokale Schatten zugewiesen.
15
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
PLANUNGSNOTIZEN
Ein paar Scans sehr früher Planungsphasen:
Diverse Eigenschaften und Objekte / Aktionen die eingebaut werden sollten.
16
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
Früher Versuch Objekte in Kategorien zu ordnen und einige Funktionen die umzusetzen sind.
Erste Skizze von Patricks Level / Stein.
17
Interaktive virtuelle Welten SS 2010 LMU MÜnchen
ARBEITSAUFTEILUNG
Sylvia Kempe, Matrikelnummer 6024450
Leveldesign
Modeling
Texturenerstellung
Sounddesign
Samy Ateia, Matrikelnummer 6023138
Shader / HLSL Programmierung
Beleuchtung
Lukas Höfer, Matrikelnummer 6023068
Shark3D Skripting (Sounds, Shader, GUI Interaktion, Schalter, Status: Shark-Gott)
Roman Graebsch, Matrikelnummer 6025420
Shark3D Skripting (Animationen, Interaktion Qualle-Player)
Dokumentation
Philip Czech, Matrikelnummer 6026121
Modeling
Animationen
Dokumentation
18