VR Expansion Plugin

*[SIZE=2]Hello again.
I got the plugin downloaded to UE4.16.1 and so far it looks great. One issue though,

When using the VRSimpleCharacter I attached controller meshes to the inherited Left and Right Motion Cotrollers, but they seem to be dragging on the ground and not responding to my physical motion controllers.

Did I skip a step?*[/SIZE]

EDIT: I hate to be that guy, but I restarted my PC and now its working great.

1 Like

You are using the 4.16 source branch with a 4.15 version of the engine (though modified it is still 4.15). Epic changed how module rules are declared in 4.16 so its not directly compatible.

You can download the locked 4.15 branch instead and use that.

Hi!

I have a problem. I don’t know if is a VRExpansionPlugin, AdvancedSessions, Unreal problem or all.

I’m testing my project with VR and Advanced Sessions in my multiplayer project, and i can’t connect with other clients in VR Preview or Shipping Build (with steam_appid.txt and set in 480 ).

I’m be very frustrated, In Normal Preview, Standalone and New Window, works perfectly. Find, Create. But in VR Find, always return On Failure. In LAN and not LAN.

Why?

I’m testing in VRExampleProject, and same issue, don’t find nothing. In Lan and not LAN. I package the project in shipping and append the steam appid and same issue. In VR sessions don’t working.

Version 4.16.1.

One suggestion?

VR Preview steam won’t work with, and in shipping builds the appid.txt needs to be in the EXE folder, many people place it in the incorrect location.

You could always go to Saved/Logs and post the log as well, but I am assuming that the steam subsystem is actually not loading for you. Do you get the steam overlay active on your project?

I’ll note I did just fix a broken boolean that was preventing the widgets from being released on the hosting menu. It was disconnected during my blueprint overhaul of the template.

Hi,

IHow can I use the template or plugin in my Projects…Is there any tutorials or videos explains how thing works !!! Thanks.

Hi , thanks for you Reply.

I put de steam_appid.txt with only 480 inside. But when i launch the Shipping versión of your VRExpPluginExample, steam Overlay not appear in VR, well, open, but VR Overlay not show i’m in Spacewars…
only ocurs in VR, in preview, new window and standalone works perfectly. Find, Join, Create, Overlay… But in VR nothing works… In Shipping too…

I only open your project, build in x64 in shipping method. Put steam_appid.txt in root folder. pic to ilustrate:

I can’t understand why Unreal not solved , is impossible develop a multiplayer game in the proper way if you wait 15 minutes to package a game every time that you want to test something.
I’m suppose why the Engine can’t manage two subsystem in same time, and when it manage VR Subsystem Steam, can’t run the Online Subsystem Steam.

But now at least i want to run the game in Package Shipping. But i don’t sure if works, i’m supposed yes. You have the Host, Join and find in the VRExpansionExample but i can’t handle it works.

Where is the log in the package shipping?

Regards!

Logs are in “Saved”, also that isn’t the correct App_ID.txt location, it should be in GameName/Binaries/Build where the actual EXE is.

Pushed a new commit to the Plugin Template



Added new prelim procedural VR keyboard

Fixed a bug with the widget interaction components not releasing that was introduced with the BP overhaul.

Moved more of the input mappings into the Inputconfig and out of being directly declared in the character.


I know that I had said that VR keyboards were not plugin related and were better left to the marketplace, however I kind of wanted one for my console object and I had the idea of driving one off of a datatable
so that the layout and content is fully dynamic. It should allow for both 2D and 3D keyboards to be generated off of the same datatable with multiple layouts and localization. So far only a prelim 2D version is
implemented as I just started in on it today, the early 2D version is detailed in the video below.

It may change / be cleaner later on, being a 1 day effort there are likely iterative changes that I will make to it in the future as well as the 3D version.

OH F**K…

XDDDD is a little shame…

Well, now works, thanks so much ! i put the appid in Binaries/Build and now connect with Steam and Advanced Sessions Works… 10 point to you. Thanks!

No worries, it isn’t fully explained anywhere and is pretty trial and error, I just have two years of trial and error with it at point since my sessions plugin has about hit that mark now :p.

Hello , and fellow VRExpansionPlugin lovers. I have a new update for Espire 1: VR Operative, time detailing the game’s “Control Theatre” VR locomotion system and it’s overall concept both of which are explicitly linked!

Overall Concept:
Espire 1: VR Operative drafts players as drone operators of the future. Players become “Espire Agents” and use “cutting edge Virtual Reality hardware” to remote-operate the Espire model 1 from the safety of their control theatre. The player will be standing within the Espire control theatre from the moment they launch the Espire 1 executable from their steam game library until the moment they quit.

Locomotion System
control theatre is the game’s key locomotion ‘comfort’ device. Any time the player performs any sort of artificial locomotion, Espire’s world shrinks down to the size of a floating “iPad”, with the control theatre visible in the player’s peripheral vision.
The aim of “VR within VR” concept is to:

  • allow precise freedom of movement (A combination of sliding locomotion, climbing, jumping & tracked physical movement)
  • minimize VR sickness
  • maintain immersion.

Hopefully concept makes it possible to deliver an optimized standing, 180 degrees, or 360 degree roomscale experience with the level of comfort that suits the individual player. They will be able to customize many aspects of the control viewer including it’s size, distance from face, “follow speed” and the opacity of the control theatre walls. They can turn it off if they please.

I am a huge fan of sliding locomotion and think it is a good loco method for a stealth game. There is still a lot of work to do for it to effectively minimize VR sickness but with a lot of tweaking, it should work.
I am using many features of the VRExpansionPlugin and it’s template VRCharacterPawn - obvious things like the widget lasers, gravity, collision and climbing, but also the VRAIController so the AI Guards correctly target the true location of the player, VRPosition/VRForwardVecotr helper functions and some of the plugin’s booleans to detect artificial movement (pawn is colliding with geometry while player physically walks forward).

Thanks again for making and releasing such an awesome plugin!

That static room / view looks really close to something I had been thinking about for awhile, I like the cutoff with the hands especially, pretty slick.

When you go and add in the ability to turn it off/on though you might want to expand the options a bit and allow for turning it off only during climbing, a lot of people have an easier time with climbing than sliding locomotion and would probably enjoy having full range of view and motion during that activity.

I’m actually curious too about the boolean for detecting walking forward, I don’t remember exposing that but have always intended to go back and do so. Are you getting it in c++? (its public to that) I might want to go in and expose it to blueprint for people soon, I know there are uses for it but it keeps slipping my mind.

What would be the best way to override the movement of a pickuped actor? I want the actor to move along a spline when it is overlapping another actor.

Sounds like a job for the custom grip type honestly if you are trying to make it follow an actual spline. If you were controlling it in straight limited sections you could do it with the interaction settings but a spline will require too much custom logic for that to be viable.

You could technically do it by modifying offsets and the like, but a custom grip would be the easiest and quickest method.

Hello,

Got the plug-in working beautify (Huge thanks for putting in so much work.) Two questions.

1: I downloaded the level you created and played around in it for a bit; Awesome. Is there a download so that I can look at your blueprints? I’m having a little trouble with some of the features you demonstrate.

2: When my VRCharacter (Simple) attempts to look outside a window or over a table my collision capsule pushes me backward. Is there a way to make it so that my VRCharacter can lean over objects without being able to pass them?

(I tried “thread search” but didn’t find anything that matched).

tl;dr RR-like equippable/holstered items (weapons, and locomotion items) and climbing?

Is it correct to assume one of the best ways to do is: Just create a Base Actor (similar to the Gunbase in the template, where it’s got a VRGripInterface and Gameplay Tag Asset Interface) and then create children of that (with custom logic) for each holstered item?

Notes:

  • In the Player BP I need to know which item, if any, is in each hand because pressing thumbpad while its equipped will automatically return it to the holster it was removed from.

  • All of the equip-able items are skeletal meshes. And depending on the item the motion controller buttons do different things. (I need the trigger axis value on each motion controller; there’s a shoot threshold, and the gun can be charged, so I can’t use the USED event from the interface)

Background:
I started with a blank VR Character, and copied over the grip/drop and climbing logic over from the template pawn. Equip/Unequip is currently done via thumbpad press. And all the equip-able item logic is handled in the VRchar BP (all the meshes and stuff for those items is in the player). It’s getting really messy. Climbing works, but it works even when things are equipped, because the items aren’t using anything from the VRExpPlugin.

Thanks and sorry for the stupid question.

The template link has all of the blueprints in it for the demo download (demo is just a packaged template).

For the simple character, it follows all of the normal collision rules for a pawn, so you can simply turn off collision on the pawn channel for something.

I don’t implement faked “leans” with overlap distances because I don’t like the concept generally (tends to result in players just walking that much farther instead of “leaning”), but you are free to have a collision sphere on the HMD and check for the distances yourself and warp the player back if they penetrate too far if you wish.

The VRCharacter (non simple) also has the added option of a neck offset (can get closer to objects) and freewalk when not using locomotion.

There is also of course vive tracker support as well but being developer only at the moment and confirmed dead on gen2 for currently sold ones I wouldn’t bet too much on them yet.

That would be correct, you can manually grip any object by calling the function, but if you are working off of the template then the cleanest method would be making a weapon base class from a grippable mesh. is because the template character has a ton of checks and balances that it runs with grippable / interfaced objects. You could also just implement the interface in any object even if it isn’t one of the grippable base classes but it would involve more effort generally due to having to overload the interface functions.

If you are just using attachment for your object holding instead of the plugin grips you are free to have a boolean for each hand “Is holding” or something of the sort and just end the climbing check early if true.

Regardless for the holstering itself, you shouldn’t have to do custom logic on each object, Base class “Weapon” with child “Weapon.HolsterHeld” and implement the holstering logic there, then you can freely make further children like “Weapon.HolsterHeld.Pistol” that just has different mesh and properties but doesn’t have to re-do all of the holstering and base weapon logic.

All time I’ve been seeing mention of grippable mesh. I thought it was in reference to any static/skel mesh that could be grabbed. I just now realized it’s an actual component/actor type. Thanks! I’ll get my feet wet with basing children off a GrippableSkeletalMesh Actor Base Class.

Got it. That makes sense. I manually copied over almost all the gripping/climbing logic, so I’m aware of all the checks. It is indeed a ton. I think it’d be best to not add any more checks to the gripping/climbing. I’ll stick with your first suggestion (using GrippableSkeletalMesh Actor for Base Class).

Btw, I didn’t see much, if any, info on bitbucket regarding grippable Skeletal/Static mesh components/actors. You got all kinds of secret stuff in plugin, it’s ridiculous.

I’ve recently had bad experience working with embedded inheritance actors in RR mods. It’s made me lean towards just inheriting once. By custom I was more or less just referring to gun logic VS locomotion logic. I’ll rethink my approach with “Weapon.HolsterHeld.Pistol” in mind. Or maybe HolsterHeld.Weapon/Tool.Pistol-Lasergun-Rocketlauncher/Rocket-Parachute-

Thank you very much for your time! Extremely appreciated!

You can still pick up any meshes with the plugin and it will still be considered in the grip array, the template just automates a bunch of the grip logic when picking up a grippable mesh because it implements the VRGripInterface.

Also yeah I do appear to have forgotten to place all of the grippables on the wiki, it will really just be a “Grippable objects” with a brief description but it should exist, i’ll add a page today.

Generational inheritance is a huge part of engine and game programming in general, I would suggest that you use it, but even if not, at least make an actor component that handles the logic for you and attach that to the base class. Something that abstracts the logic out of each separate object and into one place where it only has to be changed once when you make holster changes.

First, thanks for the great plugin!

I’m having a great time taking the example project you made and tweaking Vive_PawnCharacter to use just the movement mode that I like the best. I was curious about the best method for syncing up to your latest plugin when you submit changes.

Also, the run in place doesn’t seem to work. Is it supposed to just work out of the box?

Thanks again!