Cover

Inhalt

Titelei

Impressum

Inhalt

Vorwort

1 Einleitung

1.1 Virtual Reality

1.2 Ziel des Buches

1.3 Unterstützte Virtual-Reality-Brillen

1.4 Unity

1.4.1 Die verschiedenen Versionen von Unity

1.5 Was brauche ich?

1.6 Weiterentwicklung der Technik

1.7 Online-Zusatzmaterial

2 Einführung in Virtual Reality

2.1 Begriffserklärungen

2.2 Augmented Reality, Mixed Reality und Virtual Reality

2.3 Virtual Reality ist tot – lang lebe Virtual Reality

2.4 Unterstützte Virtual-Reality-Brillen

2.4.1 Oculus Rift

2.4.2 HTC Vive

2.4.3 Samsung GearVR

2.4.4 Google Cardboard (nur teilweise unterstützt)

2.4.5 Google Daydream

2.5 Andere VR-Brillen

2.5.1 Microsoft Mixed Reality

2.5.2 PlayStation VR

2.5.3 Razer OSVR

2.6 Spiele, Anwendungen, Demos und Erfahrungen

2.7 Seated, Standing & Room Scale

2.8 „Bekannte“ Probleme

2.8.1 Auflösung & Fliegengitter-Effekt

2.8.2 Hardwareanforderungen

2.8.3 Kurz- und Weitsichtigkeit

2.8.4 Simulator Sickness

3 Quickstart: 3D-Entwicklung mit Unity

3.1 Installation

3.1.1 Die Unity ID

3.1.2 Android SDK & Java Development Kit(GearVR, GoogleVR)

3.2 Der erste Start

3.3 Ein neues Projekt anlegen

3.4 Die Unity-Oberfläche

3.4.1 Drag & Drop

3.4.2 Project Browser

3.4.3 Console

3.4.4 Hierarchy

3.4.5 Scene View

3.4.6 Inspector

3.5 Scenes

3.5.1 Unity in der dritten Dimension

3.5.2 GameObjects

3.5.3 Prefabs

3.6 Die wichtigsten Components

3.6.1 Camera und Audio Listener

3.6.2 Lights

3.6.3 Mesh Filter und Mesh Renderer

3.6.4 Collider

3.6.5 Rigidbody

3.6.6 Audio Source

3.6.7 Scripts/Behaviours

3.7 Assets

3.7.1 Dateien importieren

3.7.2 Unity Packages

3.7.3 Asset Store

3.7.4 Import Settings

3.8 Projektvorbereitung(GearVR, GoogleVR)

3.8.1 Zielplattform zu Android wechseln

3.8.2 Externe Tools angeben (Android SDK, JDK)

3.9 Test Scene erstellen und starten

3.9.1 Rohbau für den Raum erstellen

3.9.2 Scene speichern

3.9.3 Licht anpassen

3.9.4 Collider hinzufügen

3.9.5 Möbelstücke einräumen

3.9.6 Bücher hinzufügen

3.9.7 Weitere Details

3.9.8 Lichter und Lichteinstellungen optimieren

3.9.9 Spieler positionieren

3.10 VR-Unterstützung aktivieren

3.10.1 Unitys VR-Unterstützung aktivieren

3.11 Player Settings anpassen(GearVR, GoogleVR)

3.12 Anti-Aliasing aktivieren

3.13 Die Scene in VR testen

3.13.1 Am PC in VR testen(Oculus Rift, SteamVR)

3.13.2 Auf dem Smartphone in VR testen(GearVR, GoogleVR)

3.14 So geht es weiter

4 Dos and Don'ts – Game-Design für Virtual Reality

4.1 Beispielprojekt

4.2 Immersion

4.2.1 Immersion brechen

4.3 Positional Tracking

4.3.1 Mobile VR-Brillen

4.4 Locomotion

4.4.1 Klassische Locomotion

4.4.2 Teleport Locomotion

4.4.3 Ohne künstliche Locomotion

4.4.4 Andere Eingabemethoden für das Laufen

4.5 Lebendige Spielwelt erschaffen

4.6 User Interface

4.6.1 Distanz und Größe

4.7 Aufmerksamkeit lenken

4.7.1 Objekte untersuchen

4.7.2 Ereignisse nicht verpassen

4.8 Uncanny Valley

4.8.1 Auswirkung für dich

4.9 Sound Design und Spatial Sound

4.9.1 Spatial Sound

4.9.2 Spatial-Audio-Engines

5 C#-Scripte für Unity programmieren

5.1 C#, .Net und Mono

5.2 Grundlagen

5.2.1 C#-Syntax

5.2.2 Kommentare

5.2.3 Variablen

5.2.4 Methoden

5.2.5 Klassen

5.2.6 Dynamische Datentypen

5.2.7 Statische Methoden und statische Variablen

5.2.8 Vererbung

5.2.9 Namespaces

5.2.10 Lebenszyklus von Variablen

5.2.11 Sichtbarkeiten

5.2.12 Ausnahmen ‒ „Exceptions“

5.3 Erster Test

5.3.1 Microsoft Visual Studio 2017

5.3.2 Script, Behaviour, Component und ihr Aufbau

5.3.3 Debug-Ausgaben in die Console

5.3.4 Eigenes Script testen

5.3.5 Notation von Methoden und Variablen in diesem Buch

5.4 Erweiterte Grundlagen

5.4.1 Bedingungen und Verzweigungen

5.4.2 Schleifen

5.4.3 Eigenschaften

5.4.4 Dynamische Listen

5.5 Unity-spezifische Grundlagen

5.5.1 Zufallswerte

5.5.2 Editor-Eigenschaften

5.5.3 MonoBehaviour Lebenszyklus-Methoden

5.5.4 MonoBehaviour-Event-Methoden

5.5.5 Auf GameObjects zugreifen

5.5.6 GameObjects via Code erstellen

5.5.7 GameObjects zerstören

5.5.8 Transforms: GameObjects bewegen

5.5.9 Auf andere Components zugreifen

5.5.10 Components zu GameObject hinzufügen

5.5.11 Components entfernen

5.5.12 Parallele Methoden mit Coroutines

5.5.13 Scripted-Event-Beispiel

5.5.14 Methoden verzögert aufrufen mit Invoke

5.6 Problemlösung

5.6.1 Wort im Code ist rot unterstrichen

5.6.2 Fehler in der Console im Editor

5.6.3 Fehler in der Console, während das Spiel läuft

5.6.4 „Can't add script“-Meldung oder Script ist nicht im „Add Component“-Menü vorhanden

5.6.5 Sonstige Fehler

6 Erweiterte Unity-Einführung

6.1 Licht, Schatten und Lightmapping

6.1.1 Global Illumination

6.1.2 Farbräume

6.1.3 Environment Light

6.1.4 Lichter in der Scene

6.1.5 Emissive Materials

6.1.6 Light Probes

6.1.7 Reflexionen

6.1.8 Lighting-Fenster

6.1.9 Light Explorer

6.2 Shader

6.2.1 Der Standard Shader

6.2.2 Mobile Shader

6.3 Audio

6.3.1 AudioSources

6.3.2 AudioSources via Script steuern

6.3.3 Temporäre AuidoSource via Script

6.3.4 Reverb Zones

6.3.5 Audio Mixer

6.4 Tastatur und Gamepad-Eingaben lesen

6.4.1 Der Input-Manager

6.4.2 Virtuelle Tasten und Achsen

6.4.3 Konfiguration einer Achse

6.4.4 Gamepad- und Tastatureingaben erfassen

6.5 Physik

6.5.1 Collider

6.5.2 Rigidbody

6.5.3 Kräfte und Beschleunigung

6.5.4 Physics Joints ‒ Verknüpfungen

6.5.5 Kollisionen und Trigger erkennen

6.5.6 Raycasts

6.5.7 Character Controller

6.6 Partikeleffekte

6.6.1 Partikelsysteme

6.6.2 Particle-Effect-Steuerung

6.6.3 Module des Particle Systems

6.6.4 Particle Effect Editor

6.6.5 Particle Systems via Script steuern

6.6.6 Standard-Partikeleffekte

6.7 Landschaften mit Terrains erstellen

6.8 Animation System

6.8.1 Animation Workflow

6.8.2 Humanoide Animationen und Avatare

6.8.3 Modelle & Animationen importieren

6.8.4 Animation Controller

6.9 Wegfindung

6.9.1 Wegfindungssystem einrichten

6.9.2 Grundlagen

6.9.3 NavMeshs berechnen

6.9.4 NavMeshs verbinden

6.9.5 Dynamische Hindernisse

6.9.6 NavMeshAgent erstellen

6.9.7 NavMeshAgent über Script steuern

6.9.8 Erweiterte Beispiele

6.10 Savegames ‒ Daten speichern und laden

6.11 Performance optimieren

6.11.1 Batching

6.11.2 Performance im Auge behalten

6.11.3 VR-Optimierungs-Checkliste und Grenzen

6.12 User Interface ‒ Quickstart

6.12.1 User Interface im World Space erstellen

6.12.2 User Interface in VR bedienen

7 Die Virtual-Reality-SDKs

7.1 Unity-interne VR-Unterstützung

7.1.1 Unitys interne VR-Unterstützung aktivieren

7.1.2 Interne VR-Unterstützung in der Scripting-API

7.1.3 InputTracking

7.1.4 VRDevice

7.1.5 VRSettings

7.2 Oculus Integration for Unity(Rift und Gear)

7.2.1 Download und Import

7.2.2 Prefabs

7.2.3 Gamepad-, Headset- und Touch-Eingaben lesen

7.2.4 Haptisches Feedback

7.2.5 Oculus Avatar SDK

7.2.6 Mehr Infos und Hilfe

7.3 SteamVR (u. a. HTC Vive)

7.3.1 Download und Import

7.3.2 Prefabs

7.3.3 Eingaben der Controller lesen

7.3.4 Haptisches Feedback

7.3.5 Interaktionsbeispiel aus The Lab (u.a. Longbow, Teleport)

7.3.6 Mehr Infos und Hilfe

7.4 GoogleVR SDK

7.4.1 Download und Import

7.4.2 Prefabs

7.4.3 Eingaben des Daydream Controllers lesen

7.4.4 Erweiterte Editorfunktionen fürs Testen

8 Beispielprojekte ‒ Einleitung

9 Bow and Arrow Castle Defense – GoogleVR mit Controller

9.1 Der Start

9.2 Die Kernmechanik ‒ Bogenschießen

9.2.1 Scene vorbereiten

9.2.2 Einfaches Scene-Design

9.2.3 Spieler konfigurieren und Daydream Controller einbinden

9.2.4 Schusskraft für den Bogen

9.2.5 Ein Pfeil für den Bogen

9.2.6 Pfeile nachladen

9.2.7 Dynamische Schusskraft

9.2.8 Flugkurve Vorschau – Add-on

9.2.9 Schaden und zerstörbare Ziele

9.3 Game- & Level-Design

9.4 Game Manager

9.5 Gegner – Orks!

9.5.1 NavMesh erstellen

9.5.2 Ork-Animator Controller

9.5.3 Die künstliche Intelligenz

9.5.4 Der Ork

9.5.5 Prefab erstellen und platzieren

9.6 Abschluss

9.6.1 Umsetzung dieses Beispiels für andere VR-Brillen

10 Space Battle ‒ Oculus Rift & SteamVR

10.1 Der Start

10.1.1 Scene vorbereiten

10.2 Die Kernmechanik ‒ ein Raumschiff fliegen

10.2.1 Spieler-Raumschiff erstellen

10.2.2 Raumschiff-Steuerung

10.2.3 Starfield/Weltraumstaub

10.2.4 Schadenssystem & Plasmakanone

10.3 Feinde und Verbündete

10.3.1 KI-Raumschiff

10.3.2 Die künstliche Intelligenz

10.4 Abschluss

10.4.1 Umsetzung dieses Beispiels für andere VR-Brillen

11 Dungeon Crawler ‒ GearVR

11.1 Der Start

11.1.1 Osig und Unity2017.1.0f3-Patch einfügen

11.2 Einen Dungeon bauen

11.2.1 Die Bauteile

11.2.2 Level-Design

11.2.3 Audio: Environment-Loop

11.3 Occlusion Culling

11.4 Kernmechanik ‒ Laufen, Kämpfen, Interagieren

11.4.1 Spieler erstellen

11.4.2 Bewegungen entlang des Gitters

11.4.3 Interaktive und lebendige Objekte

11.4.4 Die Spielerfunktionen

11.4.5 Spielereingaben lesen

11.4.6 Player fertigstellen

11.5 Gegner: Goblins

11.5.1 Die künstliche Intelligenz

11.5.2 Das GameObject und Prefab

11.5.3 Bevölkerung des Dungeons mit Goblins

11.6 Pickups: Kristalle

11.7 Dungeon-Ausgang

11.8 Interaktive Hindernisse

11.8.1 Falle: Stacheln

11.8.2 Rätsel: Schalter und Tore

11.9 Abschluss

11.9.1 Umsetzung dieses Beispiels für andere VR-Brillen

12 Sci-Fi-Stealth-Shooter ‒ Oculus Rift mit Oculus Touch und SteamVR

12.1 Der Start

12.2 Trainings-Areal anlegen

12.3 Player-GameObject erstellen

12.3.1 Oculus SDK: Player-GameObject erstellen

12.3.2 SteamVR SDK: Player-GameObject erstellen

12.3.3 Character Controller

12.3.4 Locomotion – klassisch und teleportieren

12.3.5 Eingaben lesen und Methoden aufrufen

12.3.6 Nach Gegenständen greifen

12.4 Lebensenergie verwalten

12.4.1 Lebensenergie des Spielers und Game Over

12.5 Laserpistole

12.5.1 Das GameObject vorbereiten

12.5.2 Die Laserpistolen-Funktion

12.5.3 Der Laserstrahl

12.6 Roboter-Gegner

12.6.1 EnemyAi – wie funktioniert die KI?

12.6.2 Roboter-GameObject anlegen

12.6.3 Trigger Collider ignorieren

12.7 Level erstellen

12.7.1 Level-Ende

12.8 Abschluss

13 VR-Spiele teilen, präsentieren und Feedback erhalten

13.1 Spieleidee entwickeln

13.2 VR-Spiele Builds erstellen und teilen

13.3 Feedback erhalten und Spiel bewerben

13.3.1 Tipps für das Präsentieren von Virtual Reality

13.4 Spiel veröffentlichen

13.5 Kostenlose Assets

14 Schlusswort

Daniel Korgel

Virtual Reality-Spiele entwickeln mit Unity®

Grundlagen, Beispielprojekte, Tipps und Tricks

Der Autor:

Daniel Korgel, Dortmund

Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht.

Ebenso übernehmen Autor und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen­ und Markenschutz­Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.

Lektorat: Sylvia Hasselbach
Copyediting: Sandra Gottmann, Münster-Nienberge
Umschlagdesign: Marc Müller-Bremer, München, www.rebranding.de
Umschlagrealisation: Stephan Rönigk

Print-ISBN 978-3-446-45147-6
E-Book-ISBN 978-3-446-45372-2

Verwendete Schriften: SourceSansPro und SourceCodePro (Lizenz)
CSS-Version: 1.0

Font License Zurück zum Impressum

Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

Vorwort

Was war der größte Traum deiner Kindheit? Mit bezahlbaren Virtual-Reality-Brillen, deren Fokus auf immersivem Entertainment liegt, ist für mich mein Kindheitstraum wahr geworden. Lange war es nur eine Fantasie aus Sci-Fi-Büchern und eine Technologie, die Anfang der 90er gescheitert war. Doch als ich 2012 das erste Mal von der Oculus Rift hörte, schien der Traum plötzlich nicht mehr so fern und ich verbrachte viel Zeit damit, mich immer intensiver mit dem Thema zu beschäftigen. Schnell reichte mir das nicht mehr: Ich wollte andere ebenfalls für das Thema begeistern und helfen, das Thema leichter zugänglich zu machen. Deswegen habe ich 2012 Bloculus.de gegründet, wo ich mehrmals die Woche über die aktuellen Neuigkeiten und Spekulationen der Szene schrieb. Heute, wo jede IT-News-Seite über das Thema berichtet, ist mein Blog nicht mehr vonnöten, um Neuigkeiten zu verbreiten. Deshalb begann ich, mehr und mehr aus der Sicht eines VR-Entwicklers zu schreiben und so meinen Lesern eine alternative Perspektive zu bieten.

Ich hatte es mir schon häufig vorgestellt, aber nie hätte ich gedacht, dass ich mal wirklich ein Buch schreibe. Umso erfreuter war ich über den Anruf von Sylvia Hasselbach vom Hanser Verlag, mit der Frage, ob ich Interesse hätte, ein einsteigerfreundliches Buch über Virtual-Reality-Entwicklung zu schreiben.

Es hat Spaß gemacht, all dieses Wissen niederzuschreiben, und der Gedanke, es mit vielen Menschen zu teilen, war sehr motivierend. Aber es war nicht immer leicht, manche Wochen waren sehr anstrengend. Umso dankbarer bin ich für jede Unterstützung, die ich erfahren habe. Danke an alle Freunde, Bekannte und meine Familie, die mich bei diesem Buch, auf die eine oder andere Weise, unterstützt haben – und wenn es nur war, dass sie dafür Verständnis hatten, dass ich mich wenig gemeldet habe, zu spät kam und zu früh wieder ging. Mein ganz besonderer Dank geht an Kathrin Zenses, die mich stets unterstützt hat und mir mit viel Verständnis begegnet ist. Das alles ist nicht selbstverständlich, danke an euch!

Virtual Reality dringt immer mehr in den Massenmarkt und immer häufiger hört man die Worte: „Jetzt stell dir das mal in Virtual Reality vor …“ Mit diesem Buch möchte ich das Entwickeln für Virtual Reality jedem zugänglich machen, damit auf diesen Satz immer die Aussage folgt: „Das probiere ich mal aus!

Dortmund, September 2017

Daniel Korgel

1 Einleitung

Mit einer selbst gebauten und von Klebeband zusammengehaltenen Virtual-Reality-Brille überzeugte der 19-jährige Palmer Luckey 2011 einige wichtige Personen aus der Videospiel-Branche und erweckte so Virtual Reality aus dem Winterschlaf. Zu den überzeugten Personen gehörte unter anderem auch Doom-Erfinder John Carmack, was Luckey viel Vertrauen von Kollegen und Fans eingebracht hat. 2012 erhielt Luckey über die Crowdfunding-Plattform Kickstarter fast 2,5 Millionen US Dollar, um seine Virtual-Reality-Brille Oculus Rift zu finanzieren.

Heute, mehr als fünf Jahre später, wurde Palmer Luckeys Firma Oculus von Facebook gekauft. Neben Oculus bieten einige weitere bekannte Technikfirmen, darunter Sony, HTC, Samsung, Microsoft und Google, ihre eigenen Virtual-Reality-Brillen für Computer, Spielekonsolen und Smartphones an. Erstmals ist es jedem möglich, gute Virtual-Reality-Hardware, zu einem bezahlbaren Preis, zu kaufen. Virtual Reality wird das nächste große Ding in der Unterhaltungsindustrie.

Für viele Gamer und Technikfans wird mit bezahlbarer Virtual-Reality-Hardware ein Traum wahr. Aber einigen reicht das reine Erleben von Virtual Reality nicht: Die völlig neuen Möglichkeiten wecken den Wunsch, eigene virtuelle Welten zu erschaffen ‒ und das genau zur richtigen Zeit: Virtual Reality ist ein so junges Thema, dass die App Stores noch nicht überfüllt sind mit Kopien von bekannten Spielen. Wenn du jetzt ein innovatives VR-Spiel veröffentlichst, ist die Chance, dass du dich von der Masse der Spiele-Apps abhebst, deutlich höher als zum Beispiel mit einem 2D-Spiel für Smartphones oder den PC.

Durch moderne 3D-Engines wie Unity und Unreal ist dies heutzutage sogar ein relativ leicht realisierbarer Traum. Vor einigen Jahren hättest du noch bei null anfangen und zunächst eine eigene Grafikengine schreiben müssen. Dank dieser Engines, welche auch von großen Studios genutzt werden, kannst du dich heute vollkommen auf das eigentliche Spiel konzentrieren.

Möchte man allerdings ein gutes Virtual-Reality-Spiel veröffentlichen, muss man auch einiges beachten: Nicht jedes existierende 2D-Videospiel kann 1:1 in Virtual Reality realisiert werden. Viele jahrelang genutzte Techniken müssen neu überdacht werden, damit sie in Virtual Reality die gewünschte Wirkung erzielen. Dazu gehören zum Beispiel das Storytelling und die Art und Weise, wie man mit der virtuellen Welt interagiert. Auch etablierte Spielmechaniken, die du in jedem PC- und Konsolenspiel findest, müssen neu überdacht werden: Klebt die Waffe zum Beispiel, wie in Egoshootern üblich, an deinem Kopf, fühlt sich das in Virtual Reality komisch an.

Bei diesem immer noch jungen Thema gilt es also, ausgetretene Pfade zu verlassen und neue Wege zu ergründen.

1.1 Virtual Reality

Vergleichst du die neusten technologischen Entwicklungen mit dem, was schon vor Jahrzehnten in Science-Fiction beschrieben wurde, stellst du einige auffällige Parallelen fest: Seien es automatische Schiebetüren oder Mobiltelefone, sie existierten zuerst in Science-Fiction-Büchern und -Serien, teilweise lange bevor die Technik überhaupt denkbar war. Es war also nur eine Frage der Zeit, bis auch massenmarkttaugliche Virtual-Reality-Hardware den Sprung aus Büchern wie Neuromancer oder Snow Crash in die Realität schafft.

Doch wie sieht Virtual Reality derzeit aus? Nun, wir sind noch nicht so weit wie in dem Film Matrix, wo ein Anschluss im Nacken des Helden die Schnittstelle zu einer virtuellen Welt darstellt. In erster Linie werden heutzutage Virtual-Reality-Headsets verwendet, welche wie eine große Brille aufgesetzt werden. Virtual-Reality-Headsets werden deshalb häufig auch „Brillen“ genannt. In der Brille werden für dein linkes und dein rechtes Auge zwei getrennte Bilder angezeigt und wie bei einem 3D-Film entsteht hierdurch ein 3D-Effekt. Durch spezielle Linsen ist das Blickfeld so groß, dass es so wirkt, als würde dich die virtuelle Welt vollkommen umgeben. Dieser Eindruck entsteht zusätzlich auch dadurch, dass du dich in der virtuellen Welt umschauen kannst, indem du dich tatsächlich mit dem Kopf umsiehst. Anders als bei traditionellen Videospielen werden kein Gamepad und keine Maus hierfür benötigt.

Dieses Gefühl, wirklich in der Welt zu sein, unterscheidet Virtual Reality von einem gewöhnlichen Monitor. Es ist der Grund, warum diese Plattform, trotz der anfangs noch nicht optimalen Hardware, schon früh sehr viele Anhänger hatte. Auf keiner anderen Plattform lassen sich Ängste, Emotionen und Abenteuerlust so auf den Spieler übertragen wie in Virtual Reality.

1.2 Ziel des Buches

Mithilfe dieses Buches wirst du deine ersten Virtual-Reality-Spiele mit der Unity-Engine entwickeln und dabei lernen, wie du zukünftig eigene Ideen völlig ohne fremde Hilfe umsetzen kannst. In diesem Buch wird dir nicht nur die Handhabung von Unity und diversen VR-Entwicklerwerkzeugen erklärt, sondern auch, was du bei der Entwicklung für ein Virtual-Reality-Headset beachten musst. Zum Beispiel erhältst du auch die Antworten auf Fragen wie „Welche Effekte sind besonders beeindruckend?“, „Wie designe ich ein Virtual-Reality-taugliches Menü?" und „Was sollte ich unbedingt vermeiden?“.

Bei Virtual Reality und auch in der Softwareentwicklung allgemein ist es meiner Ansicht nach sehr wichtig, dass du nicht nur über die Dinge liest, sondern sie auch selber ausprobierst. Deswegen wirst du in den späteren Kapiteln sowohl positive als auch negative Beispiele selber auf deiner eigenen Brille ausprobieren können. Häufig versteht man erst durch Ausprobieren der Beispiele, warum sie in Virtual Reality gut funktionieren, oder warum nicht.

Der Fokus dieses Buches liegt darauf, dir zu zeigen, wie du ohne große Umwege eine gute Virtual-Reality-Erfahrung entwickeln kannst. Du wirst in diesem Buch Beschreibungen zu allen Funktionen finden, die du benötigst, um ein gutes Virtual Reality-Spiel zu entwickeln. Lange Erklärungen zu jedem einzelnen Menüpunkt in Unity wirst du in diesem Buch jedoch nicht finden.

Nach einer kurzen Einführung in Virtual Reality und das wichtigste Vokabular, beginnen wir auch schon mit dem Quickstart-Kapitel, welches dir den schnellsten Weg von einem neuen Unity-Projekt zu einer selbst erstellten Virtual-Reality-Erfahrung zeigt. Danach sehen wir uns auch schon die positiven und negativen Beispiele für die VR-Entwicklung an. In den darauffolgenden Kapiteln werde ich dir sowohl einen tieferen Einblick in Unity und der Programmiersprache C# geben als auch die Entwicklerwerkzeuge (SDKs) für die VR-Brillen vorstellen. An dieser Stelle hast du dann ausreichend Wissen und Erfahrung gesammelt, um die Beispielprojekte anzugehen und deine ersten eigenen Virtual-Reality-Spiele zu entwickeln.

1.3 Unterstützte Virtual-Reality-Brillen

In diesem Buch beschreibe ich dir nicht, wie man nur für eine einzige Virtual-Reality-Brille entwickelt, sondern wie man für alle von Unity unterstützten VR-Brillen entwickelt. Dabei werde ich dir natürlich nicht nur die Funktionen beschreiben, die alle Brillen gemeinsam haben, sondern auch auf die individuellen Details jeder Brille eingehen. Dies hat den Vorteil, dass du dir nicht eine bestimmte Brille kaufen musst, um diesem Buch folgen zu können, sondern dass du einfach die Brille verwenden kannst, die du am besten findest.

Unterstützte Virtual-Reality-Brillen:

Da diese Brillen alle von Unity offiziell unterstützt werden, können sie ohne spezielle Anpassungen direkt in Unity verwendet werden. Wenn möglich, beschreibe ich daher alle Inhalte dieses Buches so, dass du sie mit jedem der Headsets nachvollziehen kannst. Das gilt vor allem für die Grundlagen und die Einführung in die VR-Entwicklung.

Im Laufe des Buches zeige ich dir jedoch auch, wie du die speziellen Eigenschaften jeder der VR-Brillen verwenden kannst. Da manche der Brillen individuelle Besonderheiten haben (Hand Controller, Touch Pads etc.), sind manche Abschnitte deswegen nur für einzelne der unterstützten Geräte relevant. Es wird jedoch keine bestimmte Virtual-Reality-Brille in diesem Buch bevorzugt, sodass du mit jeder Brille auf deine Kosten kommst.

Ich werde mich in diesem Buch zudem nicht nur auf die Unity-interne Unterstützung für die VR-Brillen beschränken, da diese nur eine Schnittmenge der Funktionen aller Brillen abdeckt. Ich werde dir deshalb auch die einzelnen Entwicklungswerkzeuge (SDKs) für die VR-Brillen vorstellen. Spätestens hier lernst du dann die Fähigkeiten von jeder unterstützten VR-Brille vollständig kennen und erfährst, wie du sie verwenden kannst.

Die vier vollkommen unterschiedlichen Beispielprojekte am Ende des Buches fassen vieles, was du davor gelernt hast, nochmals in praktischen Beispielen zusammen. Jedes Beispielprojekt ist für eine der unterstützten VR-Brillen-Arten optimiert und wird gezielt für diese VR-Brillen erklärt. Auf diese Weise kann das Projekt die Brille vollständig ausnutzen. Nachdem du aber das Projekt für deine eigene VR-Brille erfolgreich realisiert hast, kannst du versuchen, eines der anderen Projekte ebenfalls für deine Brille umzusetzen. Hier musst du dann selbstständig überlegen, wie du das Spieleprinzip am besten für deine VR-Brille umsetzen kannst. Du findest am Ende der Kapitel zusätzlich aber auch ein paar Tipps und Tricks für diese Aufgabe.

1.4 Unity

Unity ist eine Multiplattform-3D- und -2D-Engine, welche von Unity Technologies aus Dänemark entwickelt wird. Multiplattform bedeutet, du kannst mit ihr nicht nur für eine Plattform, zum Beispiel Windows-Computer, entwickeln, sondern auch für Mac, Linux, Smartphones, Browser und Videospielkonsolen. Unity verwendet hauptsächlich die einsteigerfreundliche Programmiersprache C-Sharp (C#), welche der Sprache Java stark ähnelt. Falls du also schon mal mit Java gearbeitet hast, wird dir der Umstieg sehr leichtfallen. Dieses Buch setzt jedoch keine Programmierkenntnisse voraus.

Wir verwenden Unity, da es eine große Anzahl an verschiedenen Virtual-Reality-Brillen unterstützt, ohne dass man die Brillen selber integrieren muss. Außerdem ist es mit Unity möglich, ohne große Umwege, schnell erste Ergebnisse zu erzielen.

Unity ist schon seit Jahren in der Indie-Szene sehr beliebt und hat eine große, aktive und hilfsbereite Community. Wenn du also nicht weiterweißt, findest du wahrscheinlich schon nach kurzem Suchen eine hilfreiche Antwort. Solltest du keine passenden Antworten finden, kannst du entweder im offiziellen Unity-Forum oder auch auf Seiten wie Stack Overflow ein Posting erstellen und erhältst meist eine passende Antwort von anderen Entwicklern.

Bei vielen Hobby-Entwicklern sehr beliebt ist der sogenannte Unity Asset Store. Dieser Online-Shop ist in die Engine integriert und erlaubt es dir, schnell und einfach für die Unity-Engine optimierte Modelle, Plug-ins und mehr herunterzuladen. Es gibt viele kostenlose Inhalte, die du in deinem Projekt verwenden kannst, ohne dass du etwas dafür bezahlen musst. Dies ist besonders für Hobby-Projekte sehr hilfreich, da du dich so auf deine Leidenschaft konzentrieren kannst. Programmierst du lieber, kannst du dir 3D-Modelle herunterladen – bist du eher ein Designer, lädst du dir eine fertige Spiellogik und passt diese lediglich deinen Vorstellungen an.

1.4.1 Die verschiedenen Versionen von Unity

Unity wird mit drei unterschiedlichen Lizenzen „Personal“, „Plus“ und „Pro“ angeboten. Die vollkommen kostenlose „Personal“-Version wird für den Anfang wahrscheinlich genau die richtige für dich sein. Du kannst sie für Projekte, mit denen du kein Geld verdienst, frei verwenden. Die kostenlose Version bietet zudem bereits den vollen Umfang an Funktionen auf allen Plattformen. Die einzige für den Anfänger wahrnehmbare Einschränkung ist, dass bei jedem Start des Spiels das Unity-Logo während des Ladevorgangs angezeigt wird. Planst du deine Anwendung zu verkaufen oder Werbung in ihr zu schalten, kannst du die Personal-Version weiterhin verwenden, solange du weniger als 100.000 $ pro Jahr damit verdienst. Sobald du so viel Geld mit deinem Spiel pro Jahr verdienst, macht es dir aber wahrscheinlich auch nichts aus, zu einer der beiden größeren Lizenzen zu wechseln.

Die Bezahlversionen sind als monatliche Abos für 35 $ („Plus“) oder 125 $ („Pro“) verfügbar und werden für dich erst wirklich interessant, wenn du sehr große Projekte angehst oder mehr als die erwähnten 100.000 $ mit deinem Spiel verdienst. Es ist übrigens kein Problem, ein Projekt mit der kostenlosen Version zu starten und später zu einer der kostenpflichtigen Versionen zu wechseln, sobald du die Grenze erreichst.

Detaillierte Informationen zu den Unterschieden der einzelnen Lizenzen findest du auf der offiziellen Webseite von Unity:

Image

Alle aktuellen Unity-Lizenzen im Überblick

Auf der offiziellen Unity-Webseite: https://store.unity.com/

Image

Möchtest du ein Onlinespiel entwickeln, gibt es bei der Personal-Version die Einschränkung, dass maximal 20 Spieler gleichzeitig spielen können. Solltest du nur deswegen ein Upgrade in Erwägung ziehen, solltest du vorher einmal im Unity Asset Store nach alternativen Netzwerk-Add-ons suchen.

Wenn du nach Informationen über Unity-Lizenzen im Internet suchst, wirst du wahrscheinlich noch häufig auf veraltete Infos stoßen: Früher bot Unity Technologies eine kostenlose Personal Edition und eine kostenpflichtige Professional Edition an. Die Personal Edition war in ihrem Funktionsumfang stärker eingeschränkt. Zudem musste man für jede Plattform (also PC, Android, iOS etc.) eine eigene Lizenz kaufen, um alle Funktionen auf der jeweiligen Plattform zu erhalten. Wie erwähnt, hast du aber mit dem neuen Lizenzmodell auch in der kostenlosen Version Zugang zu allen Funktionen auf allen Plattformen. Anders als heute konnte die alte Professional-Edition zu einem festen Preis und ohne Abo gekauft werden, dies ist mit dem neuen Lizenzmodell nicht mehr möglich.

1.5 Was brauche ich?

Um diesem Buch folgen zu können, benötigst du eine Virtual-Reality-Brille sowie die entsprechende Hardware, um sie verwenden zu können. Außerdem benötigst du einen Computer oder Laptop, auf dem du Unity installieren kannst.

Folgst du dem Buch mit einer MobileVR-Brille wie Google Daydream oder Samsung GearVR, muss der Computer nicht VR-Ready sein, da du deine Spiele in erster Linie auf deinem Smartphone ausführen wirst.

Wenn du eine Oculus Rift- oder SteamVR-Brille verwendest, reicht ein Computer, der den Mindestanforderungen der jeweiligen VR-Brillen entspricht, auch zum Entwickeln aus.

Alle Abbildungen und Anleitungen in diesem Buch wurden auf einem Computer mit Windows 10 (64 Bit) erstellt.

Ich gehe in diesem Buch davon aus, dass du bereits erste Erfahrungen mit deiner Virtual-Reality-Brille gesammelt hast. Das bedeutet, du hast sie bereits vollständig eingerichtet und ggf. auch schon ein paar Spiele oder Anwendungen ausprobiert.

Du benötigst für dieses Buch kein Vorwissen über Unity, Softwareentwicklung oder Virtual Reality. Da es Unity nur in englischer Sprache gibt, wird es dir leichter fallen, damit zu arbeiten, wenn du einfache Ausdrücke und Sätze auf Englisch verstehst. Dies wird dir auch beim Lernen von Unitys Programmiersprache C# helfen, da diese ebenfalls englische Ausdrücke verwendet. Ich werde dir in diesem Buch aber ohnehin alle wichtigen Funktionen erklären, weshalb du auch mit weniger guten Englisch-Kenntnissen folgen kannst. In meiner Schulzeit hat das Entwickeln von Spielen nicht nur mein Englisch, sondern auch mein Interesse am Englisch-Unterricht deutlich verbessert.

Für alles, was in diesem Buch beschrieben wird, kannst du immer die kostenlosen Versionen der Programme verwenden. Du musst dir also keine zusätzliche Software kaufen.

Die meisten Inhalte dieses Buches können auf jedes Virtual-Reality-Headset übertragen werden, auch wenn die VR-Brille in diesem Buch nicht direkt beschrieben wird.

1.6 Weiterentwicklung der Technik

Sowohl Unity als auch die beschriebenen Entwicklungswerkzeuge entwickeln sich stetig weiter. Aus diesem Grund kann es durchaus vorkommen, dass ein Menü oder ein Dialog in der neusten Version der Software nicht exakt genauso aussieht wie auf den Abbildungen im Buch. In den allermeisten Fällen ändern sich aber nur Kleinigkeiten und das Gesamtbild bleibt gleich, sodass du die gesuchte Funktion trotzdem schnell finden solltest.

Die Beispielprojekte in diesem Buch wurden mit Unity Version 2017.1.0f3 erstellt. Um garantieren zu können, dass alles korrekt funktioniert, empfehle ich dir, diese Version ebenfalls zu verwenden. Wenn du einmal in Unity eingearbeitet bist, wird es dir leichter fallen, Neuerungen und Unterschiede zu erkennen und das Projekt entsprechend anzupassen.

Dasselbe gilt für alle verwendeten Entwicklerwerkzeuge und Unity Packages. Ich habe dir auf der begleitenden Webseite die Versionen der Packages bereitgestellt, sodass du bei dir alles exakt, wie im Buch, nachbauen kannst.

Du erfährst in diesem Buch natürlich trotzdem, wo du immer die neusten Updates herbekommst, falls du lieber mit diesen arbeiten möchtest. Ich empfehle dir, wenn du einmal mit einer Version von Unity und den Entwicklungswerkzeugen angefangen hast, bei diesen Versionen zu bleiben, bis du dich sicher im Umgang mit ihnen fühlst. Durch häufiges Updaten können auch Probleme entstehen, welche dir eventuell nicht sofort auffallen, wenn du noch nicht sicher im Umgang mit der Software bist.

Mit neuen Updates kommen auch neue Funktionen in die Engine. Deswegen kann es natürlich auch vorkommen, dass ich mich über die Abwesenheit einzelner Funktionen beschwere, obwohl sie in der neusten Version bereits vorhanden sind. Wenn dies passiert, kannst du selber entscheiden, ob du lieber den Anweisungen im Buch folgst oder die neue Funktion ausprobierst.

1.7 Online-Zusatzmaterial

Auf der Webseite zum Buch habe ich einen passwortgeschützten Bereich für dich vorbereitet. Dort findest du Zusatzmaterialien, die den Inhalt des Buches ergänzen und aktuell halten sollen. Außerdem findest du dort auch Downloads zu allen Materialien, die du für die Beispielprojekte in diesem Buch benötigst.

Image

Zusatzmaterialien online:

Adresse: http://www.VRSpieleEntwickeln.de/zusatz/

Passwort: VRUnity!

Auf der Seite findest du unter anderem:

  • Downloads zu den verwendeten Programmen und Tools in der Version, wie sie hier im Buch verwendet werden

  • Grafiken, Modelle, Sounds etc. und jeweils ein passendes Beispielprojekt für folgende Spiele:

    • ein mittelalterliches Pfeil-und-Bogen-Spiel

    • einen Dungeon Crawler

    • eine Weltraumschlacht mit Raumschiffen

    • einen Sci-Fi-Stealth-Shooter

1Grundsätzlich kannst du dem Buch auch mit einer für Google Cardboard kompatiblen Brille folgen, indem du dich einfach an die Schritte für „Google VR: Daydream“ hältst. Es wird jedoch nicht explizit auf die Eigenheiten der Cardboard-Brille eingegangen und es existiert kein Beispielprojekt gezielt für diese Brille. Die meisten Tipps und Tricks und die Einführung in Unity sind jedoch universal für jede Brille anwendbar.

2 Einführung in Virtual Reality