cancel
Showing results for 
Search instead for 
Did you mean: 

Using MetaXR plugin in project with Linux Dedicated Servers

Aeromixx
Expert Protege

I receive these errors when building for Linux or Linux Dedicated server. Has anyone found any success? I am trying to prevent using any features with conditional check of whether the Platform is Linux.

 

Linux Dedicated Servers are good to support because they can greatly lower the costs of game server usage in the cloud opposed to using Windows instances

 

Thanks,

 

-Brandon
Aeromixx_0-1712244975349.png

 

10 REPLIES 10

Aeromixx
Expert Protege

May you might have an idea @Helder_Vinicius ? You helped me last time in a similar fashion. Thank you again

Aeromixx
Expert Protege

I just had to add Linux to the Supported platforms in OculusXR.upligin in the MetaXR plugin folder

"SupportedTargetPlatforms": [
"Win64",
"Android",
"Linux"
]

Aeromixx
Expert Protege

This seems to be a quick solve, but ultimately the Dedicated Server throws more errors.

Aeromixx_1-1712260242666.png

 

I ensure that none of these classes are touched if its Linux or a Dedicated Server and it doesn't appear to be enough. Any ideas how to maybe just get Linux to ignore these?

On your ProjectServertarget.cs file, try adding all the oculus related plugins to the ignore list as follows, besides the in-blueprint platform checking.

Add these lines below 

ExtraModuleNames.AddRange


(I don't remember the plugin names right now, these are placeholders)

DisablePlugins.AddRange( new string[] {
			"MetaXR",
			"OpenXR",
			"OculusMR"
			});

 
Let me know if it works

Aeromixx
Expert Protege

I have narrowed it down to this asset. Potentially the enum is hardcoded and inaccesible by Linux even when its not relevant to gameplay when bypassed to work on Linux

Aeromixx_3-1712262034090.png

Edit: Removing this fixes the server crash

Aeromixx_4-1712262412361.png



However, this is what enables tracking 

 

This is an asset that is referencing some oculus content, right? Movement sdk?

Disable this plugin for the server in my previous answer and you will still have tracking on your android application and hopefully no crashes on your server

Yes, the asset is OculusXRLiveLinkRetargetBodyAsset in MetaXR plugin
Aeromixx_0-1712269857873.png
Here is my ServerTarget.cs

Aeromixx_1-1712269933531.png

 

 

I believe the class type is Null with MetaXR plugin off. It's "successful" given Linux goes about it's thing. If I remove the node, it works. So no more crash, but this node has a MetaXR class as a default. If I remove it, tracking doesn't work. If I keep it, the Linux server successfully bypasses it but still when accessing that node in the Animation Graph, it's an unknown type and may throw a null/exception error

The "server version" of the player needs to have alternative ways to retrieve that tracking information. Maybe the local version of your player replicates an array containing the bones transforms somewhere and the server version of your player has to get it later, then on your animBlueprint, plug it into a different state machine based on a "is linux' bool. 

I'm not sure that's the best way to handle this but is what worked for me when using multiplayer hand tracking.