Can I have multiplayer update resources on child nodes?

Godot Version

4.5.1

Question

I’m new to using multiplayer, and a bit confused as to what is managed and what isn’t.

Anyhow, I’m trying to create an interactive map where I have multiple players connect to a world and as they travel around the world, they both contribute to a shared map. I’ve got the world itself spawning from a MultiplayerSpawner at the game root, and the players are themselves are spawned by a MultiplayerSpawner within the world level. There are also several objects that start already placed in the world when the scene is loaded, and which players can pick up and move around - when this happens, their multiplayer authority transfers to the players. It’s by placing these objects that the players are able to expand the map.

Anyhow, at the moment I have a custom map_node that is a child of the game level to manage the map, and which in turn contains a custom map_data resource which has the map data. When I originally designed this as a one player game, this worked well, but now I’m finding that when one scanner object updates the map, the changes only affect that player’s world and do not update the maps in other player’s worlds.

What’s the best way to keep the map_data resources in sync? They contain potentially big dictionaries of data points, so I don’t want to broadcast them every frame automatically. The MultiplayerSynchronizer also doesn’t seem to handle custom resources, so I can’t just add one to my map_node.

I was thinking of using @rpc calls, but was worried that this could still potentially have the maps get out of sync if some clients miss or misorder messages or connecting/disconnecting interferes with things.