04-04-2024 08:38 AM - edited 04-04-2024 08:42 AM
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
04-04-2024 08:48 AM
May you might have an idea @Helder_Vinicius ? You helped me last time in a similar fashion. Thank you again
04-04-2024 11:44 AM
I just had to add Linux to the Supported platforms in OculusXR.upligin in the MetaXR plugin folder
"SupportedTargetPlatforms": [
"Win64",
"Android",
"Linux"
]
04-04-2024 12:51 PM
This seems to be a quick solve, but ultimately the Dedicated Server throws more errors.
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?
04-04-2024 01:01 PM
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
04-04-2024 01:19 PM - edited 04-04-2024 01:27 PM
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
Edit: Removing this fixes the server crash
However, this is what enables tracking
04-04-2024 01:34 PM
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
04-04-2024 03:32 PM
Yes, the asset is OculusXRLiveLinkRetargetBodyAsset in MetaXR plugin
Here is my ServerTarget.cs
04-04-2024 03:35 PM
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
04-04-2024 06:20 PM
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.