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.
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:
- Das eigene Virtual Reality Spiel mit Unity3D – Tag 1: Vorbereitung
-
Das eigene Virtual Reality Spiel mit Unity3D – Tag 2: Unity und unser erstes Level
-
Das eigene Virtual Reality Spiel mit Unity3D – Tag 3: Highscores, Dots und Coding?!
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.
Das Projekt vorbereiten
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.
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.
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?
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.
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!
Super spannende Serie, aber wann kommt endlich der 5. Teil?