godotengine / godotengine/godot

MultiplayerSynchronizer in a bad state after saving branch as scene that it was referencing.

Open
#92,520 0 comments 0 reactions 0 assignees View on GitHub
bug topic:multiplayer
Dominant language
C++
Stars
117k
Forks
26.8k
PR merge metrics
PR metrics pending

Description

### Tested versions

- Found bug in 4.2.2 custom build that doesn't touch anything with Multiplayer Synchronizers

### System information

Godot v4.2.2.stable unknown - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1070 (NVIDIA; 31.0.15.3713) - AMD Ryzen 7 3700X 8-Core Processor (16 Threads)

### Issue description

MultiplayerSynchronizer should display all properties in its path. It looks like when I `saving branch as scene` for a property it was replicating it continued to try and replicate it even though the UI just showed it as referencing the root node with the property name. MultiplayerSynchronizer does not allow you to replicate the same property if you try and add it. The below images show multiple instances of the same property name, but I believe the Path is actually different. One image shows a reference to a path that no longer exists after I `saving branch as scene` and then renamed some of the nodes.

![image](https://github.com/godotengine/godot/assets/31255098/e3a3d909-86ea-4228-b37a-c7c95c63593c)
![image](https://github.com/godotengine/godot/assets/31255098/66020201-2043-4279-b92d-e3ca667c2268)
![image](https://github.com/godotengine/godot/assets/31255098/19292708-b83b-4258-b723-e5e95deda826)

### Steps to reproduce

Have multiplayer synchronizer. Replicate fields position and rotation on the root, and some children. Save the children branch as a new scene. Modify that new scene to have different node names. Instantiate and add that scene as a child to the initial root.

### Minimal reproduction project (MRP)

[MultiplayerSyncIssue.zip](https://github.com/godotengine/godot/files/15487709/MultiplayerSyncIssue.zip)

Contributor guide

Open the contributing guide

Research direction

Start with the attached MultiplayerSyncIssue.zip and reproduce the case using MultiplayerSynchronizer, saving a child branch as a scene and renaming its nodes. Inspect how the synchronizer displays and retains property paths after instancing the changed scene; done means obsolete paths are no longer replicated and the UI shows the actual distinct paths.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
game-dev, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.