Single/Multiplayer, Touch & Vive blueprint only Template

@Liquidgands

Thanks for the feedback. I won’t have the time to look at it before tuesday cause lot of research grants (on VR! and UE4!) to do; however from tuesday I’ll adress/look at everything and come back with feedback and an updated version! Will have a lot of time to do that.

For interactions: for now, you can check on the onedrive I modified @jamis excellent work “VR Essential Kit” found at [WIP] VR Essential Kit - Marketplace - Unreal Engine Forums to use my 1.1 template (single player). So you’ll find it there: Microsoft OneDrive - Access files anywhere. Create docs with free Office Online. under “VR Essential Kit.zip”. Hope he doesn’t mind, if not I’ll remove the project.

So back next week to check all that. Keep the good work!

,
Its ok , The penny has dropped as to whats doing what now and where to workout the Motion controller positions/movements etc.
As per pixelvspixel the netcodes still a bit laggy, but my interactions do not seem to be making it any worse now.

: When I rotate my head keeping one head always in front of me (so rotating the hand with me) the movement of the hand is very jerky (as if it gets updated with a delay or only every few frames). I don’t see the same issue when I keep the head still, and the frame rate is a solid 90 fps. I’m experiencing this using rift in single player with 1.1 (so not a network delay), also with your binary build. Any idea why? Can you reproduce the issue?

Update: The issue seems to be gone in 4.16 preview1 :slight_smile:

AH! Yes, this is fantastic ! Exactly what I needed, and more! It works perfectly. @jamis this is awesome!

oc I don’t mind, feel free to modify it, that’s why I’ve shared it with the community :wink:
@hoopera thanks man :wink:

, packaged 1.1 builds crash with UE4 4.16p1 on Rift (2.2 builds have a strange issue in the right eye and the red trace pointer, but do not crash).
Any idea why?

Ok so I’m back for good I’m diving into all issues right now. Will work first with 4.15 then I’ll try it with 4.16. Stay tuned!

So this is my to-do list for now:

  • Find active sessions from friends, Steam & Oculus
  • Connect by IP adress
  • VOIP
  • Vive tracker / multiple trackers / works in multiplayer
  • Physics objects optimization, client side
  • Correct material object between client - client
  • Oculus Avatars
  • Correct playground size/ location on playground, client side
  • Blacken vision when head through mesh
  • VR keyboard
  • Clamp input with Vive trigger
  • Teleport function fix
  • @Liquidgands optimizations
  • Add sockets on hands

When you do the Blacken vision when head goes through a Mesh can you add a boolean somewhere indicating the hmd is inside a wall, Currently I’ve ditched the Teleporter code (not removed as will probably put it back in as an option),
I’m using a more direct locomotion from the Handset relative movements. One issue I have that I’m not addressing yet is I’m checking for collisions from ‘about’ knee height below the HMD in the direction of movement requested to stop walking through objects and walls but if a player sticks the hmd into a wall they can then effectively pull themselves through it.

I tried a quick test with pushing the world away from the hmd as it got close to walls but it feels just a little too weird and will probably cause VR sickness.
a simple boolean when HMD inside a wall might let me disable the ability to walk. guess it wont stop them getting the HMD all the way through a wall but mixed with screen going dark it might stop the problem.

As for the optimizations, I wasn’t complaining before, you’ve managed to solve somehow the networking of the wands, I was seriously loosing the plot trying to work out how to do that from the base Epic Template and the multiplayer shootout demo.
Love the work you’ve done so far :slight_smile:

with regard the VR keyboard
http://www.lamb.uk.net/VR_Keyboard_Template.uasset

might help, its just a widget with 0-9 a-z space delete and enter buttons to throw into an actor.
But I made it when trying to originally get multiplayer VR working and wanted to be able to input player names.
might save you half an hour making lots buttons.

@Liquidgands thanks I tackle a lot of things at the same time. This will help. I decided to work with 4.16 p1 because it will be easier for VOIP.

Yeah I understand the tackling lots things at the same time, with the hassle of having to compile, then copy the compiled binarys across network, then a bit of running between rooms to test the multiplayer VR checking server replication, I’m kinda stacking up lots different things to test each time…

Kinda thinking I should have stuck to a single player game to learn UE4 and VR… but wheres the fun in that :slight_smile:

Quick question, I tried to implement Seemless Travel last night, (Actually back to the same map to speed up testing in being able to reset the level back to the start).
I’ve got it working in principle, in that its restarting the level and both machines still appear to be in the same ‘world’, but having issues getting the players to re-spawn with the hands.
I didn’t try for long its just another test in the long list of tests I line up for compile time, and Server Changing levels is a new section of reading to do so its more likely something I’m doing wrong, but wondering if you’ve tested it.

@Liquidgands From my early tests, seamless travel did not work with the same problems you encountered, something to do with the controllers.

As a side note, I returned to 4.15 since I wasn’t able to initialize Steam API with 4.16
I’ll wait until next 4.16 iteration to retry this version. Seems that VOIP and widget interaction will be easier with 4.16

: Good news, we sorted out the issue with the VOIP chat and Steam. To get have it working in 2.2 try the following changes:

In DefaultGame.ini (unless you actually want to implement a push to talk mechanic) add the following lines:

[/Script/Engine.GameSession]
bRequiresPushToTalk=false

In DefaultEngine.ini add the following lines:

[/Script/OnlineSubsystemUtils.IpNetDriver]
MaxClientRate=80000
MaxInternetClientRate=80000

…and change the following values:

*[/Script/Engine.Player]
;ConfiguredInternetSpeed=(Desired data rate cap)
;ConfiguredLanSpeed=(Desired data rate cap)
ConfiguredInternetSpeed=50000
ConfiguredLanSpeed=50000

[/Script/Engine.GameNetworkManager]
;TotalNetBandwidth=Total available bandwidth between all connections
;MaxDynamicBandwidth=Min and max per connection
;MinDynamicBandwidth=Min and max per connection
TotalNetBandwidth=500000
MaxDynamicBandwidth=80000
MinDynamicBandwidth=20000*

Basically these changes allow for more bandwidth usage. The template had no voice chat due to the push to talk setting, but even setting it to false the voice quality was very bad due to the network limits (probably the current replication saturates the available bandwidth). Now let’s move on to spatialisation :wink:

ok, will let you know when I solve it

Server Travel Issue

I added a few log outputs to various stages after server travel:

In Avatar Master Log before the 1 Second Delay gets outputted, Log before the ‘Select HMD’ function does not get displayed
Instead I get a

LogScript:Warning: Accessed None trying to read property BPMC2LEFT

So I assume how ever you fixed the networking of the motion controllers, its done just after you posses the Avatar Master Actor during the 1 second delay,
So fix is probably beyond me at this point in time, sorry.

Raw Log:

[2017.05.02-22.06.43:462][749]LogBlueprintUserMessages: [MultiGM_C_0] *MultiGM **********************Console RunningServerTravel Level01
[2017.05.02-22.06.43:570][749]LogPackageName: SearchForPackageOnDisk took 0.108s to resolve Level01.
[2017.05.02-22.06.43:571][749]LogGameMode: ProcessServerTravel: /Game/VRL/Maps/Level01
[2017.05.02-22.06.43:571][749]LogWorld: SeamlessTravel to: /Game/VRL/Maps/Level01
[2017.05.02-22.06.43:571][749]LogBlueprintUserMessages: [MultiGM_C_0] *MultiGM Number Controllers to Respawn1
[2017.05.02-22.06.43:571][749]LogBlueprintUserMessages: [MultiGM_C_0] *MultiGM **************Spawning PLayer 1
[2017.05.02-22.06.43:572][749]LogPawn:Error: DisableInput can only be specified on a Pawn for its Controller
[2017.05.02-22.06.43:572][749]LogBlueprintUserMessages: [Avatar_MasterM_C_1] ****************Before delay 1s
[2017.05.02-22.06.43:572][749]LogBlueprintUserMessages: [MultiGM_C_0] *MultiGM ***************************Spawned Successful now posses 1
[2017.05.02-22.06.43:572][749]LogBlueprintUserMessages: [MultiGM_C_0] *MultiGM ***************************Possessed 1

[2017.05.02-22.06.43:572][749]LogScript:Warning: Accessed None trying to read property BPMC2LEFT
Avatar_MasterM_C /Game/VRL/Maps/Level01.Level01:PersistentLevel.Avatar_MasterM_C_1
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:ExecuteUbergraph_Avatar_MasterM:4FE3
[2017.05.02-22.06.43:572][749]LogScript:Warning: Script call stack:
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:InpAxisKeyEvt_MotionController_Left_Thumbstick_Y_K2Node_InputAxisKeyEvent_4764
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:ExecuteUbergraph_Avatar_MasterM
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:LViveTrackPadY
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:ExecuteUbergraph_Avatar_MasterM

[2017.05.02-22.06.43:572][749]LogScript:Warning: Accessed None trying to read property BPMC2LEFT
Avatar_MasterM_C /Game/VRL/Maps/Level01.Level01:PersistentLevel.Avatar_MasterM_C_1
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:ExecuteUbergraph_Avatar_MasterM:4FBA
[2017.05.02-22.06.43:572][749]LogScript:Warning: Script call stack:
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:InpAxisKeyEvt_MotionController_Left_Thumbstick_Y_K2Node_InputAxisKeyEvent_4764
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:ExecuteUbergraph_Avatar_MasterM
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:LViveTrackPadY
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:ExecuteUbergraph_Avatar_MasterM

[2017.05.02-22.06.43:572][749]LogScript:Warning: Attempted to assign to None
Avatar_MasterM_C /Game/VRL/Maps/Level01.Level01:PersistentLevel.Avatar_MasterM_C_1
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:ExecuteUbergraph_Avatar_MasterM:4FCF
[2017.05.02-22.06.43:572][749]LogScript:Warning: Script call stack:
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:InpAxisKeyEvt_MotionController_Left_Thumbstick_Y_K2Node_InputAxisKeyEvent_4764
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:ExecuteUbergraph_Avatar_MasterM
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:LViveTrackPadY
Function /Game/VRL/Modified/Avatar_MasterM.Avatar_MasterM_C:ExecuteUbergraph_Avatar_MasterM

[2017.05.02-22.06.43:572][749]LogScript:Warning: Accessed None trying to read property BPMC2LEFT

@xN31 The crash in 4.16 is probably due to 2 things: console commands “hmd …” don’t work anymore in 4.16. They have been replaced by “unified VR commands” or something like that. Plus, the ProjectPointtoNavigation is depreciated, replace it with the updated one.

So to be clear, to enable the template (1.1 or 2.2) in 4.16, do the following:

In ScalabilitySettings in the PlayerControllers bp:

  1. Replace “stereo on” with vr.bEnableStereo True"
  2. Replace “hmd pdmin 2” with “vr.oculus.PixelDensity.min 2”
  3. Remove “hmd pdadaptive on”
  4. Replace “hmd mirror x” with “vr.MirrorMode x”; replace x by the correct number: (0 now -3; 1 now -2; 2 now -4; 3 now -1; 4 now -5)

In MotionControllerBP/Trace Teleport Destination, replace the Project Point to Navigation with the updated one

Note that I did not fully tested yet 4.16, still working on 4.15

@xN31 Thank you very much for the voice. Yeah, technically nothing was in the way of using VOIP. I thought about increasing bandwith, but only to decrease network lag, did not think it would also solve this. Will try it in the following days.
As for spatial sound, I think it is without a doubt mandatory to work with 4.16 since with the updated audio engine. The only thing I lost a little by me latin here is the 3 different spatialized options we have: Unreal, Steam or Oculus.

Ok so there where we are today. There’s my Gantt chart on next versions upcoming.

The goal here is to solve all main concerns, since I (as a researcher and entrepreneur) and us (interest and developer group) need a well-working template for research and commercial purpose starting soon.

So here there are the upcoming projects:

Template 1.2: Same as 2.3, without the multiplayer functionalities
Template 2.3: All functionalities of 2.2 updated, see Gantt below
Template 2.3, Oculus-version: While standard, no-plugin 2.3 version will allow Direct-Connection between 2 Oculus users via Oculus Network, a plugin is needed to find sessions via this network and use Oculus Avatars. This version will also use the latest runtime 1.14 ( see Home - Meta Community Forums ) for more infos.

Finally, I’ll update the single player, SteamVR Template to 4.16 and optimize it. Give me a week or two for that. See Steam VR Template - XR Development - Epic Developer Community Forums for more infos.

The goal here will then to give more love to the Windows Mixed Reality and convert the Template to it because there are a lot of projects coming for that. The future is definitely a mix of VR and AR.

There’s my Gantt chart on next features for 2.3:

Thanks! Actually though I’ve noticed that 1.1 when packaged always crashes on startup even on 4.15.2 (plain template, just removing TemplateDefs.ini)
Does it work for you?

thanks for the great updates coming up. So can we expect to download the Rift version on the 15th? Had collected some things after 2.1 but almost everything is fixed! Good job! Will continue logging with 2.3.
Also please provide a donate button(if not already done). You definetly earned it!