Hauptbild
Hauptbild

AVZ-Run ist ein 3D-Browserspiel, das wir in einer Gruppe von 10 Studierenden mit JavaScript und THREE.js im Rahmen des dreiwöchigen Programmierpraktikums zur Vorlesung Computergrafik im Sommersemester 2016 an der Universität Osnabrück entwickelt haben.

/images/avz_run.png

Das 3D-Escape-Game spielt im damals leerstehenden Allgemeinen Verfügungszentrum (AVZ) der Universität Osnabrück. Wie allgemein bekannt, ist das AVZ brand- und einsturzgefährdet, und halbjährliche Brandschutzübungen sowie von der Decke fallende Gebäudeteile gehören zur Tagesordnung. Im Spiel AVZ-Run wird das Ganze ein Stück weitergetrieben: Diesmal ist das Gebäude bereits vollkommen zerstört, und das Einzige, was der Spieler, ein armer am Computer eingeschlafener Hiwi, tun kann, ist, so schnell wie möglich zu entkommen. Dabei muss er sich mit verschlossenen Türen, verschluderten Transpondern, wildgewordenen Robotern und einer schleichenden Rauchvergiftung herumschlagen, um Stockwerk für Stockwerk nach unten zu gelangen.

Das Programmierpraktikum dauerte drei Wochen, in denen wir uns jeden Morgen zu einer Gruppenbesprechung trafen. Entwickelt wurde das Spiel mit dem JavaScript-Framework Three.js, das hardwarebeschleunigte 3D-Grafik direkt im Browser ermöglicht, ganz ohne zusätzliche Plugins. Bei unserer ersten Besprechung legten wir die folgenden Rahmenbedingungen für das Spiel fest:

  • Möglichst realistisches 3D-Design
  • Bewegungsfreiheit für den Spieler mit Springen und Ducken
  • First-Person-Kamera
  • Benutzeroberfläche mit optionalem Inventar
  • Interaktionen mit Objekten
  • Rätsel, die gelöst werden müssen
  • Storymodus
  • Zeitlimit für das Spiel
  • Einfache Erweiterbarkeit um zusätzliche Level

Um eine möglichst starke Immersion zu erreichen, entschieden wir uns für die First-Person-Perspektive. Dadurch soll sich der Spieler stärker in das Spielgeschehen hineinversetzt fühlen als beispielsweise bei einer Third-Person-Ansicht.

Wir haben einen grundlegenden Storymodus implementiert, in dem sich der Spieler durch mehrere Stockwerke des brennenden Gebäudes kämpfen muss. Die Spielmechanik basiert darauf, dass der Spieler Rätsel lösen muss, um den Weg zum nächsten Level freizuschalten. Dafür muss er mit verschiedenen Objekten interagieren, Gegenstände einsammeln und diese an den richtigen Stellen einsetzen. Bestimmte Gegenstände können dabei in einem Inventar mitgeführt werden.

An bestimmten Stellen führt der Spieler außerdem innere Monologe, die Hinweise auf die nächsten Schritte geben und so den Frustfaktor reduzieren sollen. Für zusätzlichen Zeitdruck sorgt der stetig dichter werdende Rauch: Durch die zunehmende Rauchvergiftung verliert der Spieler langsam Lebenspunkte und muss das Gebäude verlassen, bevor diese aufgebraucht sind.

Neben dem eigentlichen Spiel haben wir einen Level-Editor entwickelt, mit dem sich weitere Stockwerke erstellen und einfach vor das bestehende Erdgeschoss setzen lassen.

groundfloor_model.png

Das Erdgeschoss des AVZ haben wir von Hand modelliert, um das tatsächliche Gebäude möglichst originalgetreu nachzubilden. Das Startlevel hingegen demonstriert, wie einfach sich mit unserem selbst entwickelten Level-Editor neue Umgebungen erstellen lassen. Mit diesem können beliebige polygonale Formen erstellt und miteinander kombiniert werden. Die fertigen Level werden anschließend in das vom Spiel verwendete XML-Format exportiert.

Die verschiedenen Gegenstände im Spiel, darunter Axt, Feuerlöscher, Schlüssel, Schwamm und Medikit, haben wir ebenfalls selbst in Blender modelliert.

Bei der technischen Umsetzung haben wir zahlreiche Funktionen der Rendering-Pipeline von THREE.js eingesetzt, unter anderem für Feuereffekte, Kollisionsboxen, die Bewegung des Spielers, Raucheffekte, Punktlichtquellen und interaktive Objekte. So entstand innerhalb der drei Wochen ein vollständiges 3D-Escape-Game mit eigener Spielwelt, verschiedenen Rätseln, einer Physik- und Kollisionssimulation sowie einem erweiterbaren Levelsystem.

Hier spielen!

Gameplay-Video


Kontext

Universität

Zielgruppe

Technisch Kreativ

Zusammenarbeit

Im Team

Aufwand

Hoch

Status

Abgeschlossen