VR Expansion Plugin

It is compatible with multiple versions although, there are releases of the plugin corresponding to each UE version. In other words, there is no universal plugin release which works on all the UE versions.
I hope that explains things to you guys (=

You mentioned increasing the client bandwidth limit for Steam Voice. Is that accomplished by increasing the following in DefaultEngine.ini do you know?

[/Script/Engine.Player] ConfiguredInternetSpeed=10000 ConfiguredLanSpeed=15000

I’m thinking these values are really low as they stand. Are there any other net settings to change as well as these?

Thanks.

mmm, i’ll update that, probably shouldn’t list specific engine versions

Not to each, to each with a major code path change that made it difficult to continue forward as a unified branch.

4.13 introduced a ton of navigation changes that would have required me to double the code in the path following component to support the old version as well (with compilation defines) so I broke it out separately.

Then 4.15 changed how module headers work engine wide, and while I could have kept that one cross compatible it also made the old style enums deprecated, which is a larger problem. I couldn’t change over to the new enum style for 4.14 and 4.13 because they didn’t support replication of them yet and I didn’t want to manually replicate bytes and convert back and forth just to support older engine versions.

I don’t have that much of a problem in my mind locking out branches currently, 4.15 is the first mostly stable VR branch as far as I am concerned (with 4.14 being the first real VR release). Specific features missing from locked branches could be pulled in from the later branches if needed by someone.

From what I have seen new the Unreal Tournament is using 15000 bps for clients in internet servers, which is the engine LAN default.


 [/Script/OnlineSubsystemUtils.IpNetDriver]
 MaxClientRate=15000
 MaxInternetClientRate=10000

 [/Script/Engine.Player]
 ConfiguredInternetSpeed=10000
 ConfiguredLanSpeed=20000

Would be


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

 [/Script/Engine.Player]
 ConfiguredInternetSpeed=15000
 ConfiguredLanSpeed=20000

Configured speeds are that the server allows the clients to set I believe.

UT also uses a lower tick rate than default I think though, but they might just be using their Opus integration, I think that steam VOIP has higher bandwidth requirements.

Oh, that was the template saying that, not the plugin itself. I changed it to say latest version for the template, its not going to load on previous versions anyway due to the map file.

Hey, I’m pretty new to UE4 in general and wanted to check out the template. When I try to build the solution, I always get the following error:


D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\VRExpansionPlugin\VRExpansionPlugin\Source\VRExpansionPlugin\Public\VRBaseCharacterMovementComponent.h(100): error C4596: 'UpdateFromCompressedFlags': illegal qualified name in member declaration
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\VRExpansionPlugin\OpenVRExpansionPlugin\Intermediate\Build\Win64\UE4Editor\Inc\OpenVRExpansionPlugin\OpenVRExpansionPlugin.generated.cpp(130): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\VRExpansionPlugin\OpenVRExpansionPlugin\Intermediate\Build\Win64\UE4Editor\Inc\OpenVRExpansionPlugin\OpenVRExpansionPlugin.generated.cpp(152): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\VRExpansionPlugin\OpenVRExpansionPlugin\Intermediate\Build\Win64\UE4Editor\Inc\OpenVRExpansionPlugin\OpenVRExpansionPlugin.generated.cpp(182): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\VRExpansionPlugin\OpenVRExpansionPlugin\Intermediate\Build\Win64\UE4Editor\Inc\OpenVRExpansionPlugin\OpenVRExpansionPlugin.generated.cpp(213): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\VRExpansionPlugin\OpenVRExpansionPlugin\Intermediate\Build\Win64\UE4Editor\Inc\OpenVRExpansionPlugin\OpenVRExpansionPlugin.generated.cpp(238): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\VRExpansionPlugin\OpenVRExpansionPlugin\Intermediate\Build\Win64\UE4Editor\Inc\OpenVRExpansionPlugin\OpenVRExpansionPlugin.generated.cpp(267): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>[5/16] Link UE4Editor-VRExpPluginExample.lib
2>   Creating library D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-VRExpPluginExample.lib and object D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-VRExpPluginExample.exp
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\AdvancedSessions\AdvancedSteamSessions\Intermediate\Build\Win64\UE4Editor\Inc\AdvancedSteamSessions\AdvancedSteamSessions.generated.cpp(165): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\AdvancedSessions\AdvancedSteamSessions\Intermediate\Build\Win64\UE4Editor\Inc\AdvancedSteamSessions\AdvancedSteamSessions.generated.cpp(278): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\AdvancedSessions\AdvancedSteamSessions\Intermediate\Build\Win64\UE4Editor\Inc\AdvancedSteamSessions\AdvancedSteamSessions.generated.cpp(558): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\AdvancedSessions\AdvancedSessions\Intermediate\Build\Win64\UE4Editor\Inc\AdvancedSessions\AdvancedSessions.generated.cpp(758): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\AdvancedSessions\AdvancedSessions\Intermediate\Build\Win64\UE4Editor\Inc\AdvancedSessions\AdvancedSessions.generated.cpp(788): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\AdvancedSessions\AdvancedSessions\Intermediate\Build\Win64\UE4Editor\Inc\AdvancedSessions\AdvancedSessions.generated.cpp(823): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\AdvancedSessions\AdvancedSessions\Intermediate\Build\Win64\UE4Editor\Inc\AdvancedSessions\AdvancedSessions.generated.cpp(848): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\AdvancedSessions\AdvancedSessions\Intermediate\Build\Win64\UE4Editor\Inc\AdvancedSessions\AdvancedSessions.generated.cpp(873): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\AdvancedSessions\AdvancedSessions\Intermediate\Build\Win64\UE4Editor\Inc\AdvancedSessions\AdvancedSessions.generated.cpp(899): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\AdvancedSessions\AdvancedSessions\Intermediate\Build\Win64\UE4Editor\Inc\AdvancedSessions\AdvancedSessions.generated.cpp(925): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\AdvancedSessions\AdvancedSessions\Intermediate\Build\Win64\UE4Editor\Inc\AdvancedSessions\AdvancedSessions.generated.cpp(951): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'
2>D:\UE4 Extras\-vrexppluginexample-91a5201eb76e\Plugins\AdvancedSessions\AdvancedSessions\Intermediate\Build\Win64\UE4Editor\Inc\AdvancedSessions\AdvancedSessions.generated.cpp(979): error C2664: 'bool UEnum::SetEnums(TArray<TPair<FName,int64>,FDefaultAllocator> &,UEnum::ECppForm,bool)': cannot convert argument 1 from 'TArray<TPair<FName,uint8>,FDefaultAllocator>' to 'TArray<TPair<FName,int64>,FDefaultAllocator> &'

Edit. Using 4.15

Edit2: Solution was to change back from Visual Studio 2017 to 2015

The illegal qualified name was a legit issue, generally VS compiles through that anyway but it shouldn’t be left in, I just fixed that (from time to time it sneaks in).

The enum names being generated incorrectly by the UBT isn’t a plugin problem though, someone had the same issue upgrading to 4.15 with their project and they had to delete intermediate files and recompile. If you are just doing your initial compile though it shouldn’t have that problem.

What version of Visual Studio are you running on?

I’m using Visual Studio 2017, maybe that’s the real issue here and I should rather go back to Visual Studio 2015.

Yeah I would try 2015, 2017 support just came out for the engine and I doubt it is perfectly ready yet. Throwing build errors on auto generated content from ue4 throws red flags to me about its readyness.

Edit
People seem to be saying that the 2015 build toolchain still needs to be used with 2017 when compiling, but that they are using 2017 for the text editing and intellisense. So basically keep 2015 installed and edit with 2017 if you wish.

VS2017 caused me no end of problems… Reverting back to VS2015 Community fixed it. Recommend using 2015 for the time-being. I think 4.15.1 will have some VS2017 fixes…

Thanks guys, will do so and report back.

Edit: seems to be building fine now! Thank you again for the quick help :slight_smile:

looks pretty impressive since i was last here. Does it work with the web browser widget by any chance?

Hello, I am getting the following errors while installing.. am I skipping a step?

4.13 normal-

  1. I extract the VRExpPluginExample to my C drive folder VRExp.

  2. Then I right click and switch the engine version to 4.13

  3. Then I open the microsoft visual studio .sln

  4. I go to the top toolbar and click Build/ReBuild Solution and get these errors:

Severity
Code
Description
Project
File
Line
Suppression State
Error
code
OtherCompilationError (5)
VRExpPluginExample
C:\VRExp-vrexppluginexample-91a5201eb76e\Intermediate\ProjectFiles\Error
1

Severity
Code
Description
Project
File
Line
Suppression State
Error
MSB3073
The command ““E:\UnrealEngine\Epic Games\4.13\Engine\Build\BatchFiles\Rebuild.bat” VRExpPluginExampleEditor Win64 Development “C:\VRExp-vrexppluginexample-91a5201eb76e\VRExpPluginExample.uproject” -waitmutex” exited with code -1.
VRExpPluginExample
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.MakeFile.Targets
42

If it works like a typical widget then yes, you just use Epics widget interaction components, the template has an example for base functionality with them.

Edit Never mind I see you are trying to use the example project. That only loads on 4.15 due to the map files and content being on 4.15, its harder to keep working across versions.

The template is also using the 4.15 version of the plugin since it has to be on 4.15 itself.

The plugin itself has multiple versioned branches, its just the template project that doesn’t. I updated some of the readme’s on the repositories to make more clear today.

I have tried multiple files, the above steps were from file, https://bitbucket.org//vrexppluginexample

The c++ component should be installed I have it working for other games. Is there a way for me to check?

I also did the locked 4.14 files and got the different errors below:

Locked-

  1. I extract the VRExpPluginExample to my C drive folder VRExp.

  2. I move the 4.14 locked files to the VrExp/-vrexpluginexample-91xxxxx../Plugins/VRExpansionPlugin folder

  3. Then I right click and switch the engine version to 4.14

  4. Then I open the microsoft visual studio .sln

  5. When Visual Studios opens up I go to the top toolbar and click Build/BuildSolution

It gives me the following errors:
{
Severity
Code
Description
Project
File
Line
Suppression State
Error

project requires the ‘OpenVRExpansionPlugin’ plugin. Install it and try again, or remove it from the project’s required plugin list.
VRExpPluginExample
C:\VRExp-vrexppluginexample-91a5201eb76e\Intermediate\ProjectFiles\LogPluginManager
1

Severity
Code
Description
Project
File
Line
Suppression State
Error

Failed to initialize the engine (PreInit failed).
VRExpPluginExample
C:\VRExp-vrexppluginexample-91a5201eb76e\Intermediate\ProjectFiles\LogCompile
1

Severity
Code
Description
Project
File
Line
Suppression State
Error

UnrealHeaderTool failed for target ‘VRExpPluginExampleEditor’ (platform: Win64, module info: C:\VRExp-vrexppluginexample-91a5201eb76e\Intermediate\Build\Win64\VRExpPluginExampleEditor\Development\VRExpPluginExampleEditor.uhtmanifest, exit code: CrashOrAssert (3)).
VRExpPluginExample
C:\VRExp-vrexppluginexample-91a5201eb76e\Intermediate\ProjectFiles\EXEC
1

Severity
Code
Description
Project
File
Line
Suppression State
Error
MSB3073
The command “C:\EpicGames\UE_4.14\Engine\Build\BatchFiles\Build.bat VRExpPluginExampleEditor Win64 Development “C:\VRExp-vrexppluginexample-91a5201eb76e\VRExpPluginExample.uproject” -waitmutex” exited with code 3.
VRExpPluginExample
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.MakeFile.Targets
37
}

Read the post above it, you are using the Template project which is 4.15 only, it wouldn’t load regardless.

Also if you change the plugin in the template to an older version than you will need to delete the intermediate and binary folders for the plugins probably, and the template map will still not load and you will get blueprint errors (could probably still be used for reference).

Also please please use code tags for long text.

I got the project to open in 4.15 only but I can’t do anything with the project. I am unable to set the gamemode to SteamVR and I get the blueprint error codes and template map error you mentioned I can’t open anything. Is there a way to fix it?

Hey . Steam voice works great and your 90,000 tri microphone is looks cool.
Am having trouble with one Vive client’s microphone but just need to tinker with SteamVR or Windows recording settings I think.
Is it possible to make the voice output play from a specific actor’s position? I.e I speak in my mic in a far-away room and my friend hears my voice through a speaker in the ceiling.
Easy voice chat is a very useful and unexpected bonus of using your code.

Many thanks.

Then you aren’t actually on 4.15 using the vanilla example project. You either changed the plugin that comes with the project or are running not in 4.15.

Re-download the project AS IS, run under 4.15 after compiling, it should be fine.

Sadly no, there is no way to access the AudioComponents used by VOIP for subsystems through a plugin currently (everything to do with them is locked in private structures and functions in the voice engine). I have high hopes that post the 4.16 overhaul of the audio engine that they may open up more but from all presentations I have seen so far they haven’t mentioned it (it is constantly asked for by the community).

You can run a custom build of the engine and provide access to the AudioComponentStream array (move it from private to public) or create a generic subsystem function to retrieve that array so you can run audio processing on it. The back end array stores voice information including the audio component reference in a Map with the UniqueNetID as a Key.

Edit Thats a free use microphone by the way, which explains the polycount :stuck_out_tongue: I should probably make my own in something to replace it.