Scriptable Camera stops acting Scriptable when player changes Camera Mode preference

When the client changes their Camera Mode preference in Roblox’s in-game Settings (for example, from Default to Classic), the stock CameraModule switches Camera behavior to match that mode even if the Camera is set to the Scriptable CameraType.

Expected behavior:

  • Developer sets CameraType to Scriptable.
  • Client changes their Camera Mode preference.
  • Client’s Camera is still locked in the last CFrame set by the developer until the developer sets CameraType to Custom, at which point the desired Camera Mode takes effect.

Current behavior:

  • Developer sets CameraType to Scriptable.
  • Client changes their Camera Mode preference.
  • Camera immediately begins acting as a Classic camera or Follow camera (based on what the player chose) even though the CameraType property of the Camera object is still set to Scriptable.

Repro steps:

  1. Open a blank baseplate, Play solo.
  2. Select the Camera and set CameraType to Scriptable. Notice how as you walk around, the Camera stays locked in place.
  3. Open the hamburger menu, go to the Settings tab, and change your Camera Mode setting. Notice how the Camera is no longer locked in place, and acts as though it is not set to the Scriptable CameraType.
17 Likes

This is still an issue. Users can inadvertently ruin their game session by switching camera modes and be forced to rejoin to fix it.

5 Likes

Still an issue. Our game SCP: Roleplay has been receiving bug reports and complaints from users about this ever since its release. Unfortunately, the moment the camera mode is changed in the menu, the game breaks as we use a custom camera controller. This can cause unsuspecting players to permanently leave the game and assume it as low effort / broken.

3 Likes

My best suggestion is to use a while wait(0.1) do loop to constantly set the camera to scriptable, but that isn’t the greatest solution and I’m not sure if that would even work

1 Like

I can confirm that this is still an issue. Setting the CameraType to Scriptable in RenderStepped, and even connecting a listener to the camera’s CameraType property, that changes the mode to Scriptable, does not remedy this.

The CameraType is constantly Scriptable, and sometimes it shows up as “Set by developer” in the settings menu, yet most times this is not the case, and it is still changeable by the user. The circumstances under which this happens are seemingly random.

2 Likes

I agree with you. I have to find ways to prevent players from resetting the camera using the settings. Several years have passed and no one has read this post.

Only one way helped me: In StarterPlayer, change the DevComputerCameraMode property to the “CameraToggle” mode (Instead of UserChoice)… Only this method may not help, as you wrote.

1 Like