godotengine / godotengine/godot-docs
Need more clarity on the role of call_local vs call_remote when client and server are NOT the same executable
- Dominant language
- reStructuredText
- Stars
- 5.7k
- Forks
- 3.8k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 25
Description
**Your Godot version:**
4.2.1
**Issue description:**
The documentation for call_local and call_remote only work when the semantics are that of a single executable being both the client and the server. This is discussed in some level of detail in this forum post
https://forum.godotengine.org/t/how-to-get-detailed-debugging-on-rpc-calls/38139
Essentially if you have a server that is making a call to a client using rpc_id(), if the signature of the rpc on both parties is not call_local, the client will never receive the RPC call because it is being trivially rejected in the code as an RPC without call_local will not be executed on the client even if it is being called from a remote rpc caller TO the client.
In the context of the documentation what really needs to be stated is that if this multiplayer entity is the target of an RPC call, it needs to have call_local specified in the signature of the RPC call or it will never be called. This gets messy since both the server and the client have to have a method with the same name. This becomes even messier when you have the client calling a server which calls another server (i.e. client -> gateway -> authserver or client -> worldmanager -> ecommerceserver ). These scenarios which are fairly common architectures for any advanced networking are simply not explained well in the documentation.
The documentation
**URL to the documentation page (if already existing):**
https://docs.godotengine.org/en/stable/tutorials/networking/high_level_multiplayer.html
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.