godotengine / godot-docs

Godot Engine official documentation
https://docs.godotengine.org
Other
3.94k stars 3.21k forks source link

High level multiplayer docs should reference permissions issues for Android devices #4042

Open goatchurchprime opened 4 years ago

goatchurchprime commented 4 years ago

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:

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())

URL to the documentation page: https://github.com/godotengine/godot-docs/blob/c7d18873d52ab286af4ba76c1873e045b33fc0ce/tutorials/networking/high_level_multiplayer.rst

AThousandShips commented 3 months ago

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