Do you make the change on the unreal source before compilation? You find this in the pdf.
Yes, all but expressive avatars, because I don’t need them.
Do you know if we can use to make a LAN multiplayer game that can be played with both rift and quest? For example, rift host and quest joins the game.
**Version 6.1
Latest commit July 17, 2019**
What can I do with that, that I cannot do with the “VR Template” in Unreal?
Well, rapidly: It’s single or multiplayer (LAN, Oculus Home or Steam); It uses Oculus Avatars (or not); It uses voice over IP (VOIP); full of nice features fully using Oculus functions; compatible Oculus Go/Quest/Rift/S and HTC Vive; minimum use of C++ (but still some, since some methods not possible only in blueprints); hey, we were the first to propose a template back in 2016!
FOR NOOBS: This is super simple. Even if you think Visual Studio is the name of a VFX/Hollywood startup somewhere around LA with people working in open spaces and flip-flops, it requires few manipulations to set up; I could add few instructions how-to on demand.
Download it at GitHub - ProteusVRpublic/ProteusTemplate: Single/Multiplayer VR Template for Touch/Vive Controllers and Avatars
Compatible with the following Unreal Engine versions:
Unreal Engine 4.22*, latest commit e28248e (June 7, 2019), found at https://github.com/Oculus-VR/UnrealEngine
** minor changes to the engine possibly / mandatory required*
What’s new in version 6.1
- Unreal 4.22.2
- HTC Vive compatible
- HTC Vive camera access
- Thoroughly tested with Oculus Quest
- Highlight selected object compatible with Oculus Quest
- Small dot selector on widgets
- Possible to play Stereo CubeMap or Over-Under Images or Videos
Compatibility
- Oculus Plugin 1.38
- Oculus Platform SDK 1.32
- Oculus Audio SDK 1.34
- Oculus Avatar SDK 1.36
- Steam Platform 1.39
COMPILING UNREAL ENGINE FROM SOURCE
- Download the Unreal Engine .zip file from github (or sync through github app)
- Unzip
- Setup.bat
- Replace \Engine\Plugins\Runtime\Oculus\OculusAvatar with the files provided
- GenerateProjectFiles.bat
- Open UE4.sln with Visual Studio
- Make the modifications needed to the engine if needed (SEE NEXT PAGE)
- Build UE4
- Build UnrealLightmass
then
- Download the latest Template .zip from github (or sync through github app)
- Right-mouse click on .uproject, Switch Unreal Engine Version, for correct engine version
-
- Open .sln with Visual Studio
- Build
- Now ready to open .uproject
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 - Epic Developer Community Forums
REST OF DOCUMENTATION FOUND IN PDF FILE.
@roiboiboi I’m not sure it would work but I’ll try it today just to see
[USER=“35822”]Turbo Papok[/USER] That’s true, you don’t need to do modifs to the engine if you don’t need of the 3 items above. However you’ll get errors if you don’t swap the OculusAvatars plugin. If you don’t use the Oculus Avatars, you could also base the ProteusPawn on a basic pawn class and remove Avatars-specific functions and variables. I did not do that to avoid having many pawns.
Some studios use Photon Engine to do multiplayer since the official Avatar plugin is broken for multiplayer (that’s why I tweaked it); I think it’s simpler to use tools provided by Oculus and use their network. However, I understand devs having to avoid using Oculus network with the Quest, because they can’t access the API, not being greenlighted by Oculus, or using the Quest/Go in a non-game setting. Oculus for Business Software Suite for Go and Quest should give API access to such situations, but it will launch only in Q4.
errors: did you swap the OculusAvatars plugin folder? or use VS 2019 (we still use 2017 since we had errors last time we tried 2019)
@n3fox You can do the changes before or after compiling UE4, but if you do it after you’ll have to recompile it to include the changes.
@ZerbX Yeah I try do keep it the simplest way possible. Like the title (misleadingly) says it I would have like to use only blueprint cause it’s more visual, but using Oculus Avatars is C++ only, together with Oculus VOIP and HMD+controllers transforms replication (doing this in blueprint is possible but 100x slower – and it does not work with Expressive Avatars). I know that not everything is 100% in the docs, but there’s already 40 something pages in it. I recommend you play with it and you’ll understand most of it. Also, things could surely be done differently; this template is a 4-years iteration in the making.
I plan on making a video this week demonstrating features + multiplayer.
A last minute addition:
There’s another bug in the engine:
11. When a stereo layer is present rendering a widget it cannot be destroyed.
a. ** STATUS: NOT FIXED**
b. Reference: https://answers.unrealengine.com/que…-end-play.html
c. Avoid using stereo layers if you need to destroy them
Stereo layers are nice since they are super clear. I tried again to put the ConnectMenu in such a layer, but it cannot be destroyed when called to. That’s why a standard widget is still used in the template.
Hello!! I test the template and really thanks to for your great job.
But wheb i launch preview mode in vr with the vive, i stay on the floor abd no mouvement is possible.
I take a look in the ProteusPawn BP but no way. I change also the pawn in the project setting.
Do you know how i do?
I am getting a crash after a few minutes launching in VR (on Rift, project edited for Oculus and Oculus Avatars).
Crash dumps are attached.
I replaced the included OculusAvatar zip with the one in the engine plugins folder.
Any idea what I could try to solve this?
Maybe it has to do with this ( I also can not grab any objects and teleport rotation is also not working):
[2019.07.19-16.44.29:633][214]PIE: Error: Blueprint Runtime Error: “Attempted to access MotionControllerR via property MotionController, but MotionControllerR is pending kill”. Blueprint: ProteusPawn Function: Get Rotation From Input Graph: Get Rotation from Input Node: Return Node
[2019.07.19-16.44.43:014][419]LogOnlineVoice: Warning: Oculus: 2229249543753640 timed out
hi I build the template 6.1 with the Oculus version of UE44.22 integration 1.38 and with that version it was not necessary to change/replace the original plugin with the zipped one included in the template.
just to do:
There is a huge optimization for the multiplayer Oculus Avatars(Rift for my side).
Just a little to change :
-default engine.ini your RiftAppId and OculusAppId.
-structure VRSetting
- HMD: rift
- Connection type: Oculus Store
- Oculus Matchmaking Pool : YourPoolName.
AND don’t forget to update the navigation to be able to teleport.
I already did all of this. I did not upload the build to a channel yet but I believe that this is not the reason why it crashes and why I can not grab objects or rotate the teleport marker.
Very odd…
Thanks for the hard work. The update on the Avatar SDK was really good!
But i still see that you left in those “black” borders on the quest. How do we remove them? Is that hardcoded into the oculus branch?
Need Help. for UE4.22.2
My Engine Compiles successfully. However while opening the ProteusTemplate Master Project I am getting error that plugin where complied in different version hence I need to compile them again. If I try to Open the project using Visual Studio I get many compilation error all related to plugin.
Hi I’ve downloaded your template (great work btw!) Although I’m running into some issues regarding the grab and custom hand poses. In the BP I can’t seem to position any of the fingers, changing the values does nothing. Even the preset hand poses have been reset to default so this means when I try to grab anything in the VR Preview the objects just disappear. Guidance on this would be appreciated from you or anyone else! Thanks!
So new Oculus Integration 1.39 (Unreal 4.22.3) has been released today: https://developer.oculus.com/downloads/package/unreal-engine-4-integration/
Some things on my bugs list have been adresed:
Bug: No Android 64 bits library available for Avatars for Oculus Quest: now available!
Bug: Must disable FFR and multiview when using Vulkan with Quest, thus voiding the Vulkan advantage: now Vulkan works with FFR and Multiview!
These 2 things should speed up Quest frames; I’ll report soon on this.
Also I encourage looking on the blog Developer Perspective: Improving Memory Usage and Load Times in UE4 : https://developer.oculus.com/blog/developer-perspective-improving-memory-usage-and-load-times-in-ue4/ ; some things that could also speed up app.
Latest Version 6.2, July 30, 2019
What’s new in version 6.2
- Unreal 4.22.3, Oculus Integration 1.39
- “Ghost” function for clients to appear / disappear
- Works with Oculus Quest, but in reduced 72Hz mode due to 1.39 plugin problem
- 1.39 enables FFR+MultiView+Vulkan
- 1.39 enables Avatars 64-bits on the Quest
Compatibility
- Oculus Plugin 1.39
- Oculus Platform SDK 1.32
- Oculus Audio SDK 1.34
- Oculus Avatar SDK 1.36
- Steam Platform 1.39
Compatible with Unreal Engine 4.22.3*, Integration 1.39, latest commit 5f77421 (July 25, 2019), found at https://github.com/Oculus-VR/UnrealEngine
See next post / pdf for a list of bugs
X-Post with docs and Oculus Developer Forum, cause it’s handy there:
Unreal bugs/errors with Rift/Go/Quest and their status, up-to-date with 4.22.3 / Oculus plugin 1.39:
1. Retrieve Oculus ID and Verify Entitlement fail on Go/Quest
a. STATUS: can be fixed by changing a line in OculusIdentityCallbackProxy.cpp. See pdf for solution
b. Reference: https://developer.oculus.com/bugs/bug/2343978258981741/
2. Entitlement fail on Quest if no access to Quest API
a.STATUS: can be fixed by commenting out a line in OculusMobile_APL.xml. See pdf for solution
3. PlayDynamicForceFeedback has errors when nativizing assets
a. STATUS: can be fixed by changing \Engine\Source\Runtime\Engine\Classes\GameFramework\PlayerController.h
line 1053 private to public, because ‘PlayDynamicForceFeedback’ is a private member of ‘APlayerController’, for reasons unknown
b. Reference: PlayDynamicForceFeedback node in 4.20 fails to cook - Blueprint - Unreal Engine Forums
4. Oculus Go/Quest : No VOIP / or no LipSync with Oculus Avatars
a. STATUS: NOT FIXED
b. Reference: https://developer.oculus.com/bugs/bug/471102320355137/
c. 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.
5. Multiplayer Oculus Avatar is broken with official Oculus Avatar Plugin
a. STATUS: NOT FIXED
b. Use our in-house patched plugin/template, or use Photon Engine
6. Oculus Rift / S: Enabling Splash in Project Settings / Oculus Settings crash when loading next level
a. STATUS: NOT FIXED
b. Use blueprints to Set and Show Splash Screen
7. Stereo Layers are transluscent in ES3.1 (Oculus Go/Quest) / Vulkan (Oculus Quest)
a. STATUS: NOT FIXED
8. Performance issues when a Render target is added to Spectator screen (VR) in a packaged game
a. STATUS: FIXED IN 4.23
b. Reference: Unreal Engine Issues and Bug Tracker (UE-70352)
c. IN 4.22, don’t use Spectator Screens, or use them only in editor:
9. Cannot access Oculus Quest platform features
a. STATUS: You have to be greenlighted by Oculus before doing so or Oculus Business users will have access to Business Suite Q3-4 2019
10. When a stereo layer is present rendering a widget it cannot be destroyed.
a. STATUS: NOT FIXED
b. Reference: Stereo Layer isn't destroyed on end play - XR Development - Unreal Engine Forums
c. Avoid using stereo layers if you need to destroy them
11. Quest: Oculus Audio use 32-bits Android libraries (armeabi-v7a); no arm64 librairies available
a. STATUS: NOT FIXED
b.Use 32-bits librairies on Quest if using Oculus Audio, otherwise you can use arm64 compilation
**12. **75Hz is not available with Oculus Quest, only 60 and 72Hz
a. STATUS: NOT FIXED
b. This bug has been introduced in Oculus plugin 1.39
13. Oculus Quest controllers are detected as Go controllers
a. STATUS: Can be fixed by using the following manifest settings:
b. Introduced since Oculus plugin 1.39
[USER=“1110051”]Luqman Surreal[/USER] in setting handposes you have to only mess with these settings:
one for each hand side. It’s less user friendly than messing with sockets on skeletal meshes, but it’s the way I found to interface with the Avatar hands.
Should work well, since we use this technique in many apps. Think I should do a video to show that.
@Kingslayer_j Important to replace the original OculusAvatar plugin with mine in runtime/plugins/oculus. If not you’ll get build errors for many reasons, since I refer to a few custom functions I put in OvrAvatar.cpp, and I use OvrAvatarManager as an FClass instead of an UObject.
@jinzay Not sure about black borders? I’m not sure I see any.
[USER=“176719”]Beyond Matter[/USER] That’s strange that you RMotionController is pending kill, the only reason for that is if you are in DebugMode in MainMenuPC; LMotionController is also destroyed when using Go
@n3fox You should ensure that your chaperone is set OK and that SteamVR is correctly detected. You can see that in output log when beginning game.
Okay so you can’t actually adjust the position of each individual finger? From the screenshots it looked like you could, no worries
Hey there! Thanks for the template
One thing I can’t get: how the LAN works among multiple Quests? One Quest hosts and others are Clients or else?
Also, I tried to package for Win64 first as said in the PDF, typed in all the settings for Quest, but get this:
Error. … Unknown structure.
Edit:
Solved by renaming the struct asset, saving it, closing the editor, opening, renaming once again to the previous name, saving it, closing the editor, and opening the editor once again. LOL what did I just do?
Your template and any implementiations to other apps adds a black Vignette at the corners of both eyes that is similar to the FFR Mask. Its cool on darker maps but on a white map its totally obvious and something that does not occur on empty projects.