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
© Copyright 2024 ExpyDoc