(GAME-BREAKING): Players can set Camera Mode regardless of DevComputerCameraMovementMode setting in StarterPlayer

It seems I’m not the only one experiencing this issue, but this is actually very game-breaking for me, since my game employs a custom camera, which is completely unusable for some users who use custom camera settings.

This seems to only happen to me per-place, so I can’t create a minimal repro; however, I’ve extensively searched my codebase for anything that affects StarterPlayer.DevComputerCameraMovementMode, Player.DevComputerCameraMode, and similar settings, and found nothing. I’ve also created the following local script to print out the DevComputerCameraMode setting on the local player:

while wait(2) do
	print(game.Players.LocalPlayer.DevComputerCameraMode)
end

DevComputerCameraMode never changes from “Classic” on the local player


Yet I’m able to change the setting regardless:

This only happens in a live server, and never happens in studio.

My guess is that this is a race condition, which the CoreGui menu is taking a snapshot of when you join the game, before the value of DevComputerCameraMode, copied from the value set in StarterPlayer, is replicated. It changes from “Set by developer” to the UserChoice option after game.Loaded is set to true, as evidenced by the fact that this changes only after my ReplicatedFirst splash screen fades away.

So my guess is it’s a race condition something along the lines of this:

  • Player object is created on the server, with DevComputerCameraMode set to UserChoice by default
  • Server sets DevComputerCameraMode to the value equivalent to StarterPlayer.DevComputerCameraMovementMode
  • Player object is created on the client, with DevComputerCameraMode set to UserChoice by default
  • The CoreGui menu takes a snapshot of this value on the Player object
  • Client receives the newly replicated value of LocalPlayer.DevComputerCameraMode
  • The CoreGui ignores this new value because even though the value has changed.

I’m guessing maybe the Changed property of Player isn’t firing client-side when this all happens, and that’s why there’s a race condition? The RobloxGui menu seems to be listening to Changed to see if the DevComputerCameraMode property changes, but this is probably why.

This is the place that this happens on:

This bug is driving me nuts, since it’s completely out of my control, and it actively harms my users’ experience.

7 Likes