Hi everyone. I’ll update the git on monday with the following updates:
- Unreal 4.22.2
- SteamVR compatible
- HTC Vive camera access
- Thoroughly tested with Oculus Quest
- Highlight selected object compatible with Oculus Quest
- A lot of other small things
Here are more infos:
Features compatibility:
Oculus Rift / S
- Avatar: Oculus Avatars or Custom Avatar
- Multiplayer: Oculus Home, or Steam / LAN (Custom Avatars only)
- VOIP: Yes
Oculus Go / Quest
- Avatar: Oculus Avatars or Custom Avatar
- Multiplayer: Oculus Home (Go only, Quest developers need access to Quest API)
- VOIP: No (Oculus Avatars), Yes (Custom Avatars)
HTC Vive
- Avatar: Custom Avatar
- Multiplayer: Steam / LAN
- VOIP: Yes
DO I NEED TO MAKE MODIFICATIONS TO THE ENGINE?
I want to develop for Oculus Quest and/or Go
change
/Engine\Plugins\Online\OnlineSubsystemOculus\Source\Private\OculusIdentityCallbackProxy.cpp Line 26
from
DelegateHandle = Online::GetIdentityInterface()->AddOnLoginCompleteDelegate_Handle(
to DelegateHandle = OculusIdentityInterface->AddOnLoginCompleteDelegate_Handle(
**Reference: **https://github.com/Oculus-VR/UnrealEngine/pull/26
I want to use Oculus Avatars on the Quest, but I don’t have access to Quest Platform API change
\Engine\Plugins\Runtime\Oculus\OculusVR\Source\OculusHMD\OculusMobile_APL.xml
Line 223
from:
com.oculus.svclib.OVREntitlementChecker.doAutomatedCheck(this);
to:
<!-- com.oculus.svclib.OVREntitlementChecker.doAutomatedCheck(this); →
I want to nativize assets without errors when compiling change
\Engine\Source\Runtime\Engine\Classes\GameFramework\PlayerController.h line 1053 private to public, because ‘PlayDynamicForceFeedback’ is a private member of ‘APlayerController’, for reasons unknown
Reference: PlayDynamicForceFeedback node in 4.20 fails to cook - Blueprint - Unreal Engine Forums
What are the best Project Settings for VR?
-
You will find the best settings already set in ProjectSettings
-
Oculus Go / Quest: 4x Mobile MSAA is hardcoded, no matter what
-
Oculus Go works in OpenGL ES2 and ES 3.1
-
Use Android SDK 21, 32-bits Android libraries (armeabi-v7a)
-
Advanced APK settings:
-
Oculus Quest works in OpenGL ES2 and ES 3.1, and Vulkan
-
Disable FFR and Mobile Multi-View if using Vulkan
-
Quest supports arm64, but Oculus Avatars & Mobile Audio plugin are 32-bits
[LIST] -
Select armeabi-v7a, Android SDK 23
-
Performances:
-
ES 3.1 + FFR + Mobile MultiView > Vulkan
[LIST]
- ES3.1 is recommended
Advanced APK settings:
[/LIST]
[/LIST]
MULTIPLAYER MODE
IMPORTANT
- Select ProjectSettings/NavigationSystem/Allow Client Side Navigation
- Don’t’t forget to put
[/Script/Engine.GameSession]
bRequiresPushToTalk=false
in DefaultGame.ini
CHANGE IN DEFAULTENGINE.INI:
Oculus Network
[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName=“GameNetDriver”,DriverClassName="/Script/OnlineSubsystemOculus.OculusNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
[OnlineSubsystem]
DefaultPlatformService=Oculus
bHasVoiceEnabled=true
PollingIntervalInMs=20
VoiceNotificationDelta=0.2
AllowPeerConnections=True
AllowPeerVoice=True
[OnlineSubsystemOculus]
bEnabled=true
RiftAppId=YOUR RIFT APP ID
GearVRAppId=YOUR GO/QUEST APP ID
[/Script/OnlineSubsystemOculus.OculusNetDriver]
NetConnectionClassName=OnlineSubsystemOculus.OculusNetConnection
Steam Network
[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName=“GameNetDriver”,DriverClassName="/Script/OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
[OnlineSubsystem]
DefaultPlatformService=Steam
bHasVoiceEnabled=true
PollingIntervalInMs=20
VoiceNotificationDelta=0.2
AllowPeerConnections=True
AllowPeerVoice=True
[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
bVACEnabled=0
GameServerQueryPort=27015
bRelaunchInSteam=false
GameVersion=1.0.0.0
bVACEnabled=1
bAllowP2PPacketRelay=true
P2PConnectionTimeout=90
[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="/Script/OnlineSubsystemSteam.SteamNetConnection"
LAN
[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName=“GameNetDriver”,DriverClassName="/Script/OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
[OnlineSubsystem]
DefaultPlatformService=Null
bHasVoiceEnabled=true
PollingIntervalInMs=20
VoiceNotificationDelta=0.2
AllowPeerConnections=True
AllowPeerVoice=True
The Oculus Rift will use the RiftAppId found in Developer Dashboard FOR RIFT
The Oculus Go/QUEST will use GearVRAppID found in the Developer Dashboard FOR MOBILE