Der Versand Termin für die Kickstarter- Unterstützer rückt immer näher und deswegen rücke ich nun auch das UDK Tutorial einen Schritt weiter. Diesmal geht es um die so genannte Full Body Awareness oder anders gesagt: Das Sehen des Körpers der Spielfigur.

Auf Full Body Awareness wird bei den meisten Ego-Spielen zugunsten der Performance verzichtet. Doch wenn es um Spiele mit hohem Realismusgehalt geht, haben die meisten Entwickler keine große Wahl. Schon beim Betrachten weniger Oculus Rift Demo Videos stellt man fest, dass immer wieder zur Sprache kommt, dass die Spieler bei der Doom 3 BFG Edition ihre Beine nicht sehen können. Während es bei den Demonstrationen noch humorvoll aufgenommen wird, könnte das Nichtsehen des eigenen Körpers, wenn es „ernst“ wird, das Spiel-Erlebnis massiv verschlechtern.

Als eines der ersten Spiele mit Full Body Awareness wird häufig Jurassic Park: Trespasser genannt. Allerdings stimmt das nicht ganz, denn aufgrund des massiven Busens der Hauptfigur Anne, konnte man die Beine nicht sehen, daher wurden diese auch nicht dem Modell beigefügt. Genauer gesagt ist der Spieler vielmehr ein fliegender Busen mit einem rechten Arm gewesen.

Das Herz Tattoo ist übrigens die Lebensanzeige. Quelle: Ign.com
Das Herz Tattoo ist übrigens die Lebensanzeige.
Quelle: Ign.com

Aktuellere Beispiele wären Medal of Honor Airbone, F.E.A.R., Mirror’s Edge oder ArmA 2.

Diese Diashow benötigt JavaScript.

Und natürlich bald: Dein Spiel ;)

Nun aber endlich zur Anleitung:

Als erstes müssen wir bestimmen, wo bei unserem Modell die Augen sind. Im UDK Content Browser wählen wir das Package „UDKGame“ aus und filtern nach: CH_IronGuard_Male . Mit einem Doppelklick öffnen wir das SkeletalMesh und öffnen dann den SocketManager: socketNach einem Klick auf New Socket wählen wir den Knochen b_head aus und geben nach einem Klick auf OK unserem Socket den Namen Eyes. EyesSocket

Mit den 3 bunten Pfeilen kann das Socket nach Belieben verschoben werden. Später befestigen wir dort die Kamera. Die perfekte Stelle ist je nach Modell und Geschmack unterschiedlich. Das bedeutet der Socket muss nicht mit der genauen Position der Augen des Modells übereinstimmen. Zum Glück können wir den Socket aber später, wenn wir bereit zum Testen sind, noch verschieben.
Bevor wir weitermachen, müssen die Achsen des Sockets aber noch dem des Koordinatensystems angepasst werden:

socket rotation_marker

Jetzt müssen wir noch den Code für unsere Spielfigur schreiben:

Zunächst legen wir einen Ordner für unseren Code an:

UDK-201X-XX\Development\Src\MyVrGame

Nun müssen wir dem Compiler zeigen, dass er diesen Ordner mit betrachten soll:

UDK-201X-XX\UDKGame\Config\DefaultEingine.ini

Hier fügen wir in die Gruppe „[UnrealEd.EditorEngine]“ einen neuen Schlüssel „+EditPackages=MyVrGame“ hinzu. Der ganze Bereich sollte nun also so aussehen:

[UnrealEd.EditorEngine]
+EditPackages=UTGame
+EditPackages=UTEditor
+EditPackages=UTGameContent
+EditPackages=MyVrGame

Nun starten wir den Unreal Script Editor unserer Wahl und legen ein neues Script in dem Ordner MyVrGame an.

NewItemDer Name soll „MyPawn.uc“ sein. Unser Pawn soll natürlich alles können was auch der UDKPawn kann, also erben wir von diesen. Wir ändern also den Inhalt der Klasse wie folgt:

class MyPawn extends UDKPawn;
//Variable List

//Functions

defaultproperties
{
}

Nun ist unser MyPawn eine Art Kopie des UDKPawns. Weiter geht es auf Seite 2.

Tagged: , , , , , , , , , ,

Geschrieben von Daniel Korgel

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

This article has 2 comments

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert