godotengine / godotengine/godot
Can't change parent of a node that has MultiplayerSpawners embedded. Server crashes.
- Dominant language
- C++
- Stars
- 117k
- Forks
- 26.8k
- PR merge metrics
- PR metrics pending
Description
### Tested versions
4.3.beta1
### System information
Windows 11 - Godot 4.3.beta1 - Forward+
### Issue description
Hello there, Sorry if I am reporting too many bugs for multiplayer issues. If I'm mistaken in what I've seen so far please let me know, but I haven't found a way to get to this specific goal, which is, to have a synchronized Entity through MultiplayerSpawners, and also have that Entity synchronize some of its children through MultiplayerSpawners too.
Thank you for your patience!
### Steps to reproduce
1. Make a main scene and add 2 nodes A and B as siblings to it. Each of them will synchronize the same scene through MultiplayerSpawners.
2. Create the empty Node scene D.
3. Create the scene C with a MultiplayerSpawner node that synchronizes the child scene D.
4. Run the game.
5. Connect server and client.
6. Instantiate C in A on the server, there is no need to instantiate the children.
7. Try to A.remove_child(C) and then B.add_child(C)
8. Server crashes
### Minimal reproduction project (MRP)
[minimal-project.zip](https://github.com/user-attachments/files/15910876/minimal-project.zip)
Contributor guide
Research direction
Start by running the attached minimal-project.zip with the stated Godot 4.3.beta1 setup and follow the eight reproduction steps, especially moving C from A to B on the server. Trace the MultiplayerSpawner and node-parenting path that handles this move. Done means the server no longer crashes and the synchronized entity remains functional after reparenting.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, godot
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 38/100