Meta: Difference between revisions

Rain (talk | contribs)
m Fixed spelling.
Line 60: Line 60:
Both Unity and Unreal Engine allow various OpenXR vendor plugins to be used, one of which is Meta's Oculus XR Plugin internally called the OVRPlugin. The OVRPlugin is a unified plugin that allows developers a single unified implementation for their Quest devices and OpenXR compatible devices for the PC. This sounds like an easy solution to target all current popular high-end VR headsets in one implementation.
Both Unity and Unreal Engine allow various OpenXR vendor plugins to be used, one of which is Meta's Oculus XR Plugin internally called the OVRPlugin. The OVRPlugin is a unified plugin that allows developers a single unified implementation for their Quest devices and OpenXR compatible devices for the PC. This sounds like an easy solution to target all current popular high-end VR headsets in one implementation.


Under the hood Meta has taken steps to lock down this plugin to only work with their own devices. This is done by checking the name of the runtime, the presence of the nonstandard XR_META_headset_id, and the lack of legacy OVR support. <ref name=":2" />
Under the hood Meta has taken steps to lock down this plugin to only work with their own devices. This is done by checking the name of the runtime, the presence of the nonstandard XR_META_headset_id, and the lack of legacy OVR support.<ref name=":2" />


It would be understandable that Meta locks down their own vendor plugin if it were incompatible with other OpenXR devices, in which case the engine could fall back to another implementation. However this is not the case as Meta makes it deliberately difficult to implement such fallbacks. For example in Unity if the generic OpenXR support is enabled while the OVRPlugin is enabled it will claim incompatibility and revert this selection to just OVRPlugin.<ref name=":2" />
It would be understandable that Meta locks down their own vendor plugin if it were incompatible with other OpenXR devices, in which case the engine could fall back to another implementation. However this is not the case as Meta makes it deliberately difficult to implement such fallbacks. For example in Unity if the generic OpenXR support is enabled while the OVRPlugin is enabled it will claim incompatibility and revert this selection to just OVRPlugin.<ref name=":2" />
Line 70: Line 70:
As the result of their actions Meta's users are now locked in Meta's own runtime and remote streaming solution if no workarounds are applied either in the game or in the runtimes of third party's. This makes it seem like only Meta's runtime is stable and compatible with the latest games. Likewise, this forces all other headset vendors to implement similar workarounds for their devices.
As the result of their actions Meta's users are now locked in Meta's own runtime and remote streaming solution if no workarounds are applied either in the game or in the runtimes of third party's. This makes it seem like only Meta's runtime is stable and compatible with the latest games. Likewise, this forces all other headset vendors to implement similar workarounds for their devices.


Game developers are adviced to avoid the OVRPlugin where possible and rely on generic OpenXR implementations that support the standard correctly. Effected users can try the Meta Plugin Compatibility option in their SteamVR settings. The latest version of Virtual Desktop should also have the workarounds implemented. Players of Unreal Engine games report that launching the game with -hmd=openxr can bypass the plugin.
Game developers are advised to avoid the OVRPlugin where possible and rely on generic OpenXR implementations that support the standard correctly. Affected users can try the Meta Plugin Compatibility option in their SteamVR settings. The latest version of Virtual Desktop should also have the workarounds implemented. Players of Unreal Engine games report that launching the game with -hmd=openxr can bypass the plugin.


==Lawsuits<!-- I feel like this should follow the table format that I established with the Valve page -->==
==Lawsuits<!-- I feel like this should follow the table format that I established with the Valve page -->==