Quick answer: Godot 4 RPC method called on non-host peers with default arguments instead of the sent values? Method signature mismatch between hosts - export configs must match exactly across peers.

Host sends damage_dealt.rpc(15, "crit"). Clients receive damage_dealt(0, ""). Same script on both sides.

Hash the method signatures

Add a startup check: each peer hashes the script's RPC method signatures and compares with the host. Mismatch means a stale client; disconnect early instead of silently corrupting state.

Check the export bitmask

RPC method config (authority/any-peer/sync) must match byte-for-byte. A teammate flipped call_local on one side; the codec rejects mismatched configs but only warns.

Enable RPC logging

multiplayer.set_rpc_log_enabled(true) shows you exactly what arrived. Wrong-arg cases appear as zero-arg calls with a warning that's easy to miss.

“RPC contracts are duck-typed in script - which means they're contracted in vibes.”

Generate a single RPCManager.gd that defines every method centrally. Both peers import it; signature drift becomes impossible.