Im interaktiven Spiel „Upstream“ begleiten die Spielenden einen Atlantischen Lachs auf seiner Wanderung flussaufwärts durch den Rhein. Dort gilt der Lachs seit 1959 als ausgestorben, weshalb seine Wiederansiedlung heute aktiv gefördert wird. Das Spiel vermittelt die Ursachen seines Verschwindens und zeigt, welche Voraussetzungen für eine erfolgreiche Rückkehr geschaffen werden müssen. In the interactive game ”Upstream”, players accompany an Atlantic salmon on its journey upstream through the River Rhine. The species has been considered extinct in the Rhine since 1959, making its reintroduction the focus of ongoing conservation efforts. The game explores the reasons behind the salmon's disappearance and highlights the conditions that must be met to ensure its successful return.
01. Filmische Dokumentation
02. Bilder der Umsetzung
03. Pitch Deck
04. Userflow
Userflow im Ausstellungskontext
05. Link zur Webanwendung
Der Spiel-Prototyp auf Itch.io
____________
Designprozess
Research Themenraum
Vibe Coding Übung
Research Fokus
Mögliche Umsetzung
Pitch Deck
Game Engine & Spielplanung
Entwicklung, Inhalte & Fokus
Skizze der Inhalte
Moodboard
Vergleich möglicher Game Engines
Start in Godot
Um mich in Godot einzuarbeiten habe ich ein Tutorial nachgebaut. Dabei konnte ich eine simple Welt zeichnen, die Grundfunktionen kennenlernen und erste bewegliche Plattformen definieren.
Nützliches Tutorial für Anfänger: https://youtu.be/LOhfqjmasi0?si=sHEtXfYl538XiJZT
Levelplan & erste Zeichnungen
Die Level sollen an konkreten Orten entlang des Rheins stattfinden, weshalb ich nochmal in die Recherche gegangen bin. So konnte ich festlegen, welche Umstände an welchen Orten auftreten sollen.
Assets
Ich habe mit dem Zeichnen erster Assets begonnen. Später habe ich mich noch für eine andere Farbgebung entschieden und den Pixelart-Stil angepasst.
Die Hintergründe habe ich so angelegt, dass sie sich beim sidescrollen immer wiederholen, damit im Spiel keine Kanten oder Übergänge zu sehen sind.
Bewegung
Parallax-Effekt
Ich habe versucht einen Parallax-Effekt für den Hintergrund zu erzeugen. Dabei habe ich eine veraltete Funktion in Godot verwendet (ParallaxBackground + ParallaxLayer), bei der es zu Fehlern beim Wiederholen der Texturen kommen kann. Mittlerweile bietet Godot die „Parallax2D“-Node, die den Prozess vereinfachen sollte.
Referenz: Der Ursprung der Parallax-Technologie; Walt Disney's MultiPlane Camera
https://youtu.be/YdHTlUGN1zw?si=9j2QnarWSluM42i5
Character Movement
Die Bewegung des Characters wird durch ein Script definiert. Godot bietet ein standard Bewegungsscript an, was man dann selbst anpassen kann. Man beginnt mit einer Pfeiltastensteuerung.
Story & Assets
Assets
Am besten legt man seine gezeichneten Assets in Sprite-Sheets und Tilemaps an. So bleibt die File-Menge gering und die Spielperformance wird nicht beeinträchtigt.
Für meine Assets wollte ich einheitliche Farben verwenden. Auf der Website „Lospec“ gibt es eine große Auswahl an Farbpaletten speziell für Pixelart. Dort habe ich die „Resurrect 64 Palette“ von Kerrie Lake ausgewählt.
https://lospec.com/palette-list/resurrect-64
Levelbau und -switch
Levelswitch
Am besten kann zwischen verschiedenen Leveln gewechselt werden, wenn es eine „Manager-Node“ gibt und separate Nodes für die verschiedenen Level. Der Switch wird dadurch ausgelöst, dass der Player eine Area2D mit Collisionshape berührt.
Levelbau
Da das Level im Ruhrgebiet spielen soll, wollte ich die starke Verschmutzung des Wassers verdeutlichen. Dafür habe ich passende Farben gewählt, den Flusslauf wie eine Art Kanal aussehen lassen und viele Hindernisse eingebaut. Diese sind aber zum Teil sehr schwer zu umgehen, weshalb ich zwischen den Objekten etwas mehr Platz lassen werde.
Steuerung
Bisher habe ich den Character über Pfeiltasten gesteuert. Es war auch geplant Touch-Pfeiltasten für die finale Version einzubauen. Im Kurs haben wir aber beschlossen, dass ein virtueller Joystick für mein Vorhaben sinnvoller ist. So bekommt man auch ein besseres Gefühl für die Steuerung.
Für Mobile Games ist es typisch, den Joystick auf der linken Seite des Screens zu platzieren. Rechts gibt es meist weitere Funktionen wie springen, sprinten, schießen, etc.
Slowzone
Die für mich einfachste Lösung, um starke Gegenströmung darzustellen, war es im Script die engine time für einen bestimmten Bereich herunterzusetzen.
Screencast
Ausblick
Wodurch könnte das Spiel mit mehr Erfahrung und Zeit profitieren? Insbesondere mit Blick auf Informationsgehalt und Belohnungsmechanismen
Emotionalität
- Dialog-Bubbles, Lachs stellt fragen auf die man antworten kann (ja/nein)
- Rückblick: Lachs erzählt von der ersten Reise flussabwärts; Entwicklungsstufen des Lachses könnten vorgestellt werden
- Alterung während der Reise, Ändern des Aussehens
- Lebensende begleiten: Lachse wandern meist nur einmal an ihren Laichplatz und versterben danach
Achievement-Badges für abgeschlossene Level / Aufgaben