VR Expansion Plugin

AI shouldn’t really be done with VRCharacters anyway, its possible but not recommended due to the overhead.

Also you should be able to step up to those, if the capsule height is set correctly, see the template level and how some are spaced far enough for it.

So…we tried packaging the template you provide without modifying it and attempted multiplayer with that, but still didn’t find any servers. Does anyone know a debug I can provide to get multiplayer hosting/joining up and running?

Are you guys local to each other? App ID 480 (the test app id) is region locked and doesn’t let people find each other outside of set regions, though you said you have found each other before with AS.

You can look in the packaged directory under Saved/Logs and see if steam fails to initialize in there, because I know for sure that the template project connects as I test multiplayer builds across steam using it.

Edit Also heads up to people, I have week off of work and intend on doing a lot of work on the plugin over it, there will be a stall in update notes and incremental changes over time due to some major revisions being done and being tested.

Today I started in on changing up the template character to be more of an actual template and less of a “How-To” example.

We have found each other in the past, yes (Seattle-Denver). I did move a few hours closer, but perhaps I’m in a new region that doesn’t qualify? If I change my region in the Steam settings, do you think that would have an impact?

Also, I don’t see any logs/saved folders or files in the packaged directory. Maybe that’s a sign something isn’t working properly.

Folder/ProjectName/Saved/Logs

Got it! Sorry i wasn’t more clear. The things I want to give AI to are pawns. I was just under the impression that in order for them to properly detect the Player, which is VRCharacter, they had to do some special calculations to get access to the player’s true location.

I’m not exactly sure how to set up capsules correctly, but I just now double-checked and found that I had Use WalkingCollisionOverride checked and set to StaticMesh. Unchecking it and setting it to PawnWalking fixed it. Sorry, I messed up…

Thanks a lot for the help!

Ah, there is a base AIController that I added to the plugin, just derive their controller from that and they should work just fine for you with the VRCharacter.

Apologies for my newbness… Do I just click on FlightAIController (under AIController) to do that?


The current open project is based on the VRExpPluginExample project.

Edit
I’ve one more, completely unrelated, question; possibly not even related to the plugin.

I got a Grippable Static mesh actor base, and from that I have a child weapon (sword). The static mesh for the weapon has collision built into it (I created both the collision, w/ a UCX prefix, and its accompanying mesh in Blender). Fsr, I can’t get hit events to fire on my sword.

I verified the other static mesh (the grey table in the middle of the Example map) has Simulation generates Hit Events checked and is set to block or overlap the Weapon object type.

After a couple hours of research it appears the collision has to?/ should be the root in order for hits to work right. But if that’s the case, I wouldn’t be able to use the grippable static mesh because I can’t change the root.

Should I post question in Answer Hub?

the VRAIController is the one I made, derive your FlightAIController from it (set its parents in the class properties in editor to the VRAIController).

Then it will check the correct pawn lcoation

Hey Guys,

first of all: thank you for providing plugin!
Second: I’m totally new to unreal.

So what I want to do is to open and close a door with a motion controller, just like in the demo application. I already copied the door from that project into my own. I’m also using a SimpleVRCharacter and my approach was to use the GripObject-Funktion, triggered by a MotionController Trigger Event. In the demo it was solved completely different and I don’t really understand if I should implement the door interaction in the VRSimpleCharacter or if I should add a Blueprint for the MotionController like it’s done in the demo.

Thank you for your help!

Gotcha, I thought I was looking for logs in the packaged folder, not about packaging the project :slight_smile:

I’ve attached the logs below and it does say “Steam API Disabled”, but it’s said that before and worked just fine.

No it didn’t, if it says


LogOnline:Display: STEAM: Loading Steam SDK 1.39
LogOnline:Warning: STEAM: Steam API disabled!
LogOnline:Display: STEAM: OnlineSubsystemSteam::Shutdown()

that means that the online subsystem didn’t load at all and it reverted back to subsystem NULL / LAN.

If you are packaging in shipping then it will fail without the appid.txt file. If you are packaging in development then it “IS” the SteamVRHome being enabled as it currently appears to conflict with the OnlineSubsystemSteam in engine and the Steam Subsystem doesn’t load anymore when it is enabled.

In the demo/template all gripping references the VRGripInterface to decide what to do with objects. The door passes back to the attempting to grip controller that it wants to be a Manipulation grip.

So yesterday I finally go around to getting your plugin installed in my game I am creating (mainly for the climbing aspect of it, but I hope to use many of it’s features). I’m very excited to start using it’s features. So I’m fairly new to Unreal engine, and game making in general (only a couple months now) so sorry if these are some very basic things I will be asking.

I’m trying to figure out how I would make the climbing feature only work on certain things, I’m making a climbing wall and would like the player to only be able to climb that rather then everything around them. I found a response you made to a similar request you said “Create a filter for climbing in the “Getoverlappingactors” function.” I’m not exactly sure what means. What would I need to do to make climbing work with climbable only objects?

Another thing i’m having a problem with is the hand meshes. I don’t have any hand meshes in my project besides Unreal Engine default meshes. After I put the plugin into my game it will randomly be those Unreal Engine ones (robotic looking meshes) I had before, or it will randomly be vive controllers. When it is the Unreal Engine hand meshes the gripping animation doesn’t work anymore where I just squeeze the trigger and the hand does a gripping animation. Also, there is always one of these Unreal Engine hand meshes on the floor about 3 feet in front of me doing nothing but sitting there. So here are my questions:

How would I go about getting rid of the random hand on the floor?
How would I tell it to only do one or the other hand mesh?
Also when I do replace the hand mesh with on of my own what would I need to do so it would use my new hand models?

Sorry for the annoying newbie questions, I’m just totally lost on what I need to do. Also I’m doing all of in blueprints, so if any of needs c++ that might be why i’m lost because I don’t know c++ at all (never even looked at it before).

Thanks!

Sounds like you kept the external motion controllers that the template spawns? The VRCharacter comes with them built in, instead it spawns teleport controllers to manage the teleport system in the template. I don’t have the hands in the template totally seperate like in Epics template.

Also you can throw out all of the code in the big red box in the VRcharacter blueprint, that all has to deal with OpenVR specific features (including loading your current controller model).

There is a function in the character to GetNearestOverlappingObject that checks if the object is climbable or not, you can override that function and return false if it isn’t derived from your climbing base type.

IE: Override the function, still call the Parent version of it, check if the passed out object is one of your climbable sub types, if it isn’t then set climbable to false. Or just directly edit the original function, either way works.

A lot of these things will be a lot easier to do after week, I am refactoring a bunch of the blueprint character in an effort to make it easier to convert to projects instead of just being a reference. My original intention was for it to be examples of how to do things but the general use appears to be just using it as is, so I felt that it needed some quality of life updates.

Edit In fact, while i’m already re-factoring I will add a “CanBeClimbed” function call to the character today, then people could just override that and pass in true or false.

Will refactoring be a whole character overhaul, or will it be fine to just upgrade the plugin to expose those new climbing features?

It changes how the blueprint functions work that interact with objects (adds more gameplay tag integration, more robust), and simplifies things (removes a bunch of functions, combines some into a unified function).

For the template it was fairly painless to upgrade objects, I just had to add some gameplay tags, for someones personal project that all depends on how much they directly reference the character, but it shouldn’t be “too” bad.

I’ll note that i’ll be leaving the original character setup as a legacy version (renamed) for a while as well so people can keep it as a base until they upgrade.

I am considering doing a stream tomorrow around 12pm est on twitch to go over the new changes I am making as well as have a Q&A session where I can show in real time parts in the editor to answer questions. Is anyone interested in that?

If not I will just make a overview video at the end of the week, no biggie. Trying to make good use of my time off.

I would be interested in it! I’m at work at 5 the next morning though so i don’t know if i’d be able to watch much/at all, but I definitely would watch the recording of it later though!

thanks for the response! Yeah I’m not sure if I kept the external motion controllers or not. I probably did. I’ll see if I can find them when I get home from work tonight. As for the climbing explanation you gave me: I guess i’m too new to UE to understand what you are trying to explain. sorry. Not sure how I would Override the function and check if the passed object is a climbable sub type. I would love to learn what you are talking about if you can explain it to me or point me to a YouTube video of someone explaining overriding functions and having sub types. If you don’t have the time that’s totally fine. Thanks for what you have provided to me already! I’m excited for the can be climbed function call that will be added!