No Way Out

Eine Projektarbeit von Timo Eberl & Niklas Führer, TGI-J1, Schuljahr 2018-19.

 

Problembeschreibung

Menü-Design

Das Ziel ist ein Spiel mit einer ordentlichen, übersichtlichen, und umfangreichen Menüsteuerung. Der Fokus liegt dabei vor allem auf dem Design des Menüs und des In-Game-Overlays. Außerdem soll ein kurzes Rätsel-Level durch durchdachtes Leveldesign überzeugen, worauf in Punkt 3.2.4.1 noch genauer eingegangen wird.
Im Hauptmenü des Spiels soll es neben der Option für den Start des Spiels eine Anleitung, Credits und ein Einstellungsmenü geben. Einstellungsmöglichkeiten sind die Änderung der Tastenbelegungen und die Anpassung der Lautstärke, Sprache und Schwierigkeit. Im Pausemenü kann man neben den Möglichkeiten zum Hauptmenü zurückzukehren oder das Spiel zu verlassen auch noch seine Lautstärkeeinstellungen anpassen.

Level-Aufbau

Der Spieler befindet sich innerhalb einer Pyramide, in der er sich durch Tastatureingaben bewegen kann. Die Aufgabe im Spiel ist es einen Weg durch die Pyramide zu finden. Dazu muss der Spieler in einem Raum durch ein Labyrinth mit beweglichen Wänden den Weg zur Mitte des Labyrinths finden. Die Wände können mithilfe verschiedenfarbiger Schalter gedreht werden. Dabei drehen sich jeweils die Wände mit der Farbe des Schalters um 90°.

Levelgestaltung

Schwierigkeitsstufe Schwer

schwer

Hat man die Schwierigkeit zuvor auf „Schwer“ gesetzt hat man nun eine begrenzte Sichtweite. Man kann nur ein kleines Stück über Mauern schauen und es wird um einiges schwerer sich einen Überblich über das Level zu verschaffen. Man kann jederzeit zum Hauptmenü zurückkehren und die Schwierigkeit umändern.

Schloss knacken

 

Schloss

Ist man in der Mitte des Labyrinths angekommen muss man nun ein Schloss knacken. Dazu muss man 3 Platten so drehen, dass sie ein Bild ergeben. Mit der Hilfeeinblendung zur Steuerung in der Hinweise-Einblendung des Overlays ist die Steuerung auch kein Problem mehr. Diese simple Aufgabe soll für einen Wow-Effekt sorgen, sobald man das Bild erkennt, das sich beim Drehen ergibt. Nach Abschluss wird man in das Hauptmenü zurückgeworfen, die Entwicklung an einem weiteren Level, in das man dann gelangen sollte läuft weiter.

Klassendiagramm

Klassendiagramm No Way Out

Beschreibung Klassendiagramm

Das Klassendiagramm enthält nur einen groben Überblick und bei weitem nicht alle Variablen und Objekte.
Die Klasse „Variables“ dient zur einfachen Abfrage verschiedener statischer Variablen und Objekten aus alles anderen Klassen.
Die Klassen Controller für Menü-Szenen verwenden alle dasselbe Objekt „language“, um alle Strings, die Text beinhalten abzufragen. Außerdem benötigen die Controller für das Hauptmenü und für die Level Zugriff auf die Lautstärke und die Objekte der Klasse MediaPlayer, da dort Sounds abgespielt und angepasst werden.
In Menüs können beliebig viele Objekte der Klassen „FadeInTransition“ und „FadeOutTransition“ erstellt werden.
Von der abstrakten Superklasse „Language“ wird geerbt. Language-Objekte speichern Strings mit Texten, die bei Sprachänderungen geladen werden. In der Variablen-Klasse befindet sich ein Objekt „language“ und ein Objekt der Klasse LanguageEN. Es können Objekte weiterer Sprachen bestehen. Wird die Sprache geändert wird das Objekt „language“ gleich des Objekts der entsprechenden Sprache gesetzt. Aus dem Objekt „language“ können daher jederzeit von überall die aktuellen „Strings“ für die entsprechenden Buttons oder Textfelder geladen werden.
Von der abstrakten Superklasse „Character“ wird auch geerbt. Es gibt mehrere Charaktere, die erben. Jeder Charakter hat dabei unterschiedliche Eigenschaften gespeichert. Mit manchen dieser Eigenschaften wird noch gar nicht gearbeitet, da sie erst für weitere Level gedacht sind. Auch ist es noch nicht möglich den Charakter zu wechseln, Objekte mit den entsprechenden Eigenschaften bestehen jedoch schon in der Variablen-Klasse. ImageViews und Rectangles sind Teile der Klasse „Character“.
In der Klasse „Variables“ bestehen außerdem Objekte der Klassen „Hud“ und „Lock“. In diesen Objekten werden Objekte gespeichert, die Teil der Szene sind. Der FrameTimer und die Controller der Level können daher jederzeit auf diese zugreifen und verändern.
Der FrameTimer ist für die Positionsänderung von Wänden, Charakterbewegung und für die Anpassung des Overlays zuständig. Daher werden die Positionen der Wände und Knöpfe vom Controller des Labyrinths gesetzt. Außerdem muss er auf den Charakter und das Hud-Objekt in der Variablen-Klasse zugreifen.
 

  

Tags