Single/Multiplayer, Touch & Vive blueprint only Template

do you think its possible to test multiplayer without using the Oculus Platform SDK? Just using UE4 multiplayer logic instead of Oculus. I guess I should’ve specified what I meant by multiplayer.

I would like to get a proof of concept up before I submit to Oculus and I would do it on rift but I don’t have one at the moment.

is multiplayer possible on the quest if you dont have Oculus Platform access?

@cazetta You need to have access to the EPIC Games repository and be logged in to Github before it’ll work. See: Unreal Engine on GitHub

Ok thank you very much for your response !

I wait the next release ton begin my learning ! Your great to help us.

jes, if you set it to anything else than oculus store in the configuration. If you want multiplayer trough the oculus store and oculus avatars you need to be an approved developer. Anything else works!

On rift its very easy, there you can work with the platform sdk and avatars etc etc. Anybody can quickly sign up as a rift dev and start working on titles. So you can go 90% with coding and testing on rift. For the last 10% you will need to be approved in order to work with the quest. If you dont want to use Oculus Avatars or the Oculus Matchmaking then you can even work with the quest. Just set it to Lan for example.

thank you for the response, I’m trying to install everything right now =)

i somehow cant get rid of the “vignette” effect that darkens the corners on the QUEST. It does not seem to be affected by ffr so i will need your help here to figure out on how to disable it. Why did you implement it anyway?

I’ve Installed everything as pdf says, it runs but when I try to run (right click on project /launch game) I keep having the message ‘failed to login to oculus network. please check your settings’. I disabled everything in .ini files (regarding oculus) and even tried to turn every node referencing Occulus network off in GameInfoInstance, yet no success. Am I missing something?

Edit: I’m trying to run it with Steam btw

Hello !!
Do you know when you project to release your template with Vive tracker integration ?

Would be interested in seeing what has been integrated in this template however for Enterprise VR we work cross headset platform so will hold off until Steam VR and Mixed Reality is back integrated with the plugin. I also assume LAN multiplayer is integrated too?

Oh boy… That’s so awesome! I already experimented with your older templates and they were fantastic. Can i you on patreon.com oder something? Definitely worth it! That you so much

Hey, unfortuanaltey i ran into a problem.

  • I downloaded the template from github.
  • unpackt it at: D:\UnrealEngine\Unreal Projects
  • set the unreal engine version to 4.22.3
  • created a new project and used the c++ template
    -> Error: The following modules are missing or build with a different engine version: project name; OVRLipSync; OVRLipSyncEditor; ProteusAvatars - Would you like to rebuild them now?
    -> Start building -> Error: projectname could not be compiled. Try rebuilding from source manually.

i tried to open the .uproject -> same result
switched to UE 4.21. -> same results
the missing modules are all meant for Oculus Rift? I’m using the HTC VIVE

System:
Win 10 Pro
Unreal Engine version 4.22.3
Microsoft Visual Studio Community 2019 (2), Version 16.1.6

What can i do?

hello, the actual release does not contain the Vive integration. Maybe with the next release.
Then for your problem, read the pdf file and retry.

Delete the folder and unpack it.
Select the engine version.
Make the modifications needed in the engine (github version)
Recompile engine and lightmass only
Open your template in visual studio and compile only .
Open and enjoy!

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

More infos:

UPLOADING APP BINARIES TO OCULUS DASHBOARD
IMPORTANT:
In PLUGINS’ UNCHECK STEAMVR AND STEAM SUBSYSTEM
DEVELOPING FOR OCULUS GO AND QUEST
We recommend to do the following steps: [ol]
[li]Package for Windows-64 bits[/li][li]On the Oculus Developer Dashboard[LIST=1][/li][li]Create a Rift App[/li][li]Copy/ Paste App ID into GameEngine.ini RiftAppID=[/li][li]Upload package (new binary) to a channel (not Store Channel) via browser or Unreal Oculus Windows Platform Tool[/li][li]Set the Matchmaking Mode in the Developer Dashboard to:[/li][/ol]
[/LIST]

3.Create a keystore for Android

4.In Unreal, VR Preview, Stop; in output log, copy AvatarID
5.{QUEST ONLY} In MainMenuPC/Settings, paste it in Oculus Quest Dev Avatar ID
6. Ensure settings are correct for GearVR/Go in ProjectSettings, set keystore infos
7. Package for SHIPPING for Go/Gear VR, Android ASTC
8. On the Oculus Developer Dashboard
Create a GearVR/Go App
Copy/ Paste App ID into GameEngine.ini GearVRAppID=
Upload package (new binary) to a channel (not Store Channel) via Unreal Oculus Platform Tool
Each of your apps will currently have a different app-scoped ID for a given user. In order to enable them to co-mingle, you need to first set up an app grouping (see documentation). This allows both apps to be speaking in terms of the same user IDs. Group together Rift App and Go/GearVR App via App Grouping
9. {QUEST ONLY} Ensure settings are correct for Quest in ProjectSettings
10. {QUEST ONLY if no access to Quest API} In MainMenuPC/Settings, check Use Oculus Avatars with Quest without Quest API

Following this, you’ll be able to use Oculus Avatars with all Oculus headsets, and cross-platform with Windows and Mobile headsets.
Developer without access to Quest API cannot use Oculus platform features, including multiplayer.
How can I access Quest API?
Your game pitch has to be greenlighted by Oculus before accessing Quest API. Business/Educational users will be able to access much of Oculus platform features via the Go and Quest Entreprise Edition software suite, available in Q4 2019. More infos at https://www.oculusforbusiness.com/

REPORTED ISSUES AND BUGS (UNREAL 4.22.

PATCHED: A CUSTOM SOLUTION EXISTS
FIXED: FIXED IN NEXT UNREAL VERSION
NOT FIXED: NO KNOWN SOLUTIONS [ol]
[li]Retrieve Oculus ID and Verify Entitlement fail on Go/Quest[LIST=1][/li][li]STATUS: PATCHED[/li][li]Reference: https://developer.oculus.com/bugs/bug/2343978258981741/[/li][li]See " I want to develop for Oculus Quest and/or Go "[/li][/ol]
[li]Entitlement fail on Quest if no access to Quest API[ol][/li][li]STATUS: PATCHED[/li][li]See " I want to use Oculus Avatars on the Quest, but I don’t have access to Quest Platform API “[/li][/ol]
[li]PlayDynamicForceFeedback has errors when nativizing assets[ol][/li][li]STATUS: PATCHED[/li][li]Reference: https://answers.unrealengine.com/questions/831405/playdynamicforcefeedback-node-in-420-fails-to-cook.html[/li][li]See " I want to nativize assets without errors when compiling”[/li][/ol]
[li]Oculus Go/Quest : No VOIP / or no LipSync with Oculus Avatars[ol][/li][li]STATUS: NOT FIXED[/li][li]Reference: https://developer.oculus.com/bugs/bug/471102320355137/[/li][li]Background infos: Android only allows access to the microphone from a single process. This wasn’t an issue when networking avatars previously, as the mic input wasn’t being used. But with the expressive update, we specifically need to run the mic through the OVRLipsync plugin to generate blend-shapes and drive the mouth shapes. Trying to hook up the mic to both VoIP and Lipsync therefore causes an inevitable race condition. The loser gets a bunch of zeros. So either there’s no networked audio, or no blend-shapes.[/li][/ol]
[li]Multiplayer Oculus Avatar is broken with latest Oculus Avatar Plugin[ol][/li][li]STATUS: PATCHED[/li][li]Use included Avatar plugin[/li][/ol]
[li]Oculus Rift / S: Enabling Splash in Project Settings / Oculus Settings crash when loading next level[ol][/li][li]STATUS: PATCHED[/li][li]Use blueprints to Set and Show Splash Screen[/li][/ol]
[li]SteamVR crashes if using Splash Screen[ol][/li][li]STATUS: FIXED IN 4.23[/li][li]Reference: Unreal Engine Issues and Bug Tracker (UE-62486[) 4.22, don’t use Splash Screens with SteamVR[/li][/ol]
[li]Stereo Layers are transluscent in ES3.1 (Oculus Go/Quest) / Vulkan (Oculus Quest)[ol][/li][li]STATUS: NOT FIXED[/li][/ol]
[li]Performance issues when a Render target is added to Spectator screen (VR) in a packaged game[ol][/li][li]STATUS: FIXED IN 4.23[/li][li]Reference: Unreal Engine Issues and Bug Tracker (UE-70352[) 4.22, don’t use Spectator Screens[/li][/ol]
[li]Cannot access Oculus Quest platform features[ol][/li][li]You have to be greenlighted by Oculus before doing so[/li][li]Oculus Business users will have access to Business Suite Q4 2019[/li][/ol]
[/LIST]
So this is all I can think off right now. Update git on monday!

Great news!!! Thank you :cool::cool:

Thx a lot for the quick help. I tried it, but failed again. It seems to me the complexity of the template evolved beyond my very limited skills. But keep up the great work!

Don’t worry iam in the same situation like you. I’ve had a lot a problem me too with the template but with a lot of patience and retry i win!!!

Everybody start. The goal is to search maximum and learn.

Hey guys, first time here :slight_smile:

I built the engine from the link provided in pdf, but can’t build . I have 21 errors in ProteusLocalAvatar.h and ProteusLocalAvatar.cpp (below). It’s my first time building UE4 from source, so maybe I didn’t do something obvs.

Severity Code Description Project File Line Suppression State
Error (active) E0020 identifier “FMeshDrawSingleShaderBindings” is undefined D:\UE4_Builds\UnrealEngine422\Engine\Source\Runtime\RenderCore\Public\VertexFactory.h 626
Error (active) E0135 class “UOvrAvatar” has no member “MaterialType” D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 383
Error (active) E0135 class “UOvrAvatar” has no member “MaterialType” D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2039 ‘MaterialType’: is not a member of ‘UOvrAvatar’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C3646 ‘GetOvrAvatarMaterialFromType’: unknown override specifier D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2275 ‘AvatarMaterial’: illegal use of this type as an expression D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2146 syntax error: missing ‘)’ before identifier ‘material’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2238 unexpected token(s) preceding ‘;’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2039 ‘MaterialType’: is not a member of ‘UOvrAvatar’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C3646 ‘GetOvrAvatarMaterialFromType’: unknown override specifier D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2275 ‘AvatarMaterial’: illegal use of this type as an expression D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2146 syntax error: missing ‘)’ before identifier ‘material’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2238 unexpected token(s) preceding ‘;’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2039 ‘SetLeftHandVisible’: is not a member of ‘UOvrAvatar’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 363
Error C2039 ‘SetRightHandVisible’: is not a member of ‘UOvrAvatar’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 368
Error C2039 ‘UpdateVisemeValues’: is not a member of ‘UOvrAvatar’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 375
Error C2039 ‘UpdateVisemeValues’: is not a member of ‘UOvrAvatar’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 379
Error C2039 ‘MaterialType’: is not a member of ‘UOvrAvatar’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 383
Error C2039 ‘GetOvrAvatarMaterialFromType’: is not a member of ‘AProteusLocalAvatar’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 383
Error C4430 missing type specifier - int assumed. Note: C++ does not default-int D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 383
Error C2146 syntax error: missing ‘;’ before identifier ‘GetOvrAvatarMaterialFromType’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 383
Error C2143 syntax error: missing ‘;’ before ‘{’ D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 384
Error C2447 ‘{’: missing function header (old-style formal list?) D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 384
Error MSB3075 The command “D:\UE4_Builds\UnrealEngine422\Engine\Build\BatchFiles\Build.bat -Target=“ShaderCompileWorker Win64 Development” -Target=“ProteusEditor Win64 Development -Project=“D:\UE4_Builds\UnrealEngine422\Templates\ProteusTemplate.uproject”” -WaitMutex -FromMsBuild” exited with code 5. Please verify that you have sufficient rights to run this command. C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets 44