Single/Multiplayer, Touch & Vive blueprint only Template

Running Oculus build 4.21.2, all edits made, and edits to the plugin were made as well. Project loads just fine, but when testing, no matter what level, controls don’t work and it crashes. The only error is Blueprint Runtime Error: “Attempted to access VRErrorDialog_C_0 via property VRErrorDialog, but VRErrorDialog_C_0 is pending kill”. Blueprint: ErrorDialog Function: Execute Ubergraph Error Dialog Graph: EventGraph Node: DestroyActor

After this is dismissed the error does not return, however, the level will close after 2 or 3 seconds.

Suggestions?

Update: This also happens in 4.20. Is anyone able to use the current version?

Edit , added log.

@Turwen were you able to fix this? This is the issue I am having now. I did not have these issues on the version (I think 3?) that was around when 4.18.3 was current.

Ok, there seems to be a host of problems. So many I assume it’s on my side, but I’ve followed the instructions to the letter.

When launching the entryMap level it doesn’t do anything in the Oculus headset, when trying to play on MultiMap01, you just spawn as a camera in the ground.

When I set the multiplayer players to 2 for testing, you are presented with the splash screen but nothing happens.

What am I doing wrong here?

Hi everyone, just a quick update.
I’m reading everyone comments and emails (I receive a ton of it), but don’t have always time to answer individually. Every problem is taken into consideration; usually I would say that 50% of them is user-specific side (not latest VS2017 version, computer problem or wrong settings, Guardian not set correctly), but the other half lead to improvements.

I’m waiting essentially for the Oculus-branch to be updated to 4.22.0 to update. Essentially, this would include:

New Expressive Avatars
Plugin re-done and everything simplified
Include Steam network + Vive + Valve knuckles
Increased speed

And most importantly all multiplayer (Oculus, LAN and Steam) networks thoroughly tested and explained. As an example, Oculus recently changed the way they manage the Matchmaking pools, and it seems to have introduced some problems.

I will probably target only 4.22, since their are significant changes in Oculus plugin and Quest in this version. Keeping compatibility with 4.20 and 4.21 would be time-consuming :slight_smile:

thanks for helping us .Just waiting now for the release of the UE4.22 branch from Oculus to try your plugins.

When joining a game, is it possible to see what map it is using? I am trying to make a multimap game where the host can choose a map when creating game.
Thanks! Hopefully it is possible to use blueprint for this!

Version 6.0
April 23, 2019

What’s new in version 6.0

  • Unreal 4.22
  • New Oculus Expressive Avatars
  • Steam Network
  • 90% reduction of plugin size
  • 500% performance increase
  • New splash screen
  • Hands can be visible / invisible at object pick up
  • Ditched the custom collision channels
  • Thoroughly tested with Oculus Network, Steam Network, LAN, and LAN direct IP connection

Compatibility

  • Oculus Platform 1.24
  • Oculus Runtime 1.32
  • Oculus Audio 1.18
  • Oculus Avatar 1.36
  • Steam Platform 1.39

Compatible with the following Unreal Engine versions:
Unreal Engine 4.22*, latest commit 42dbc9c (April 22, 2019), found at https://github.com/EpicGames/UnrealEngine/tree/4.22

To enable Retrieve Oculus ID and Verify Entitlement on Oculus QUEST and 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 *

To Nativize Assets without errors
**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 *

To use Oculus Expressive Avatars
**change **
\Engine\Plugins\Runtime\Oculus
Replace folder OculusAvatar with the one provided
ALSO
**change **
\Engine\Source\ThirdParty\Oculus
Replace folder LibOVRAvatar with the one provided

Thank you for your constant in the Oculus Avatar integration and sharing your knowledge.

One thing isn’t clear to me. I’m using UE 4.22 build 1b1d3e8 (24th of April) and I’m struggling with this step:
To Nativize Assets without errors
**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

If I go to line 1053 I’m in the middle of comments. Which ‘private’ should be changed to ‘public’, the one a few lines above or below? Or has this already been corrected since I’m using a slightly newer build of UE 4.22?

Some additional infos:

  • You need to have the Oculus app updated to 1.37 to use the Expressive Avatars (public test channel must be on)

  • I used the standard, Unreal-branch of 4.22 ( https://github.com/EpicGames/UnrealEngine/tree/4.22 ) since Oculus-branch (https://github.com/Oculus-VR/UnrealEngine ) wasn’t updated at the moment. now I saw that it has been updated to 4.22.1 on the 17 April, commit caa4351, and I will test it in the following days. For the latest commit I provided the Oculus Avatar plugin and LibOVRAvatar third-party files, directly provided from Oculus a few weeks ago.

  • I tested it with both Rift and Go; however you may want to map specific functions to Go controller since they are limited (a trigger, a button, and the touchpad).

  • Tested with all compatible networks (Oculus, Steam, LAN, direct IP) and always have a solid 72 / 90 fps, without reprojection.

Next time I’ll integrate Vive controllers + Knuckles.

Rapid video I made: Proteus - Oculus Expressive Avatars - YouTube

While building the template I got these compiler errors in Visual Studio 2019:
Severity Code Description Project File Line Suppression State
Error C2039 ‘MaterialType’: is not a member of ‘UOvrAvatar’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2039 ‘MaterialType’: is not a member of ‘UOvrAvatar’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2039 ‘SetLeftHandVisible’: is not a member of ‘UOvrAvatar’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 363
Error C2039 ‘SetRightHandVisible’: is not a member of ‘UOvrAvatar’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 368
Error C2039 ‘UpdateVisemeValues’: is not a member of ‘UOvrAvatar’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 375
Error C2039 ‘UpdateVisemeValues’: is not a member of ‘UOvrAvatar’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 379
Error C2039 ‘MaterialType’: is not a member of ‘UOvrAvatar’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 383
Error C2039 ‘GetOvrAvatarMaterialFromType’: is not a member of ‘AProteusLocalAvatar’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 383
Error C2143 syntax error: missing ‘;’ before ‘{’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 384
Error C2146 syntax error: missing ‘)’ before identifier ‘material’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2146 syntax error: missing ‘)’ before identifier ‘material’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2146 syntax error: missing ‘;’ before identifier ‘GetOvrAvatarMaterialFromType’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 383
Error C2238 unexpected token(s) preceding ‘;’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2238 unexpected token(s) preceding ‘;’ C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2275 ‘AvatarMaterial’: illegal use of this type as an expression C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2275 ‘AvatarMaterial’: illegal use of this type as an expression C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C2447 ‘{’: missing function header (old-style formal list?) C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 384
Error C3646 ‘GetOvrAvatarMaterialFromType’: unknown override specifier C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C3646 ‘GetOvrAvatarMaterialFromType’: unknown override specifier C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Public\ProteusLocalAvatar.h 146
Error C4430 missing type specifier - int assumed. Note: C++ does not default-int C:\Unreal Projects\ProteusTemplate-master 6.0\Plugins\ProteusAvatars\Source\ProteusAvatars\Private\ProteusLocalAvatar.cpp 383
Error MSB3075 The command “C:\UnrealEngine-4.22\Engine\Build\BatchFiles\Build.bat -Target=“ShaderCompileWorker Win64 Development” -Target=“ProteusEditor Win64 Development -Project=“C:\Unreal Projects\ProteusTemplate-master 6.0.uproject”” -WaitMutex -FromMsBuild” exited with code 5. Please verify that you have sufficient rights to run this command. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.MakeFile.Targets 41

Can you tell me why?

@vbvisr Didn’t try VS 2019 yet; I did it with VS2017
I’ll try it soon with it, I recommend to stick to VS2017 for the time being :slight_smile:

Retried with VS2017: exactly the same error messages.
EDIT: problems solved, I thought “To use Oculus Expressive Avatars, replace…” was optional, but it’s mandatory.
One thing though: line 1053 in \Engine\Source\Runtime\Engine\Classes\GameFramework\PlayerController.h doesn’t mention private or public. What should I change exactly?

I can package your template with success now; I noticed two things after a quick test:
I’m seeing yellow outlines when picking up objects (matching the object, but away from the object itself). This outline appears in one eye mostly. If you look away from the object the outline appears in the other eye. A bug, or intentional?
I’m not using Oculus’ avatars but the built in avatars. At one moment the right hand disappears when dropping an object and reappears when picking it up again.
Can you look it this please?

Another question: since 6.0 there is no “MainMenu” map anymore. How does a Vive host / join a game?

@vbvisr
Sorry for the delay; I was away for a few days. The change is there since version 5.0 I think.

How it works:

You spawn the BasicPawn (a nearly empty pawn) in “entryMap”, with MainMenuGM and MainMenuPC; you’re essentially offline there.
In this empty level, you load some essential settings from MainMenuPC to your GameInfoInstance (client-side)

You then create automatically a session (Oculus, LAN, or Steam) and open the “MultiMap” level, spawning as ProteusPawn with MultiGM and MultiPC and retrieving data from GameInfoInstance client-side as needed. You’re now online and logged in the level. You can now be found and joined by others.

Or you can summon the ConnectMenu widget - by default with the B Button with the Rift - and connect to others. That’s it.

Hi did you tried with the last Oculus distribution of UE 4.22 as you mentioned?
Thanks.
​​​​​​​

Hello I successfully build your template with the Oculus distribution 4.22.
I replaced the 2 files you provided in .zip inside the source. :wink:

Update:

  • Tested with latest Oculus Unreal 4.22 integration

  • Tested with Rift S & Quest

After some adjustments, everything works well on ALL devices, although I had to rework the post-process outline since OpenGL 3.1 is not compatible with pp materials
I’ll post everything this week :slight_smile:

Thanks for the new update with the Oculus 4.22 integration. :wink:

hey . Extremely well done with 6. Following this for a long time, amazing!
Just deployed it to Quest as i would do with any of my quest apps. But it gets stuck on the first black entry map with floating pink hands and nothing happens.
I have Oculus Avatars on. Do these work on the quest? If yes, can you explain how to add quest and rift app ids at the same time?

Best