Skip to content

MultiplayerSynchronizer Causes Position Data Corruption When Using CharacterBody3D Physics #98942

Open
@code807

Description

@code807

Tested versions

Reproducible in: 4.3.stable

System information

Windows 10 - Godot v4.3.stable - Compatibility

Issue description

When adding a new node to a scene and changing its authority, if that node is a CharacterBody3D node with a MultiplayerSynchronizer syncing its position across clients, the new node will default to the position of the last node of the same type spawned in the same way.

Steps to reproduce

  • Under Debug->Custom Run Instances... enable Enable Multiple Instances and set the instance count to 2.
  • Launch the demo using Run Project (F5)
  • In one window, press "Host Server" and use WASD or Arrow Keys to move the character around.
  • In the other window, press "Connect to Server"
  • If the nodes are using move_and_slide, the new player node will inexplicably teleport to the host player's position.
  • To toggle the physics usage to demonstrate intended behavior, toggle comments on lines 13-15 and lines 17-18 in player.gd

I have also included the minimal reproduction repository on GitHub, with instructions there to reproduce the bug.

Minimal reproduction project (MRP)

multiplayer-sync-bug-demo.zip

Can also be found at: https://github.com/code807/godot-multiplayer-bug-demo/tree/main

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions