Intrusive FreeCamera

There is a gui called FreeCamera that is sometimes inserted into players’ PlayerGui which allows them to have a free camera to fly around the place. It seems to be inserted into my games for me without me asking for it, and it seems to be available for some people who don’t have edit access to my place. It is a backdoor to my game that was created without my knowledge, and it is intrusive.

I don’t think that it is respectful to me as a developer. I would like the feature to be removed.

If not removed then atleast treat it like the control scripts: public knowledge that it exists, and easy to overwrite.

7 Likes

This seems more like a bug than a feature, in my opinion. It seems like unwanted behavior.

4 Likes

I agree with Chipio, it would probably be a good idea to move this to Client Bugs.

It may be related to this feature. It creates a ScreenGui named FreeCamera in the PlayerGui, but it’s supposed to only exist for developers. Can you link the game this is happening on? How often is “sometimes”? Do you have any videos of players using this, or have you only heard about it from players?

4 Likes

Freecam is documented here and here.
I’ll look into adding further documentation to the wiki.

Freecam will install itself under either of these circumstances:

  1. You have edit permissions
  2. You work at Roblox

If you run into a situation where it installs but neither of those are true, please post repro steps and tag me.

1 Like

What is the specific condition for condition 2?

You need to be in either of these groups:


I find it intrusive that employees insert a backdoor to freecam fly around my product.

5 Likes

Nowhere in the two threads of documentation does it say how to prevent the code from being inserted into my games.

1 Like

It’s ROBLOX’s game that you are using as a platform to host your own. It is up to them what they put in your game, and if this includes freecam ability, then that is absolutely fine.

10 Likes

There are absolutely no problems that could be caused by this unless you have something to hide; in which case, it shouldn’t be on Roblox in the first place.

1 Like

The same reasoning would justify employees spawning cars/weapons/etc in your game for fun. Their platform – they can do whatever they want. That’s not very good reasoning. Roblox has generally been good at respecting developer intentions with their creations (asking permission to use games in blog posts/etc), so I don’t see why it’d be any different here.

I assume Roblox staff use the freecam for marketing reasons (go to any game and fly through to get nice clips for promotional videos). If a developer doesn’t want their game to be used in promotional videos, then there’s no reason to give out freecam.

10 Likes

Yes. My post should have emphasized that ROBLOX staff obviously don’t do that. They aren’t allowed to abuse the freecam or any of the other ingame features they recieve, which should be the reasoning in itself to why they have access.

1 Like

https://en.wikipedia.org/wiki/Principle_of_least_privilege

Both the reason for which principle of least privilege is used and the fact that it’s not used here are relevant. You wouldn’t want someone giving out lifetime OBC for lolz cough. Not all employees are making marketing videos either, or whatever they get freecam for.

This is a really minor case, but least privilege is still applicable. We should only give freecam to those who need it, and if a developer doesn’t want staff using it in their game, then we should abide by their wishes.

if game.Players.LocalPlayer.PlayerGui:FindFirstChild(“FreeCam”) then game.Players.LocalPlayer.PlayerGui.FreeCam:Destroy() end

6 Likes

Arguing against free cam injection is kind of a moot point. The thing exists entirely locally. Someone with access activating the free cam is no different than any script kiddie inserting a free cam script.

If you don’t want people in general flying around your map, then you’ll write anti-freecam code, which will block the roblox script in addition to regular script injections.

1 Like

I shouldn’t have to write something to remove code from my game. Especially code for other people to fly around my game. If Roblox marketing would like to fly around my level they should ask me before, not after.

2 Likes

They more than likely will.

The same level of trust goes into not abusing the freecam as it does that some moderator doesn’t go and ban you because they don’t like you. The latter doesn’t happen, so we have to trust the former doesn’t either.

Why does the free camera code need to exist in my game for them before they ask? Enabling the code should be the developers’ approval.

Ease of access.

I had a look at this FreeCamera code to get an idea of how it would interact with my games. I have made the following observations:

  • Injects ScreenGui named “FreeCamera” into PlayerGui.
    • Several scripts are added afterwards:
      • FreeCamera (LocalScript)
      • FreeCamera.Maid (ModuleScript)
      • FreeCamera.Spring (ModuleScript)
  • Triggers an action when the P key is pressed while LeftShift is held down.
    • This keybinding is global and cannot be unbound.
  • Entering freecam mode
    • sets MouseIconEnabled to false.
    • sets the CameraType to Scriptable.
    • anchors the character’s HumanoidRootPart.
    • sets the character’s WalkSpeed to 0.
    • disables all ScreenGuis currently in the PlayerGui.
    • Disables several Core values:
      • SetCore: PointsNotificationsActive
      • SetCore: BadgesNotificationsActive
      • SetCoreGuiEnabled: Health
      • SetCoreGuiEnabled: Backpack
      • SetCoreGuiEnabled: PlayerList
      • SetCoreGuiEnabled: Chat
  • Exiting freecam mode
    • sets MouseIconEnabled to true.
    • sets MouseBehavior to Default.
    • sets character’s WalkSpeed to 16.
    • Unanchors the character’s HumanoidRootPart.
    • sets FieldOfView to 70.
    • sets CameraType to Custom.
    • Enables all previously disabled ScreenGuis.
    • Resets Core values to their state when freecam was entered.

This code makes assumptions about the current state of the items it touches. It fails to account for changes to these items made by other scripts. It fails to correctly restore state of these items. Overall, this code is very intrusive, and I do not appreciate it being injected into my games.

14 Likes