Skip to end of metadata
Go to start of metadata

Wiki für das mobile Game "Forest Run"


Jetzt erhältlich im Google Playstore !


Team MembersMatrikelnummer
Shahir Hajir2128239

Oskar Zajac

2301399
Peter Sokolov2116481

Erste Notizen und Gedanken, die wir uns gemacht hatten.

Inhaltsverzeichnis

Das Endprodukt

Die Grundidee

"Forest Run" ist ein 3D Endless Runner für Mobilgeräte. Der Spielcharakter wird von einem Riesen-Stein verfolgt und droht überrollt zu werden. Der Spieler muss nun dem Spielcharakter helfen vor diesem Riesen-Stein zu entkommen. Dabei muss er verschiedenen Hindernissen ausweichen und versuchen so viele Münzen wie möglich einzusammeln. Das Ziel besteht darin soweit wie möglich zu laufen und dabei viele Münzen einzusammeln.

Wie es in einem Endless Runner typisch ist, läuft der Spielcharakter unaufhörlich nach vorne. Der Spieler kann nun seinen Charakter durch Swipe-Bewegungen (links← rechts→ hoch↑ runter↓) nach links oder rechts bewegen beziehungsweise springen oder rollen lassen. Der gefährliche Riesen-Stein kommt mit der Zeit immer näher. Doch mit einem Tap löst man einen Boost aus und entkommt ihm temporär.

Der Bär schubst den Riesen-Stein zu dir   Weiche den Hindernissen aus   Der Riesen-Stein kommt immer näher, benutze Boost

Insgesamt hat der Charakter ein Zusatzleben und verliert dieses bei der ersten Kollision gegen einen Hindernis. In diesem Fall wird der Riesen-Stein getriggert und kommt sofort nah an den Charakter ran. Ist der Riesen-Stein nah am Charakter, so hat man ca. 3 Sekunden Zeit um den Boost (Tap) auszulösen und zu entkommen. Schafft man das nicht, wird man von ihm überrollt. 

Riesen-Stein überrollt den Charakter

Alle Hindernisse

Die Hindernisse werden reihenweise generiert. Dabei besteht eine Hindernis-Reihe aus vier Hindernissen, also ein Hindernis pro Spur. Die Hindernis-Reihe wird durch einen Algorithmus zufällig aus einem Pool von Objekten zusammengestellt. In diesem Pool befinden sich die folgenden Objekte: 

Block Hindernis versperrt die Spur komplett - Der Spielcharakter kommt nicht hindurch. Eine Kollision würde ein Leben abziehen.

Slide Hindernis versperrt die Spur teilweise - Der Charakter muss "drunter-sliden" oder "drunter-rollen". Eine Kollision zieht auch hier ein Leben ab. 

Jump Hindernis (Holzstamm) versperrt die Spur teilweise - Der Charakter muss drüberspringen. Eine Kollision zieht ein Leben ab.

Jump Hindernis (Stein) versperrt die Spur teilweise -  Hat das selbe Verhalten wie Jump Hindernis (Holzstamm).

Zum Hochlaufen (Holzahufen) versperrt nichts - Auf diesem Holzhaufen kann man hochlaufen. Es gibt keine Kollision.

Das rotierende Hindernis (Holzstamm) ist ein spezielles Hindernis, das immer einzeln generiert wird. In einer Hindernis-Reihe ist es das einzige Objekt.

 

Alle Features

Nachfolgend werden alle Features aufgelistet, die in diesem Spiel implementiert wurden.

Boost

Der Boost ist ein Feature, welches den Charakter für einen sehr kurzen Augenblick schlagartig schneller macht  Dieses Feature hat einen "Cooldown", sodass man nach einmaliger Ausführung eine Zeit lang warten muss, bis man es wieder verwenden darf. Eine grüne Anzeige unten rechts auf dem Screen zeigt den Zustand des Cooldowns an, damit man weiss wann man den nächsten Boost einsetzen darf. Der Boost wird durch einen Tap auf dem Screen ausgelöst. Ist der Riesen-Stein (hinter dem Charakter) nah dran, so kann man ihm mit einem Boost entkommen (temporär). 

Ein Tap löst den Boost aus

Bären

Die Bären sind eine besondere Art von Hindernis, denn sie werden nur in dem Map-Abschnitt "Höhle" und auf Plattformen generiert. Mit einem Boost (Tap) gegen einen Bären sorgt man dafür, dass der Bär wegfliegt und einen roten Pilz fallen lässt. Kollidiert man gegen einen Bären ohne vorher den Boost eingesetzt zu haben, so verliert man ein Leben und prallt nach hinten ab.

 Schlag den Bären weg und erhalte einen Mushroom

Super Boost

Hat der Spieler im Laufe des Spielens eine goldene Statue (Boost Powerup) eingesammelt, so wird automatisch der Super Boost aktiviert. Es dauert eine fixe Zeit lang, bis der Super Boost deaktiviert wird. Während er jedoch aktiv ist, ist der Charakter unzerstörbar. Das heisst, egal wieviele Kollisionen er gegen die Hindernisse oder Bären hat, er verliert kein Leben. Im Gegenteil, die Hindernisse prallen an ihm ab und fliegen weg. Um ein Boost Powerup einzusammeln, muss man zunächst 3 rote Pilze einsammeln und anschließend mit dem Einsammeln eines grünen Pilzes in den Flugmodus. Während des Fluges hat man nun die Möglichkeit dieses Powerup einzusammeln.

Boost Powerup Löst Super Boost aus

Schutzkugel

Sammelt man mehr als 15 Münzen direkt hintereinander, so wird ein "Coin-Streak" getriggert und es erscheint eine Schutzkugel um den Chrakter, der ihn somit unzerstörbar macht. Diese Schutzkugel deaktiviert sich nach einiger Zeit von alleine, falls man den "Coin-Streak" unterbricht. Solange man weiterhin Münzen, der Reihenfolge nach, direkt hintereinander einsammelt wird der "Coin-Streak" fortgesetzt. Andernfalls ist er unterbrochen.

Coin-Streak aktiviert deine Schutzkugel

Wolken und Plattformen

Die Plattformen werden sehr selten in den Map-Abschnitten generiert. Vor der Plattform wird immer eine Hindernis-Reihe generiert mit mindestens einer einer Wolke. Die Wolke ersetzt dabei eine der regulären Hindernisse und wird nur in der Hindernis-Reihe direkt vor der Plattform eingesetzt. In anderen Hindernis-Reihen wird sie nie eingesetzt. Kollidiert der Charakter gegen die Wolke, so wird er nach oben katapultiert und gleichzeitig wird der "Hurricane Kick" des Charakters aktiviert. Solange diese besondere Bewegung aktiv ist kann man Bären, die zufällig auf der Plattform generiert wurden, weg kicken. Diese lassen dann rote Pilze fallen. Der "Hurricane Kick" wird deaktiviert, nachdem die Plattform verlassen wird. 

Die Wolke bringt dich hoch auf die PlattformBären wegkicken auf der Plattform

Mushrooms und Fliegen

Es gibt zwei Arten von Pilzen (Mushrooms), den roten Pilz und den geflügelten grünen Pilz. Um einen roten Pilz einsammeln zu können, muss man zunächst einen Bären weghauen. Diese lassen dann rote Pilze fallen. Der geflügelte grüne Pilz wird nur auf dem Holzhaufen Hindernis generiert. Erst wenn man drei rote Pilze einsammelt, zeigt sich der grüne.   

         

Sammelt man den ersten roten Pilz, wird ein rötlich eingefärbtes Pilz Sprite rechts im Screen sichtbar. Wenn man einen zweiten roten Pilz sammelt, färbt sich der Pilz auf dem Screen gelblich. Sammelt man den dritten Pilz ein, so färbt sich das Pilz Sprite grünlich und deutet daraufhin, das bald ein grüner Pilz auftaucht. Beim Einsammeln macht der Charakter eine freudige Sprung-Bewegung.

Ersten roten Pilz eingesammeltZweiten roten Pilz eingesammeltDritten roten Pilz eingesammelt

Das Einsammeln eines grünen Pilzes bringt den Charakter in den Flugmodus.

Der grüne Pilz zeigt sichIm Flugmodus kann man Münzen sammeln

Rainbow-Abschnitt

Um in den Rainbow-Abschnitt zu gelangen, muss man zunächst 3 Wolken weg geschlagen haben (Boost vor der Wolke, lässt die Wolke wegfliegen). Anschließend fängt es an zu regnen und am Ende des Regens erscheint der Rainbow-Abschnitt.

DIe Wolke fliegt weg, wenn man gegen sie boostetWolken verursachen regenGeschenke im Rainbow-Abschnitt

Im Rainbow-Abschnitt gibt es weitere Wolken, die den Charakter Springen lassen. Zusätzlich gibt es Geschenke, die man einsammeln kann.

Map-Abschnitte

5 Map-Parts

Insgesamt gibt es 5 Map-Parts. Ein Map-Abschnitt besteht aus 15 gleichen Kopien eines Parts, wobei die Kopien hintereinander gelegt werden. Während des Spiels entscheidet ein kluger Algorithmus, welcher Map-Abschnitt als nächstes generiert werden soll.

Steuerung

Nachfolgend ist die Steuerung des Charakters dargestellt.

Swipe-Bewegungen:

Nach links - Bewegt den Charakter um eine Spur nach links. ←

Nach rechts - Bewegt den Charakter um eine Spur nach rechts. →

Nach oben - Lässt den Charakter nach oben springen. ↑

Nach unten - Lässt den Charakter nach unten abrollen. ↓

Tap (Berühren und Loslassen des Bildschirms) - Löst einen Boost aus. Der Charakter wird schlagartig für einen kurzen Moment schneller. 

Krümmung der Welt - Vertex Shader

Wir wollten unbedingt dem Boden eine Wölbung/Krümmung geben, damit die Umwelt etwas dynamischer aussieht. Das haben wir durch einen selbstimplementierten Shader realisiert. Über die öffentlichen Parameter des Shaders kann man einstellen, in welche Richtung sie die Objekte krümmen soll. 

Krümmung der Umwelt durch Custom Shader

Highscore Server

Der Highscore wird oben rechts im Screen angezeigt und inkrementiert sich immer höher, je weiter man läuft. Hat man verloren wird dieser Highscore zunächst lokal gespeichert und anschließend an den Highscore Server gesendet. Der Server wurde mit PHP und MySQL realisiert und die Kommunikation zwischen Server und dem Client läuft über HTTP. Empfängt der Server den Highscore, so trägt er ihn in die Datenbank ein und sendet die ersten 10 Platzierungen, sowie die Platzierung des Spielers an den Client zurück. Diese Informationen werden nun im Spiel in einem Fenster (Highscoremenü) dargestellt.

Highscore

GUI

Es gibt vier verschiedene grafische Oberflächen.

  • Das Main Menü beinhaltet zwei Buttons mit den Namen "Run" und "Score". "Run" startet das Spiel und "Score" zeigt den aktuellen Highscore an. Im Hintergrund befindet sich die Anfangsszene des Spiels mit einem animierten Bären.
  • Das Highscore Menü zeigt den aktuellen Highscore an und beinhaltet ein "Back" Button um es zu schließen.
  • Die GUI während des Spielens besteht aus einem Pause Button, sowie den Anzeigen für gesammelte Münzen und Highscore. Zusätzliche gibt es die Cooldown Anzeige für den Boost, die Anzeige für gesammelte Pilze und die Anzeige für den gesammelten Boost Powerup. Diese drei Anzeigen sind jedoch nur gelegentlich sichtbar.
  • Das Pause Menü erscheint sobald man auf den Pause Button gedrückt hat. Es beinhaltet vier Buttons.

Falls der Spieler verliert, wird das Highscore Menü mit dem aktualisierten Highscore angezeigt. 

Main MenüHighscore MenüGameplay GUIPause Menü

Die Schwierigkeiten bei der Umsetzung des Projektes

 

  • Der Vertex Shader war ziemlich umfangreich/komplex zu programmieren. Es gab hier viele Fehlversuche. Zunächst wurde er separat entwickelt und mehrmals getestet, bevor er in das Haupt Projekt eingefügt wurde. Aufgrund der anfänglichen Fehlversuche hatten wird mit dem Gedanken gespielt ihn ganz wegzulassen, doch glücklicherweise hat alles am Ende geklappt.
  • Die Modellierung und Texturierung der 3D Objekte war deutlich umfangreicher als gedacht.
  • Es hat einige Zeit gedauert bis wir einen guten Algorithmus für die automatische Levelgenerierung entwickelt hatten.
  • Die Touch Input Programmierung war ebenfalls eine Herausforderung
  • Die größte Schwierigkeit war die Optimierung der Performance. Wir wollten unbedingt ein Spiel entwickeln, welches flüssig auf den meisten mobilen Android Geräten läuft. Daher mussten wir bei jedem neuen Feature, welches wir implementierten, auf die Performance achten und Optimierungen vornehmen.

Unterschied geplantes Produkt und Endprodukt

Nachfolgend werden nur Punkte angesprochen, die beim Endprodukt anders sind als vorher geplant.

  • Der Riesen-Stein, der den Charakter verfolgt ist neu.
  • Es gibt nur einen Powerup (Super Boost) und zusätzlich einen passiven Powerup (die Schutzkugel bei einem "Coin-Streak"). Beide werden automatisch ausgelöst und nicht durch Drücken eines UI Buttons.
  • Der Tap löst einen Boost aus und keinen Kick
  • Das Fliegen, beziehungsweise der Flugmodus und die Pilze sind neu und waren vorher nicht geplant.
  • Es wurden keine Normalmaps eingesetzt, da diese sehr performancelastig sind.

Zeitaufwand

PersonThemenGesamtzeit
Shahir HajirTouch Input Programmierung50 Std
 Modellierung & Textur200 Std
 Animation120 Std
 Vertex Shader Programmierung85 Std
 Programmierung der Features180 Std
   
Oskar ZajacVertex Shader Programmierung80 Std
 Highscore Server105 Std
 Programmierung der Features220 Std
 Modellierung & Textur50 Std
   
Peter SokolovAnimation95 Std
 Musik60 Std
 GUI155 Std
   

 


 

 

 

Space contributors

 

  • No labels
Write a comment…