Minecraft VR

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

MinecraftVR ist ein interaktives Sandbox-Spiel, angelehnt an das bekannte Computerspiel Minecraft.

Idee

Unser Gedanke war die Interaktion zwischen dem Spieler und der Spielwelt zu verstärken und ein Gefühl des "Eintauchens" in die Welt von Minecraft mittels virtueller Realität zu ermöglichen.

Dani tumb.PNG

Spielbeschreibung

In MinecraftVR befindet sich der Spieler in der First-Person-Perspektive. Die Steuerung erfolgt über die HTC Vive (VR-Brille) und zwei Motion Controller. Mit Hilfe der Controller lassen sich diverse Blöcke (Stein, Erde, Gras, Holz), so genannte Cubes, in der Welt platzieren, verschieben und wieder entfernen. Dadurch kann man, wie in unserem Vorbild Minecraft, eine Welt nach eigenem Belieben modellieren.

Aufbau

MinecraftVR Aufbau.PNG

Verwendet wurden

  • Desktop PC mit Windows 10
  • Unreal Engine 4.13
  • HTC Vive Headset (incl. zwei Motion Controller, zwei Basisstationen)

Der Spieler befindet sich zu Spielbeginn in der Mitte des Spielfelds. Die Basisstationen tracken die VR-Brille und die Motion Controller.

Umsetzung

Realisiert wurde das Projekt über die Unreal-Engine 4 von Epic Games.

Spielwelt

Vom Spieler selbst sind nur die Hände zu sehen. Diese haben mir modelliert und mit einer Hautfarbenen Textur versehen. Als Spielwelt haben wir eine Fläche aus sechs großen Feldern erstellt, die im virtuellen Raum fast unendlich wirken. Für die Textur haben wir hierfür Gras in Minecraft-Optik verwendet. Anschließend haben wir ein Schild modelliert, auf das wir eine selbsterstelle Textur mit der vollständigen Spielsteuerung gelegt haben. Dadurch hat der Spieler einen einfacheren Einstieg in die Welt. Die Beleuchtung und Oberflächenbeschaffenheit haben wir dann durch Parametrierung an unsere Bedürfnissen angepasst.

Welt glänzen.PNG Welt jetzt ingame.PNG

Cubes

Unsere vier Basiscubes sind:

  • Erde
  • Stein
  • Holz
  • Gras

jeweils in Minecraft-Optik

Implementierung

Die Implementierung der Spielmechanik erfolgt über so genannte Blueprints. Diese ermöglichen eine grafische Programmierung durch die Verbindung von Funktionen mithilfe von Knoten (Nodes).

Movement

Die Bewegung des Spielers einschließlich Rotation und Neigung des Kopfes erfolgt über das Tracking der HTC Vive. Der Spieler hat die Möglichkeit sich in Z-Richtung zu bewegen (fliegen), um höher gelegene Projekte angehen zu können. Zusätzlich haben wir eine Teleportfunktion implementiert. Diese besteht zum einen aus einer Line-Trace-Funktion in Blickrichtung des Spielers und zum anderen aus der eigentlichen Teleportfunktion.

Teleport event.PNG


Cube-Auswahl und Platzierung

Zunächst wird im Blueprint ein Array angelegt vom Datentyp Actor Klasse. Ein Actor ist ein Objekt, welches in ein Level platziert werden kann, in unserem Fall ein Cube. Des Weiteren werden die Controller-Tasten belegt. Wird die entsprechende Taste gedrückt, wird über die "SET"-Funktion die jeweilige Actor-Klasse zugeordnet und über "MakeArray" ein entsprechender Index zugewiesen. Über "GET" wird der Actor des jeweiligen Index zurückgegeben. Dadurch weiß "Spawn Actor", welcher Cube gerade angewählt ist.

Die "Spawn Actor"-Funktion nimmt eine Actor-Klasse und spawnt die Instanz der Klasse. Durch Spawn-Transform wird die Position definiert, an der der Actor erscheinen soll. Für die Spawn-Position dient die "Right Static Mesh"-Variable, welche im Spiel unserer rechten Hand (Motion Controller) entspricht. Davon wird durch "GetWorldLocation" die Position als Vector dargestellt und im Zwischenschritt der Vector in einen "Transform"-Typ konvertiert, da nur dieser mit dem "Spawn-Transform"-Eingang kompatibel ist. Durch den Trigger R vom Motion Controller wird der Cube letztendlich platziert.

Das Entfernen der Cubes basiert auf einem ähnlichen Prinzip wie der Spawn. Liegt die Location der linken Hand in einer Collision-Detection-Box, so wird das Objekt in der Box gelöscht. Jeder Cube besitzt eine C-D-Box die seiner Größe entspricht.


Cubes select.PNG

Spawn jetzt.PNG

Problematik

  • Ursprünglich sollte der Boden aus denselben Blöcken bestehen, die auch der Spieler platziert. Diese benötigten jedoch mehr Arbeitsspeicher als uns zur Verfügung stand, weswegen wir uns für die vorher beschriebene Variante entschieden haben.
  • Der Cube-Spawn sollte über eine Line-Trace Funktion realisiert werden. Hierbei wird eine Linie vom Trace-Start bis zum Trace-End verfolgt. Trifft sie auf ein Hindernis wird eine Rundungsfunktion aufgerufen, die den Auftreffpunkt des Line-Tracings in ein Raster legt. Auf diesem Rasterpunkt wird dann der Cube platziert. In einer Spielversion (ohne VR) mit Maus und Tastatur, die wir extra zum Implementieren des Cube Spawns angelegt haben funktionierte dies einwandfrei. Im VR Modus konnten wir diese Art des Spawns jedoch nicht umsetzen.

Ausblick

Leider konnten wir nicht alle geplanten Features implementieren, da es zu umfangreich für die Zeitspanne des Praktikums war. Diese Ideen hätten wir noch gerne in unserem Projekt realisiert:

  • Mehrere verschiedene Blöcke
  • Erstellung der Welt aus Blöcken statt Feldern
  • Platzierung der Cubes auf Raster
  • Crafting-System mit Inventar-System
  • Auswahl der Cubes über Pie-Menu (Auswahlrad)

Weblinks