Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modified replication config of instanced MultiplayerSynchronizer scene doesn't get saved #84793

Open
romlok opened this issue Nov 12, 2023 · 1 comment

Comments

@romlok
Copy link
Contributor

romlok commented Nov 12, 2023

Godot version

v4.1.3.stable.official [f06b6836a]

System information

Godot v4.1.3.stable - Debian GNU/Linux trixie/sid trixie - X11 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 (nvidia) - Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz (6 Threads)

Issue description

If one has a scene based on a MultiplayerSynchronizer node, its associated SceneReplicationConfig can be modified in the editor on instances of that scene. Doing so changes the config in the MultiplayerSynchronizer's base scene, since the SceneReplicationConfig is shared.
If the MultiplayerSynchronizer scene is open in the editor, it gets a * marker to indicate it's been changed. But if said scene is not already open:

  • There's no indication that anything needs to be saved;
  • Saving the scene which contains the instance will not save the replication config;
  • Opening the MultiplayerSynchronizer scene after the fact will not show the *;
  • Running the project will not save the modified MultiplayerSynchonizer scene
  • Thus, running the project will not use the modified replication config
  • You'll not get any warning about unsaved changes when quitting the editor

This lost me a lot of time and brainpower yesterday, since I could see in the editor that the config was there, but it didn't appear to do anything. Then I re-opened the editor this morning and the replication config entries I had added the previous day were missing! 😖

Possibly somewhat related to #80717 and #74381 (which appear to duplicate each other?)

Steps to reproduce

  1. Create and save a scene with a MuiltiplayerSynchronizer as the root node.
  2. Create and save another scene which has the previous MultiplayerSynchronizer scene instantiated as a child node.
  3. Close the MultiplayerSynchronizer scene's tab.
  4. Add files to VCS (eg. Git)
  5. Add a property to the instanced replication config in the UI
  6. ⚠️ The scene has no "changes made" indicator
  7. Save the scene anyway
  8. "Scene -> Reload saved scene"
  9. Run the project
  10. 👀 Notice that the replication config still has the extra property
  11. 👀 Notice that no changes have been made to the files according to the VCS
  12. "Project -> Reload current project"
  13. 👀 Notice no warning about unsaved changes
  14. ⚠️ Notice that the replication config doesn't have the extra property any more

Minimal reproduction project

The repro is simple, but this covers reproduction steps 1-3 if you need: sync-scene-config.zip

@jjolmo
Copy link

jjolmo commented Sep 13, 2024

Found some possible related issue:

Create a scene, with a mpsync. Then create an inherited scene. Try to change a variable in the replication panel from the MPSYnc in the inherited scene.

It will be completely ignored, no changes in any file at all. You can see in the editor, but when you quit godot it will dissapear

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants