Your Godot version:
3.2.3-stable
Deploying on the Android-based Oculus Quest
Issue description:
Trying to get the High level multiplayer API to operate on the Quest is challenging owing to the number of Android permissions that are intent on blocking it.
Note: Some Android devices might require the CHANGE_WIFI_MULTICAST_STATE permission for multicast to work.
You have to know that the High Level multiplayer API ultimately sits on top of UDP to know this is relevant.
I actually got the connection from a discussion here https://forum.unity.com/threads/change_wifi_multicast_state.667441/ where it was a new sub-permission to block apps from unintentionally doing UDP stuff because it consumes battery by requiring them to explicitly request it.
(After quite a lot of work, I have got some networking to happen, but only with the Quest as the server and the PC as the client, not the other way round. I don't know if this is a bug or just yet more permissions and blockages in this difficult system.
Functions that it is useful to print out are OS.request_permissions(), OS.get_granted_permissions(), IP.get_local_addresses() and IP.get_local_interfaces())
In both 3.x and in 4.x the Internet permission is mentioned
Unsure if the multicast details are necessary to mention on this page or if it's assumed users look into this when enabling specific features or where those features are enabled
Your Godot version: 3.2.3-stable Deploying on the Android-based Oculus Quest
Issue description: Trying to get the High level multiplayer API to operate on the Quest is challenging owing to the number of Android permissions that are intent on blocking it.
In particular, as well as the "Internet" permission, discussed here: https://github.com/godotengine/godot/issues/33852 you also need change_wifi_multicast_state, which is once mentioned elsewhere in the docs at: https://docs.godotengine.org/en/stable/classes/class_packetpeerudp.html#class-packetpeerudp-method-join-multicast-group where it says:
You have to know that the High Level multiplayer API ultimately sits on top of UDP to know this is relevant.
I actually got the connection from a discussion here https://forum.unity.com/threads/change_wifi_multicast_state.667441/ where it was a new sub-permission to block apps from unintentionally doing UDP stuff because it consumes battery by requiring them to explicitly request it.
(After quite a lot of work, I have got some networking to happen, but only with the Quest as the server and the PC as the client, not the other way round. I don't know if this is a bug or just yet more permissions and blockages in this difficult system. Functions that it is useful to print out are
OS.request_permissions()
,OS.get_granted_permissions()
,IP.get_local_addresses()
andIP.get_local_interfaces()
)URL to the documentation page: https://github.com/godotengine/godot-docs/blob/c7d18873d52ab286af4ba76c1873e045b33fc0ce/tutorials/networking/high_level_multiplayer.rst