diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..c9989e0fbb32ed963407af47e582ea3f46c0de4c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,73 @@
+# Visual Studio 2015 user specific files
+.vs/
+
+# Compiled Object files
+*.slo
+*.lo
+*.o
+*.obj
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Compiled Dynamic libraries
+*.so
+*.dylib
+*.dll
+
+# Fortran module files
+*.mod
+
+# Compiled Static libraries
+*.lai
+*.la
+*.a
+*.lib
+
+# Executables
+*.exe
+*.out
+*.app
+*.ipa
+
+# These project files can be generated by the engine
+*.xcodeproj
+*.xcworkspace
+*.sln
+*.suo
+*.opensdf
+*.sdf
+*.VC.db
+*.VC.opendb
+
+# Precompiled Assets
+SourceArt/**/*.png
+SourceArt/**/*.tga
+
+# Binary Files
+Binaries/*
+Plugins/*/Binaries/*
+
+# Builds
+Build/*
+
+# Whitelist PakBlacklist-<BuildConfiguration>.txt files
+!Build/*/
+Build/*/**
+!Build/*/PakBlacklist*.txt
+
+# Don't ignore icon files in Build
+!Build/**/*.ico
+
+# Configuration files generated by the Editor
+Saved/*
+!Saved/AutoScreenshot.png
+
+# Compiled source files for the engine to use
+Intermediate/*
+Plugins/*/Intermediate/*
+
+# Cache files for the editor to use
+DerivedDataCache/*
+LocalDerivedDataCache/*
\ No newline at end of file
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..811fa5b4acaa8a26fdb45f58ad752319e9468dcb
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,61 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2019 RWTH Aachen University, Germany,
+# Virtual Reality & Immersive Visualisation Group.
+#-------------------------------------------------------------------------------
+
+#The include file can be change to either be removed or reference a specific commit.
+#Reference the Gitlab CI website for this
+
+include:
+  - project: 'vr-group/unreal-development/unreal-ci'
+    ref: master 
+    file: '/shared_scripts.yml'
+    
+#In this file you are able to configure your pipeline.
+#If you want to use the standard pipeline with all steps and deployment mechanisms, you are set-up correctly now.
+#If you want to customize something, either overwrite things that are defined in the shared_scripts repository,
+#or remove the "extends" and write your own scripts
+#
+#If you want your pipeline to run on every commit, just remove the "only" blocks. Keep in mind, that a build
+#can take some time.
+#
+#If you want to alter the unreal-building process two variables are defined for either changing the CLIENT_CONFIG or
+#for adding EXTRA_ARGS to the building process
+
+stages:
+  - build
+  - deploy
+
+Build_Windows:
+    only: ['web', 'schedules']
+    extends: .Build_Windows_
+    tags:
+        - windows
+        - unreal-4.26
+    variables:
+       CLIENT_CONFIG: "DebugGame"
+       # CLIENT_CONFIG: "Shipping"
+    
+Build_CentOS:
+    only: ['web', 'schedules']
+    extends: .Build_CentOS_
+    tags:
+        - centos
+        - unreal-4.26
+    variables:
+        CLIENT_CONFIG: "DebugGame"
+        # CLIENT_CONFIG: "Shipping"
+ 
+Deploy_CAVE:
+    only: ['web', 'schedules']
+    extends: .Deploy_CAVE_
+    dependencies:
+        - Build_CentOS
+        
+Deploy_Windows:
+    only: ['web', 'schedules']
+    extends: .Deploy_VRDev_
+    dependencies:
+        - Build_Windows
+
+ 
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000000000000000000000000000000000..f060e925ffe69d69520b01756e14bca02538ee55
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,8 @@
+[submodule "setup"]
+	path = setup
+	url = https://devhub.vr.rwth-aachen.de/VR-Group/unreal-development/unreal-project-setup-script.git
+	branch = master
+[submodule "Plugins/rwth-vr-toolkit"]
+	path = Plugins/rwth-vr-toolkit
+	url = https://devhub.vr.rwth-aachen.de/VR-Group/unreal-development/plugins/rwth-vr-toolkit.git
+	branch = 4.26
diff --git a/Config/DefaultEditor.ini b/Config/DefaultEditor.ini
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/Config/DefaultEditor.ini
@@ -0,0 +1 @@
+
diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini
new file mode 100644
index 0000000000000000000000000000000000000000..26442fdf8aa42d41315a3a914821623f00c64754
--- /dev/null
+++ b/Config/DefaultEngine.ini
@@ -0,0 +1,30 @@
+[/Script/HardwareTargeting.HardwareTargetingSettings]
+TargetedHardwareClass=Desktop
+AppliedTargetedHardwareClass=Desktop
+DefaultGraphicsPerformance=Maximum
+AppliedDefaultGraphicsPerformance=Maximum
+
+[/Script/EngineSettings.GameMapsSettings]
+EditorStartupMap=/Game/Maps/Main.Main
+GameDefaultMap=/Game/Maps/Main.Main
+
+[/Script/DisplayClusterEditor.DisplayClusterEditorSettings]
+bEnabled=True
+
+[/Script/Engine.RendererSettings]
+r.DefaultFeature.Bloom=False
+r.DefaultFeature.AutoExposure=False
+r.DefaultFeature.MotionBlur=False
+r.SceneRenderTargetResizeMethod=2
+vr.AllowMotionBlurInVR=True
+
+[/Script/WindowsTargetPlatform.WindowsTargetSettings]
+DefaultGraphicsRHI=DefaultGraphicsRHI_DX11
++TargetedRHIs=PCD3D_SM5
+-TargetedRHIs=PCD3D_SM4
+-TargetedRHIs=GLSL_430
+-TargetedRHIs=GLSL_150
+
+[/Script/Engine.Engine]
++ActiveGameNameRedirects=(OldGameName="RwthVrTemplate",NewGameName="/Script/WalkingTest")
++ActiveGameNameRedirects=(OldGameName="/Script/RwthVrTemplate",NewGameName="/Script/WalkingTest")
diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini
new file mode 100644
index 0000000000000000000000000000000000000000..cff152d15bd050469b3d5ee07024cdb033c9b6fb
--- /dev/null
+++ b/Config/DefaultGame.ini
@@ -0,0 +1,5 @@
+[/Script/EngineSettings.GeneralProjectSettings]
+ProjectID=44416E514B01D0639097FD978E2B9E34
+ProjectName=WalkingTest
+bUseBorderlessWindow=True
+
diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini
new file mode 100644
index 0000000000000000000000000000000000000000..22e8aedc562af9ca9d0c5dc63c8a2a5c2a9bd088
--- /dev/null
+++ b/Config/DefaultInput.ini
@@ -0,0 +1,151 @@
+
+
+[/Script/Engine.InputSettings]
+-AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
+-AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
+-AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
+-AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
+-AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
+-AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
+-AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
++AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MotionController_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MotionController_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MotionController_Left_TriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MotionController_Left_Grip1Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MotionController_Left_Grip2Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MotionController_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MotionController_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MotionController_Right_TriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MotionController_Right_Grip1Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MotionController_Right_Grip2Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Daydream_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Daydream_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Daydream_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Daydream_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Touch",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+bAltEnterTogglesFullscreen=True
+bF11TogglesFullscreen=True
+bUseMouseForTouch=False
+bEnableMouseSmoothing=True
+bEnableFOVScaling=True
+bCaptureMouseOnLaunch=True
+bAlwaysShowTouchInterface=False
+bShowConsoleOnFourFingerTap=True
+bEnableGestureRecognizer=False
+bUseAutocorrect=False
+DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown
+DefaultViewportMouseLockMode=LockOnCapture
+FOVScale=0.011110
+DoubleClickTime=0.200000
++ActionMappings=(ActionName="Fire",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=LeftMouseButton)
++ActionMappings=(ActionName="Fire",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=nDisplayButton0)
++ActionMappings=(ActionName="Fire",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Vive_Right_Trigger_Click)
++ActionMappings=(ActionName="Fire",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=MixedReality_Right_Trigger_Click)
++ActionMappings=(ActionName="Fire",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=OculusTouch_Right_Trigger_Click)
++ActionMappings=(ActionName="Fire",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=ValveIndex_Right_Trigger_Click)
++ActionMappings=(ActionName="Action1",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=One)
++ActionMappings=(ActionName="Action1",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=nDisplayButton1)
++ActionMappings=(ActionName="Action1",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Vive_Right_Menu_Click)
++ActionMappings=(ActionName="Action1",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=MixedReality_Right_Menu_Click)
++ActionMappings=(ActionName="Action1",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=OculusTouch_Right_A_Click)
++ActionMappings=(ActionName="Action1",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=ValveIndex_Right_A_Click)
++ActionMappings=(ActionName="Action2",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Two)
++ActionMappings=(ActionName="Action2",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=nDisplayButton2)
++ActionMappings=(ActionName="Action2",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Vive_Right_Grip_Click)
++ActionMappings=(ActionName="Action2",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=MixedReality_Right_Grip_Click)
++ActionMappings=(ActionName="Action2",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=OculusTouch_Right_B_Click)
++ActionMappings=(ActionName="Action2",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=ValveIndex_Right_B_Click)
++ActionMappings=(ActionName="Action3",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Three)
++ActionMappings=(ActionName="Action3",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=nDisplayButton3)
++ActionMappings=(ActionName="Action3",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=MixedReality_Right_Trackpad_Up)
++ActionMappings=(ActionName="Action3",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=OculusTouch_Right_Grip_Click)
++ActionMappings=(ActionName="Action3",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=ValveIndex_Right_Thumbstick_Click)
++ActionMappings=(ActionName="Action4",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Four)
++ActionMappings=(ActionName="Action4",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=nDisplayButton4)
++ActionMappings=(ActionName="Action4",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=MixedReality_Right_Trackpad_Right)
++ActionMappings=(ActionName="Action4",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=ValveIndex_Right_Trackpad_Up)
++ActionMappings=(ActionName="Action5",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Five)
++ActionMappings=(ActionName="Action5",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=nDisplayButton5)
++ActionMappings=(ActionName="Action5",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=MixedReality_Right_Trackpad_Down)
++ActionMappings=(ActionName="Action5",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=ValveIndex_Right_Trackpad_Down)
++AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=W)
++AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=D)
++AxisMappings=(AxisName="MoveUp",Scale=1.000000,Key=E)
++AxisMappings=(AxisName="TurnRate",Scale=-1.000000,Key=Left)
++AxisMappings=(AxisName="LookUpRate",Scale=-1.000000,Key=Up)
++AxisMappings=(AxisName="MoveForward",Scale=-1.000000,Key=S)
++AxisMappings=(AxisName="MoveRight",Scale=-1.000000,Key=A)
++AxisMappings=(AxisName="MoveUp",Scale=-1.000000,Key=Q)
++AxisMappings=(AxisName="TurnRate",Scale=1.000000,Key=Right)
++AxisMappings=(AxisName="TurnRate",Scale=1.000000,Key=MouseX)
++AxisMappings=(AxisName="LookUpRate",Scale=1.000000,Key=Down)
++AxisMappings=(AxisName="LookUpRate",Scale=-1.000000,Key=MouseY)
++AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=OculusTouch_Right_Thumbstick_X)
++AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=OculusTouch_Right_Thumbstick_Y)
++AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=ValveIndex_Right_Thumbstick_X)
++AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=ValveIndex_Right_Thumbstick_Y)
++AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=Vive_Right_Trackpad_X)
++AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=Vive_Right_Trackpad_Y)
++AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=MixedReality_Right_Thumbstick_X)
++AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=MixedReality_Right_Thumbstick_Y)
++AxisMappings=(AxisName="MoveForward",Scale=1.000000,Key=nDisplayAnalog1)
++AxisMappings=(AxisName="MoveRight",Scale=1.000000,Key=nDisplayAnalog0)
+DefaultPlayerInputClass=/Script/Engine.PlayerInput
+DefaultInputComponentClass=/Script/Engine.InputComponent
+DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks
+-ConsoleKeys=Tilde
++ConsoleKeys=Tilde
++ConsoleKeys=Insert
+
diff --git a/Config/DefaultScalability.ini b/Config/DefaultScalability.ini
new file mode 100644
index 0000000000000000000000000000000000000000..11071725dc0318f2ef254378a0a5852d3bc842f6
--- /dev/null
+++ b/Config/DefaultScalability.ini
@@ -0,0 +1,90 @@
+
+[AntiAliasingQuality@0]
+r.PostProcessAAQuality=0
+
+[AntiAliasingQuality@1]
+r.PostProcessAAQuality=2
+
+[AntiAliasingQuality@2]
+r.PostProcessAAQuality=3
+
+[AntiAliasingQuality@3]
+r.PostProcessAAQuality=3
+
+;-----------------------------------------------------------------------------------------------------------------
+
+[PostProcessQuality@0]
+r.MotionBlurQuality=0
+r.AmbientOcclusionLevels=0
+r.LensFlareQuality=0
+r.SceneColorFringeQuality=0
+r.DepthOfFieldQuality=0
+r.BloomQuality=1
+r.FastBlurThreshold=0
+
+[PostProcessQuality@1]
+r.MotionBlurQuality=0
+r.AmbientOcclusionLevels=0
+r.LensFlareQuality=0
+r.SceneColorFringeQuality=0
+r.DepthOfFieldQuality=0
+r.BloomQuality=1
+r.FastBlurThreshold=0
+
+[PostProcessQuality@2]
+r.MotionBlurQuality=0
+r.AmbientOcclusionLevels=0
+r.LensFlareQuality=0
+r.SceneColorFringeQuality=0
+r.DepthOfFieldQuality=0
+r.BloomQuality=1
+r.FastBlurThreshold=0
+
+[PostProcessQuality@3]
+r.MotionBlurQuality=0
+r.AmbientOcclusionLevels=0
+r.LensFlareQuality=0
+r.SceneColorFringeQuality=0
+r.DepthOfFieldQuality=0
+r.BloomQuality=1
+r.FastBlurThreshold=0
+
+;-----------------------------------------------------------------------------------------------------------------
+
+[TextureQuality@0]
+r.MaxAnisotropy=0
+
+[TextureQuality@1]
+r.MaxAnisotropy=2
+
+[TextureQuality@2]
+r.MaxAnisotropy=4
+
+[TextureQuality@3]
+r.MaxAnisotropy=8
+
+;-----------------------------------------------------------------------------------------------------------------
+
+[EffectsQuality@0]
+r.TranslucencyVolumeBlur=0
+r.TranslucencyLightingVolumeDim=4
+r.SceneColorFormat=2
+r.SSR.Quality=0
+
+[EffectsQuality@1]
+r.TranslucencyVolumeBlur=0
+r.TranslucencyLightingVolumeDim=4
+r.SceneColorFormat=2
+r.SSR.Quality=0
+
+[EffectsQuality@2]
+r.TranslucencyVolumeBlur=0
+r.TranslucencyLightingVolumeDim=4
+r.SceneColorFormat=2
+r.SSR.Quality=0
+
+[EffectsQuality@3]
+r.TranslucencyVolumeBlur=0
+r.TranslucencyLightingVolumeDim=4
+r.SceneColorFormat=2
+r.SSR.Quality=0
\ No newline at end of file
diff --git a/Config/Linux/LinuxEngine.ini b/Config/Linux/LinuxEngine.ini
new file mode 100644
index 0000000000000000000000000000000000000000..8e94802425d8ea9528815c3b99fbb97680e230ed
--- /dev/null
+++ b/Config/Linux/LinuxEngine.ini
@@ -0,0 +1,7 @@
+[/Script/Engine.Engine]
+GameEngine=/Script/DisplayCluster.DisplayClusterGameEngine
+UnrealEdEngine=/Script/DisplayClusterEditor.DisplayClusterEditorEngine
+GameViewportClientClassName=/Script/DisplayCluster.DisplayClusterViewportClient
+
+[/Script/Engine.RendererSettings]
+r.DefaultBackBufferPixelFormat = 1
\ No newline at end of file
diff --git a/Config/Windows/WindowsEngine.ini b/Config/Windows/WindowsEngine.ini
new file mode 100644
index 0000000000000000000000000000000000000000..c3bc90435c5fbb1e91719e7cbddaf94a85446954
--- /dev/null
+++ b/Config/Windows/WindowsEngine.ini
@@ -0,0 +1,6 @@
+[/Script/Engine.Engine]
+GameEngine=/Script/DisplayCluster.DisplayClusterGameEngine
+UnrealEdEngine=/Script/DisplayClusterEditor.DisplayClusterEditorEngine
+GameViewportClientClassName=/Script/DisplayCluster.DisplayClusterViewportClient
+
+
diff --git a/Content/Default_Geometry/Box.uasset b/Content/Default_Geometry/Box.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..5cb80a14aef44d2bd0e568c85e4965628fc915f4
Binary files /dev/null and b/Content/Default_Geometry/Box.uasset differ
diff --git a/Content/Default_Geometry/Geometries/SM_Box.uasset b/Content/Default_Geometry/Geometries/SM_Box.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..79ad5ca5ea28770eab2b9fe2bf23d33a6214676a
Binary files /dev/null and b/Content/Default_Geometry/Geometries/SM_Box.uasset differ
diff --git a/Content/Default_Geometry/Geometries/SM_Prop_Box.uasset b/Content/Default_Geometry/Geometries/SM_Prop_Box.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..389ab279ef5ae2d425f70977911f2307ef23cb1f
Binary files /dev/null and b/Content/Default_Geometry/Geometries/SM_Prop_Box.uasset differ
diff --git a/Content/Default_Geometry/Geometries/SM_Small_Prop_Box.uasset b/Content/Default_Geometry/Geometries/SM_Small_Prop_Box.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..f3903c0412c88c0e4e256c864a465829183b04ae
Binary files /dev/null and b/Content/Default_Geometry/Geometries/SM_Small_Prop_Box.uasset differ
diff --git a/Content/Default_Geometry/Geometries/SM_logo.uasset b/Content/Default_Geometry/Geometries/SM_logo.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..e91c564e385be319cd2754a0eb5134f8b444f746
Binary files /dev/null and b/Content/Default_Geometry/Geometries/SM_logo.uasset differ
diff --git a/Content/Default_Geometry/Geometries/cave_outline.uasset b/Content/Default_Geometry/Geometries/cave_outline.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..28072582b55aec764e1ee8b2b6eca9f2d5f645f9
Binary files /dev/null and b/Content/Default_Geometry/Geometries/cave_outline.uasset differ
diff --git a/Content/Default_Geometry/GrabbableBox.uasset b/Content/Default_Geometry/GrabbableBox.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..ef91cd10b5cd56b1e2363ad38608cbc17c3002ac
Binary files /dev/null and b/Content/Default_Geometry/GrabbableBox.uasset differ
diff --git a/Content/Default_Geometry/LogoActor.uasset b/Content/Default_Geometry/LogoActor.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..720e0a5708416c9377d891d02971e0dd3491d109
Binary files /dev/null and b/Content/Default_Geometry/LogoActor.uasset differ
diff --git a/Content/Default_Geometry/Materials/MI_Blue.uasset b/Content/Default_Geometry/Materials/MI_Blue.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..99ab58f05e5c20f6bafd49a86c58063d38196bf2
Binary files /dev/null and b/Content/Default_Geometry/Materials/MI_Blue.uasset differ
diff --git a/Content/Default_Geometry/Materials/MI_Green.uasset b/Content/Default_Geometry/Materials/MI_Green.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..d2e82af4dc9c3f600b3c725a67ba9505fe30b514
Binary files /dev/null and b/Content/Default_Geometry/Materials/MI_Green.uasset differ
diff --git a/Content/Default_Geometry/Materials/MI_Light_Blue.uasset b/Content/Default_Geometry/Materials/MI_Light_Blue.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..f3fea59dd6ed49b95d1b841340607707475b652d
Binary files /dev/null and b/Content/Default_Geometry/Materials/MI_Light_Blue.uasset differ
diff --git a/Content/Default_Geometry/Materials/MI_Light_Green.uasset b/Content/Default_Geometry/Materials/MI_Light_Green.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..8a4e994bb4b3301f89884ebe5fa949003fcaa3c4
Binary files /dev/null and b/Content/Default_Geometry/Materials/MI_Light_Green.uasset differ
diff --git a/Content/Default_Geometry/Materials/MI_Light_Orange.uasset b/Content/Default_Geometry/Materials/MI_Light_Orange.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..00c6b2abfcd7b82f2c6103e35655d837228193c3
Binary files /dev/null and b/Content/Default_Geometry/Materials/MI_Light_Orange.uasset differ
diff --git a/Content/Default_Geometry/Materials/MI_Light_Purple.uasset b/Content/Default_Geometry/Materials/MI_Light_Purple.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..b08e67cfebec5037f5f079f11d31478c9ebf2764
Binary files /dev/null and b/Content/Default_Geometry/Materials/MI_Light_Purple.uasset differ
diff --git a/Content/Default_Geometry/Materials/MI_Light_Red.uasset b/Content/Default_Geometry/Materials/MI_Light_Red.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..9a48735a0c00d71531a3cea285069963a379224c
Binary files /dev/null and b/Content/Default_Geometry/Materials/MI_Light_Red.uasset differ
diff --git a/Content/Default_Geometry/Materials/MI_Light_Yellow.uasset b/Content/Default_Geometry/Materials/MI_Light_Yellow.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..ab64ed8853821ccd7bd23f6a13e045183754babb
Binary files /dev/null and b/Content/Default_Geometry/Materials/MI_Light_Yellow.uasset differ
diff --git a/Content/Default_Geometry/Materials/MI_Orange.uasset b/Content/Default_Geometry/Materials/MI_Orange.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..db26b5c77e8ea4f4597e8cffb31625107c9cc0ad
Binary files /dev/null and b/Content/Default_Geometry/Materials/MI_Orange.uasset differ
diff --git a/Content/Default_Geometry/Materials/MI_Purple.uasset b/Content/Default_Geometry/Materials/MI_Purple.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..6aac340f8b5d2403685894146467f3fd9775ad0c
Binary files /dev/null and b/Content/Default_Geometry/Materials/MI_Purple.uasset differ
diff --git a/Content/Default_Geometry/Materials/MI_Red.uasset b/Content/Default_Geometry/Materials/MI_Red.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..d1daa7328f2691c943c936b4b366b4b8cb4b6749
Binary files /dev/null and b/Content/Default_Geometry/Materials/MI_Red.uasset differ
diff --git a/Content/Default_Geometry/Materials/MI_Yellow.uasset b/Content/Default_Geometry/Materials/MI_Yellow.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..2c7e8cdf3055ff25dbf3815ade4d6edbad7db935
Binary files /dev/null and b/Content/Default_Geometry/Materials/MI_Yellow.uasset differ
diff --git a/Content/Default_Geometry/Materials/M_Cave_Outline.uasset b/Content/Default_Geometry/Materials/M_Cave_Outline.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..b40d5a0a62a37032655286c0671a5cd9fbb9d056
Binary files /dev/null and b/Content/Default_Geometry/Materials/M_Cave_Outline.uasset differ
diff --git a/Content/Default_Geometry/Materials/M_Dark_Plastic.uasset b/Content/Default_Geometry/Materials/M_Dark_Plastic.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..66db1655036fe62f36f7ce5e4f1a19e06ee747d6
Binary files /dev/null and b/Content/Default_Geometry/Materials/M_Dark_Plastic.uasset differ
diff --git a/Content/Default_Geometry/Materials/M_Floor.uasset b/Content/Default_Geometry/Materials/M_Floor.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..f8176ca81cdcde92b06683c04462052134db35c5
Binary files /dev/null and b/Content/Default_Geometry/Materials/M_Floor.uasset differ
diff --git a/Content/Default_Geometry/Materials/M_Light_Plasti.uasset b/Content/Default_Geometry/Materials/M_Light_Plasti.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..b5b93e87fa503bd94cf0485bc83fb6653e9c433a
Binary files /dev/null and b/Content/Default_Geometry/Materials/M_Light_Plasti.uasset differ
diff --git a/Content/Default_Geometry/Materials/M_Logo.uasset b/Content/Default_Geometry/Materials/M_Logo.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..0d0570ede609e72f7052cde421659b0a14479822
Binary files /dev/null and b/Content/Default_Geometry/Materials/M_Logo.uasset differ
diff --git a/Content/Default_Geometry/Materials/M_Logo_Centre.uasset b/Content/Default_Geometry/Materials/M_Logo_Centre.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..c10ceae34dfa3b3981aed34e9363baf7a490e809
Binary files /dev/null and b/Content/Default_Geometry/Materials/M_Logo_Centre.uasset differ
diff --git a/Content/Default_Geometry/Materials/M_Medium_Plastic.uasset b/Content/Default_Geometry/Materials/M_Medium_Plastic.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..71043b57b687c5036fda92d010f3d274860a21b0
Binary files /dev/null and b/Content/Default_Geometry/Materials/M_Medium_Plastic.uasset differ
diff --git a/Content/Default_Geometry/Materials/M_Metal.uasset b/Content/Default_Geometry/Materials/M_Metal.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..4ea926d0353f30461a9cbfdcd23113a711010422
Binary files /dev/null and b/Content/Default_Geometry/Materials/M_Metal.uasset differ
diff --git a/Content/Default_Geometry/Materials/M_RWTH_Decal.uasset b/Content/Default_Geometry/Materials/M_RWTH_Decal.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..f9ae66d20dd4f2bdb7705e535181b2aeb8153cd2
Binary files /dev/null and b/Content/Default_Geometry/Materials/M_RWTH_Decal.uasset differ
diff --git a/Content/Default_Geometry/Materials/M_Wall.uasset b/Content/Default_Geometry/Materials/M_Wall.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..97fe09a13ae04595c335d3e33b14eba91bf0c2af
Binary files /dev/null and b/Content/Default_Geometry/Materials/M_Wall.uasset differ
diff --git a/Content/Default_Geometry/Materials/M_Warning_Sticker.uasset b/Content/Default_Geometry/Materials/M_Warning_Sticker.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..c9b728e1d3405caeee03d2476bd0c42ed64bf5f8
Binary files /dev/null and b/Content/Default_Geometry/Materials/M_Warning_Sticker.uasset differ
diff --git a/Content/Default_Geometry/Materials/M_Warning_Sticker2.uasset b/Content/Default_Geometry/Materials/M_Warning_Sticker2.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..639be31389914cd0ce122ef7ce7b2ba77f1db2f6
Binary files /dev/null and b/Content/Default_Geometry/Materials/M_Warning_Sticker2.uasset differ
diff --git a/Content/Default_Geometry/RWTHVRToolkitChecker.uasset b/Content/Default_Geometry/RWTHVRToolkitChecker.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..3aa25b95aaba83534badd753a284766719dd7b7f
Binary files /dev/null and b/Content/Default_Geometry/RWTHVRToolkitChecker.uasset differ
diff --git a/Content/Default_Geometry/SM_Box.uasset b/Content/Default_Geometry/SM_Box.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..911e27ab7fa8c95e90cf8325c9926084b7516707
Binary files /dev/null and b/Content/Default_Geometry/SM_Box.uasset differ
diff --git a/Content/Default_Geometry/SM_Prop_Box.uasset b/Content/Default_Geometry/SM_Prop_Box.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..14d277216dfe61061c17742d20a74380df1564ab
Binary files /dev/null and b/Content/Default_Geometry/SM_Prop_Box.uasset differ
diff --git a/Content/Default_Geometry/SM_Small_Prop_Box.uasset b/Content/Default_Geometry/SM_Small_Prop_Box.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..29f8dac7292fb962ff444237de449afe26addf59
Binary files /dev/null and b/Content/Default_Geometry/SM_Small_Prop_Box.uasset differ
diff --git a/Content/Default_Geometry/SM_logo.uasset b/Content/Default_Geometry/SM_logo.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..1860371c09f27ff0c1aa8831830ac783f98365dd
Binary files /dev/null and b/Content/Default_Geometry/SM_logo.uasset differ
diff --git a/Content/Default_Geometry/Textures/MetalPlates006_1K_Normal.uasset b/Content/Default_Geometry/Textures/MetalPlates006_1K_Normal.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..9b57f90e2f8eed14f3cc0b8b3d0f07c91f91a339
Binary files /dev/null and b/Content/Default_Geometry/Textures/MetalPlates006_1K_Normal.uasset differ
diff --git a/Content/Default_Geometry/Textures/MetalPlates006_1K_Roughness.uasset b/Content/Default_Geometry/Textures/MetalPlates006_1K_Roughness.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..9c8b120a76ee6765296610f49a08d80ff591f577
Binary files /dev/null and b/Content/Default_Geometry/Textures/MetalPlates006_1K_Roughness.uasset differ
diff --git a/Content/Default_Geometry/Textures/RWTH_Aachen_University_Logo.uasset b/Content/Default_Geometry/Textures/RWTH_Aachen_University_Logo.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..9d2bd45e2bd40a6cae5f770c5621e51b1b3aff85
Binary files /dev/null and b/Content/Default_Geometry/Textures/RWTH_Aachen_University_Logo.uasset differ
diff --git a/Content/Default_Geometry/Textures/VRWarning.uasset b/Content/Default_Geometry/Textures/VRWarning.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..6c29b8fd7a2da0e987ce8f805a9f851b2c96d3e7
Binary files /dev/null and b/Content/Default_Geometry/Textures/VRWarning.uasset differ
diff --git a/Content/Default_Geometry/Textures/VRWarning2.uasset b/Content/Default_Geometry/Textures/VRWarning2.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..8776c0c65801d266389de523c555b7559aba7ab6
Binary files /dev/null and b/Content/Default_Geometry/Textures/VRWarning2.uasset differ
diff --git a/Content/Default_Geometry/Textures/vci_rwth.uasset b/Content/Default_Geometry/Textures/vci_rwth.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..b58a33ff23ab640eededb48c58ef018c1b61450b
Binary files /dev/null and b/Content/Default_Geometry/Textures/vci_rwth.uasset differ
diff --git a/Content/Default_Geometry/cave_outline.uasset b/Content/Default_Geometry/cave_outline.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..37f6f9e4b98d21317bb2f21e6b336c5bd7b2b87f
Binary files /dev/null and b/Content/Default_Geometry/cave_outline.uasset differ
diff --git a/Content/Maps/Main.umap b/Content/Maps/Main.umap
new file mode 100644
index 0000000000000000000000000000000000000000..48f6932d26d1219202788ecf51b2707bb2c8f3f2
Binary files /dev/null and b/Content/Maps/Main.umap differ
diff --git a/Content/Maps/Main_BuiltData.uasset b/Content/Maps/Main_BuiltData.uasset
new file mode 100644
index 0000000000000000000000000000000000000000..af69b6daacfd456608010df5db4ddac40782a930
Binary files /dev/null and b/Content/Maps/Main_BuiltData.uasset differ
diff --git a/Saved/AutoScreenshot.png b/Saved/AutoScreenshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..44165535165c8f29305c9867d07b505f0296621f
Binary files /dev/null and b/Saved/AutoScreenshot.png differ
diff --git a/Source/WalkingTest.Target.cs b/Source/WalkingTest.Target.cs
new file mode 100644
index 0000000000000000000000000000000000000000..65c609c7e2229c15dd3a6951a931637fa7c1f361
--- /dev/null
+++ b/Source/WalkingTest.Target.cs
@@ -0,0 +1,14 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+using UnrealBuildTool;
+using System.Collections.Generic;
+
+public class WalkingTestTarget : TargetRules
+{
+	public WalkingTestTarget(TargetInfo Target) : base(Target)
+	{
+		Type = TargetType.Game;
+		DefaultBuildSettings = BuildSettingsVersion.V2;
+		ExtraModuleNames.Add("WalkingTest");
+	}
+}
diff --git a/Source/WalkingTest/WalkingTest.Build.cs b/Source/WalkingTest/WalkingTest.Build.cs
new file mode 100644
index 0000000000000000000000000000000000000000..dafdc0a24a121118bf840590d0623e691fd1c75a
--- /dev/null
+++ b/Source/WalkingTest/WalkingTest.Build.cs
@@ -0,0 +1,23 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+using UnrealBuildTool;
+
+public class WalkingTest : ModuleRules
+{
+	public WalkingTest(ReadOnlyTargetRules Target) : base(Target)
+	{
+		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
+	
+		PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "DisplayCluster", "Engine", "InputCore" });
+
+		PrivateDependencyModuleNames.AddRange(new string[] {  });
+
+		// Uncomment if you are using Slate UI
+		// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
+		
+		// Uncomment if you are using online features
+		// PrivateDependencyModuleNames.Add("OnlineSubsystem");
+
+		// To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
+	}
+}
diff --git a/Source/WalkingTest/WalkingTest.cpp b/Source/WalkingTest/WalkingTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..649cb35c53cd722fc971652718910e8e770ab547
--- /dev/null
+++ b/Source/WalkingTest/WalkingTest.cpp
@@ -0,0 +1,4 @@
+#include "WalkingTest.h"
+#include "Modules/ModuleManager.h"
+
+IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, WalkingTest, "WalkingTest" );
diff --git a/Source/WalkingTest/WalkingTest.h b/Source/WalkingTest/WalkingTest.h
new file mode 100644
index 0000000000000000000000000000000000000000..fe82abe038ecee3f8bfa5dd7306707c14b18ee2b
--- /dev/null
+++ b/Source/WalkingTest/WalkingTest.h
@@ -0,0 +1,4 @@
+#pragma once
+
+#include "CoreMinimal.h"
+
diff --git a/Source/WalkingTestEditor.Target.cs b/Source/WalkingTestEditor.Target.cs
new file mode 100644
index 0000000000000000000000000000000000000000..e38098a4e442ab5640be8403eb6c77777ef062a0
--- /dev/null
+++ b/Source/WalkingTestEditor.Target.cs
@@ -0,0 +1,14 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+using UnrealBuildTool;
+using System.Collections.Generic;
+
+public class WalkingTestEditorTarget : TargetRules
+{
+	public WalkingTestEditorTarget(TargetInfo Target) : base(Target)
+	{
+		Type = TargetType.Editor;
+		DefaultBuildSettings = BuildSettingsVersion.V2;
+		ExtraModuleNames.Add("WalkingTest");
+	}
+}
diff --git a/WalkingTest.uproject b/WalkingTest.uproject
new file mode 100644
index 0000000000000000000000000000000000000000..6568d26bc8451c0066240fa7ad49786c3b3bd177
--- /dev/null
+++ b/WalkingTest.uproject
@@ -0,0 +1,29 @@
+{
+	"FileVersion": 3,
+	"EngineAssociation": "4.26",
+	"Category": "",
+	"Description": "",
+	"Modules": [
+		{
+			"Name": "WalkingTest",
+			"Type": "Runtime",
+			"LoadingPhase": "Default",
+			"AdditionalDependencies": [
+				"Engine"
+			]
+		}
+	],
+	"Plugins": [
+		{
+			"Name": "nDisplay",
+			"Enabled": true,
+			"SupportedTargetPlatforms": [
+				"Win64",
+				"Linux"
+			]
+		}
+	],
+	"TargetPlatforms": [
+		"WindowsNoEditor"
+	]
+}
\ No newline at end of file
diff --git a/launcher.meta b/launcher.meta
new file mode 100644
index 0000000000000000000000000000000000000000..766b8f73b395947cd5315168021ab794e4f5fd15
--- /dev/null
+++ b/launcher.meta
@@ -0,0 +1,8 @@
+{
+  "USER-DATA": {
+    "DESCRIPTION": ""
+  },
+  "CI-DATA": {
+    "CI-DATA-ENTRIES": "WILL BE REPLACED"
+  }
+}
\ No newline at end of file
diff --git a/setup.bat b/setup.bat
new file mode 100644
index 0000000000000000000000000000000000000000..381c90032a18dd212409f1cb125e5f8cc1370561
--- /dev/null
+++ b/setup.bat
@@ -0,0 +1,6 @@
+git submodule update --init -- setup
+FOR /F "tokens=*" %%a in ('git config -f .gitmodules --get submodule.setup.branch') do SET BRANCH=%%a
+WHERE py
+IF %ERRORLEVEL% NEQ 0 (SET PYTHON_COMMAND=python) ELSE (FOR /f "delims=" %%i in ('py -3 -c "import sys; print(sys.executable)"') do SET PYTHON_COMMAND=%%i)
+ECHO %PYTHON_COMMAND%
+cd setup && git checkout %BRANCH% && git pull && cd .. && "%PYTHON_COMMAND%" .\setup\setup.py %*
diff --git a/setup.sh b/setup.sh
new file mode 100644
index 0000000000000000000000000000000000000000..91e030ad0066021be4f115a36601ede5bd5fd994
--- /dev/null
+++ b/setup.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+git submodule update --init -- setup
+branch=$(git config -f .gitmodules --get submodule.setup.branch)
+cd setup && git checkout $branch && git pull && cd .. && /usr/bin/env python3 ./setup/setup.py $@