Das eigene Virtual Reality Spiel mit Unity3D – Tag 4: Oculus Rift Support und Unity 5 Pro im Angebot!

Hey Leute! Bitte entschuldigt das Fehlen von Updates in den letzten Tagen. Ich hatte einiges zu tun und da fehlte leider die Zeit für neue Updates – abgesehen davon, dass es kurz vor der Connect im Moment ohnehin nicht so viele heiße News gibt. Aber heute geht es endlich weiter mit der Reihe DeVRSmU3D, diesmal geht es um einen der wichtigsten Punkte: Wie bekommen wir das Spiel mit dem DK2 zum laufen?! Und außerdem erfahrt ihr alles über das Sonderangebot von Studica für Unity Pro. 

[Update 24.10.2014] Für das Oculus SDK 0.2.3 wird ab Unity Version 4.5.5 keine PRO Version mehr benötigt! Es kann mit der kostenlosen (im Funktions Umfang eingeschränkten und nicht für kommerzielle Nutzung freigegebene) FREE Version verwendet werden! Für unser Tutorial ist dies völlig ausreichend. Projekte können ohne Probleme von der Free Version in eine Pro Version übertragenwerden.

Normalerweise kostet die 1 Jahres, nicht kommerzielle, Pro Lizenz für Studenten rund 109€, wenn man sie über den einzigen offiziellen Reseller Studica.com kauft. Derzeit gibt es jedoch ein sehr gutes Angebot, ihr könnt jetzt fast 30€ sparen, denn bis zum 30. September, kostet die Lizenz nur noch 79€! Alles was ihr braucht ist eine Studienbescheinigung, welche ihr meist über das Online Portal eurer Hochschule oder im Sekretariat kostenlos erhaltet. Die Bescheinigung kann in deutscher Sprache sein. Der Ablauf ist sehr simpel: Ihr legt das gewünschte Produkt in euren Warenkorb und bezahlt es zum Beispiel mit Paypal. Anschließend werdet ihr aufgefordert euren Studenten Status zu verifizieren, dafür könnt ihr entweder das angezeigte Online Formular nutzen um eure (ggf. eingescannte) Studienbescheinigung hoch zu laden oder sie an die angezeigte E-mail Adresse senden.

Nur für begrenzte Zeit: 79€, statt 109€.

Nur für begrenzte Zeit: 79€, statt 109€.

Die Verifizierung dauert meist zwischen 1 und 2 Werktagen, bei hohem Andrang und übers Wochenende, kann dies jedoch auch mehr Zeit in Anspruch nehmen. Anschließend erhaltet ihr eine E-mail mit einem Link zu eurem studica.com Account, wo ihr eure Seriennummer findet. Die Lizenz ist ein Jahr gültig und läuft danach automatisch aus. Sie muss also dann neu über Studica.com gekauft werden. Ihr kauft auf Studica eine Lizenz für das noch nicht erschienende Unity5(!), erhaltet jedoch bis zum Erscheinen einen entsprechenden Zugang zu Unity4! Außerdem beinhaltet die unkommerzielle Studenten Version auch alle Addons: Team, Android, Windows etc.! Studica.com bietet auch die gewöhnliche, unbefristete und kommerziell nutzbare Lizenz zum halben Preis des offiziellen Preises von Unity, für Studenten oder Lehrende, an. Dieses Angebot ist jedoch immer gültig und nicht zeitlich begrenzt.

Los geht’s mit dem Oculus Rift Support

In den bisherigen Teilen haben wir uns bereits in Unity3D eingearbeitet, uns ein Spiel überlegt, ein Level designt und sammelbare Gegenstände eingebaut. Nun geht es endlich zur Oculus Rift Unterstützung!
Die bisherigen Teile findet ihr hier:

Okay neben eurem Level, was benötigen wir?

Als erstes benötigen wir die neuste Version der Unity 4 Integration von der offiziellen Oculus VR Webseite. Einfach „Unity 4 Pro Integration“ herunterladen.

Und natürlich ein Oculus Rift Development Kit 2!

okay, und dann?

Nachdem ihr Unity4 mit eurem Projekt gestartet habt, entpackt ihr das eben heruntergeladene Archiv und navigiert zu dem Ordner „OculusUnityIntegration„. Darin befindet sich ein Unitypackage namens „OculusUnityIntegration.unitypackage“, mit einem Doppelklick auf dieses startet ihr den Import in euer Projekt. Alternativ kann auch das  „OculusUnityIntegrationTuscanyDemo.unitypackage“, dieses enthält neben den benötigten Basiskomponenten auch die berühmte Tuscany Szene für Unity3d zum Testen und Spielen.

Nach dem Doppelklick sollte sich dieses Fenster öffnen. Achtet darauf, dass alle Dateien markiert sind und klickt "Import".

Nach dem Doppelklick sollte sich dieses Fenster öffnen. Achtet darauf, dass alle Dateien markiert sind und klickt „Import“.

Das Projekt vorbereiten

Meine Player Settings

Meine Player Settings

Bevor wir zum spaßigen Teil kommen, müssen wir das Projekt zunächst ein wenig anpassen, damit die Einstellungen auch gut mit dem Rift laufen. Es kursieren derzeit viele unterschiedliche empfohlene Einstellungen im Netz und hier kommt nun die, welche ich für meine Projekte verwende und mir ein rucklerfreies Erlebnis liefert. Wenn ihr bessere Settings, die ihr selbst getestet habt, kennt, postet sie gerne in den Kommentaren.

Als erstes müssen wir unser Projekt auf DirectX9 umschalten, da mir DirectX11 ein zu dunkles Bild liefert. Wir wählen also Edit -> Project Settings -> Player. Im Inspector auf der rechten Seite entfernt ihr nun die Harken bei Use Direct3D 11. Die aufkommende Meldung bestätigt ihr mit „Apply“. Der Vorgang dauert ggf. die eine oder andere Minute. Ist er fertig, wird empfohlen Unity einmal neu zu starten.

Anschließend aktivieren wir noch die Option „Builds“ um Oculus zu optimieren. Dies geht ebenfalls ganz einfach: Edit -> Preferences -> Oculus VR -> „Optimize Builds for Rift“ aktivieren. Anschließend könnt ihr das Popup über das X verlassen.

Quality Settings

Quality Settings

Zu guter Letzt muss noch das Unity interne Vsync deaktiviert werden, da dieser vom Oculus SDK geregelt wird. Dies macht ihr in dem ihr zuerst das Quality Settings Menü aufruft: Edit -> Project Settings -> Quality. Dann klickt ihr oben rechts im Inspector auf den Namen des Grafik-Levels, bei dem in der Standalone Spalte (die 2. Spalte, mit dem Pfeil runter) die grüne Markierung gesetzt ist. Standardmäßig sollte dies die Zeile „Good“ sein. Anschließend wählt ihr in den Optionen darunter unter Other: VSyncCount  und setzt den Wert auf „Don’t Sync“.

Das Player-Gameobject erstezen

Ihr solltet in eurem Project Explorer nun einen Ordner „OVR“ haben. Öffnet diesen und anschließend den Ordner „Prefabs“. Löscht oder deaktiviert euer aktuelles „Player“ Objekt, zieht das „OVRPlayerController“-Prefab (nicht OVRCameraController) in eure Szene und benennt dieses in „Player“ um. Ggf. wollt ihr die Position und Rotation des Objektes noch euren Wünschen entsprechend anpassen.

Das war es auch schon! Jetzt könnt ihr euer Spiel mit dem Oculus Rift DK2 spielen! Mit einem Klick auf Play, solltet ihr, bei angeschlossenem Rift, eure Demo im bekannten Stereo-Render sehen.

Euer Spiel in VR!

Euer Spiel in VR!

Wenn ihr wollt, dass das Bild im DirectMode auch auf eurem Hauptmonitor angezeigt wird, müsst ihr allerdings noch eine Kleinigkeit ändern: In dem gerade eben neu angelegten Player-Objekt müsst ihr das unter Objekt „OVRCameraController“ auswählen und dort im Inspector den Menüpunkt „Mirror Display“ aktivieren.

Solltet ihr später beim Testen ein ruckelndes Bild erleben, obwohl das Bild mit 75fps abgespielt wird, empfiehlt es sich einmal zu testen ob das Deaktivieren des „Time Warps“ das Problem für euch behebt. Ferner könnt ihr die unterschiedlichen Startparameter (normal und mit force-d3d11) testen.

und wie teste ich es nun auf der DK2?

Hier habt ihr nun 2 Möglichkeiten. Entweder ihr bringt euer Rift in den Extended Mode und zieht den „Game“-Tab auf eueren 2ten Monitor und maximiert es um das Bild auf dem Rift sehen zu können, oder ihr verwendet, wie ich, den Direct Mode.

Der Direct Mode hat allerdings den Nachteil, dass er nicht aus Unity heraus gestartet werden kann, es muss erst ein Build erstellt werden. Daher verwende ich zum groben Debuggen meist das Bild auf meinem regulären Monitor und bewege das Rift mit der Hand. Anschließend erstelle ich einen Build und teste das Spiel im Direct Mode.

Wie erstelle ich einen Build?

Meine Build Settings.

Meine Build Settings.

Ganz einfach: File -> Build Settings.

Hier klickt ihr zunächst (währende eure Level Szene geöffnet ist) auf „Add Current“ um eure Szene zum Build hinzuzufügen.
Bei Platform wählt ihr PC, Mac & Linux Standalone.

Tartget Plaform soll „Windows“ sein. Die Architecture „x86“. Wenn dies ein Debug Build ist könnt ihr zu dem alle Checkboxes aktivieren, um Script Fehler direkt angezeigt zu bekommen. Sind die Punkte nicht aktiviert, werden Fehler nur in den Output Log gespeichert.

Wenn ihr fertig seid, klickt ihr auf „Build“, legt einen neuen Ordner für euren Build an, öffnet diesen und klickt auf „Speichern“. Ist der Vorgang abgeschlossen, sollte sich der Ordner mit dem Build öffnen und ihr solltet wenigstens 2 Exen und einen Data Ordner erhalten. Bei einem Development Build, liegt zu dem noch eine *.pdb Datei dabei.

Diesen Build könnt ihr jetzt wie jede andere Demo einfach für die DirectToRift.Exe starten.

build_folder

Dev. Build automatisiert erstellen

Auch wenn die Einstellungen gespeichert werden, ist es lästig sich für einen Build durch die ganzen Menüs zu klicken und dann die Exe zu starten. Aus diesem Grund habe ich ein kleines Script zusammen gesucht und geschrieben, welches all diese Funktionen für den Entwickler übernimmt. Mit diesem Script könnt ihr innerhalb des Unity Editors einfach oben auf „Tools“ klicken und von dort aus einen Build erstellen und ihn direkt im Direct Mode starten. Dabei habt ihr sogar die Wahl, ob ihr DirectX11 für den Start erzwingen wollt oder nicht.

Importiert dazu einfach dieses UnityPackage: EditorTools.zip

Oder legt es von Hand an und erstellt einfach ein neues C# Sctipt mit dem Namen „EditorTools“ und kopiert den folgenden Quellcode hinein (ersetzt dabei die automatisch generierten Zeilen):

using UnityEngine;
using UnityEditor;
using System.Linq;
using System.Diagnostics;
using System.IO;

public class EditorTools : MonoBehaviour
{
    [MenuItem("Tools/Build and run in DirectMode %&B")]  // Verwendet als Shortcut: Ctrl-Alt-B
    static void BuildThisProject()
    {
        // specify your path, app name, and whether to force DX11
        string path = System.IO.Directory.GetCurrentDirectory() + "\\build\\";
        string appName = "Dk2TestBuild.exe";
        BuildAndRunApp(path, appName, false);
    }
    [MenuItem("Tools/Build and run in DirectMode with force-d3d11")]
    static void BuildThisProjectForced3d()
    {
        // specify your path, app name, and whether to force DX11
        string path = System.IO.Directory.GetCurrentDirectory() + "\\build\\";
        string appName = "Dk2TestBuild.exe";
        BuildAndRunApp(path, appName, true);
    }

    static void BuildAndRunApp(string path, string appName, bool forceDX11)
    {
        // pre-build: here's where I do some prep stuff

        // then, construct scene list and build
        string[] scenes = (from scene in EditorBuildSettings.scenes
                           where scene.enabled
                           select scene.path).ToArray();
        BuildPipeline.BuildPlayer(scenes,
                                  Path.Combine(path, appName),
                                  BuildTarget.StandaloneWindows,
                                  BuildOptions.None);

        // post-build: undo the prep stuff, if any


        // launch the app
        Process proc = new Process();
        proc.StartInfo.WorkingDirectory = path;
        if (forceDX11)
            proc.StartInfo.Arguments = "-force-d3d11";
        proc.StartInfo.FileName = Path.GetFileNameWithoutExtension(appName)
            + "_DirectToRift.exe";
        proc.Start();
    }
}

 Ende

Das war es auch schon wieder für diesen Teil! Spielt ein wenig mit eurem Level, testet unterschiedliche Licht Settings. Ich habe für meine Version zum Beispiel das Directional Light wieder entfernt (und die LightMap gelöscht). Dazu habe ich dann ein Spotlight an die „RightCamera“ des Player Prefabs hinzugefügt. Jetzt spielt der Spieler also im Dunkeln ;)

Im nächsten Teil wird es wahrscheinlich um eine simple KI gehen, die das Spiel dann erst mal richtig spannend macht!

Bereits veröffentlichte Teile:

Tag 1: Vorbereitung

Tag 2: Unity und unser erstes Level

Tag 3: Highscores, Dots und Coding?!

Tag 4: Oculus Rift Support und Unity 5 Pro im Angebot!

Daniel Korgel

Geschrieben von

Ich bin Daniel Korgel und bin ein selbständiger Software Entwickler im Bereich Virtual Reality. Ich programmiere in meiner Freizeit schon sehr lange und bin gut unterwegs mit C# (& .Net), Java, HTML, PHP und MYSQL. Kenntnisse in C, C++ und Assembler sind aber auch vorhanden. Zudem arbeite ich derzeit auch an meinem Bachelor. In meiner Freizeit sammle ich alte Spielekonsolen und bin auch hin und wieder im Skatepark anzutreffen. Twitter: @DakorVR , @Bloculus_de| Xing: xing.com/profiles/Daniel_Korgel


Eine Meinung zu “Das eigene Virtual Reality Spiel mit Unity3D – Tag 4: Oculus Rift Support und Unity 5 Pro im Angebot!

Kommentar verfassen