Hide objects locally

As a Roblox developer, it is currently too hard to hide objects locally.

If this issue is addressed, it would improve my development experience because I would not have to opt for these options:

  1. Set transparency.
    I’d have to handle various cases like when children are added to a model I want to hide or when changes on Server overrides the local transparency modification. Big maps and areas with lots of parts would require a huge loop to hide. Then there’s collision and custom intractability you need to consider.
  2. Parent to nil/Storage.
    I can parent everything I want hidden into one folder, and then parent that folder to nil. But parenting other players’ characters to nil feels like it can bring up issues. Might not even be supported in the future. I also get a lot of “LoadAnimation exception requires Humanoid in workspace” error messages which is currently flooding my Developer Console.
  3. Place objects far away.
    Placing areas thousands of studs away will technically make them invisible. But the distance required is arbitrary and it’s not a very practical solution.

Use Cases:

  1. Gameplay reasons.
    In one of my games, the player’s “room/scene” is a 512x512 ocean. So to accomodate 15 players, the game would require almost 2000x2000 of Smooth Terrain water which is not ideal. I very much would prefer to create one ocean, put all players in it, and hide them from each other. Another game I have, Action!, which is about movie-making, has each player in their own “stage” where they can record movies. This can be done either alone or with a team and I wish there was a better way to hide the stages from each other.
  2. Chunk loading.
    Hide specific objects from rendering for performance reasons.
  3. Similar requests.
    Place Levels [Feature Request]
    Player.Room Property
6 Likes

I’ve used this successfully before: BasePart | Roblox Creator Documentation

Set it to 1 from the client on the BaseParts you want to selectively hide.

Just my 2c but I did this for 2 event games with pretty large traffic at the time (Egg Hunt 2018 and Aquaman: Home is Calling) and we did not receive any bug reports related to that. I think we parented them to ReplicatedStorage rather than nil though.

11 Likes

I would like this more for Studio reasons. I have a lot of cruft in my game that I would like to be able to just temporarily turn off sometimes so I can work unimpeded by props and parts and particles.

E.g. Turning off furniture and props in a room while I’m working on the walls, turning off foliage so I can build new foliage without having to move somewhere else in the map, turning off all particle effects in a particle-heavy scene while I’m building, etc.

Doing this with a plugin involves a lot of careful tracking lest I accidentally lose the original parent and destroy things forever, or else involves careful tracking of collision group and transparency settings which can also be catastrophic if done wrong at large scales.

In engine too I can imagine this being useful for cleanly turning off 3D effects when they’re unused without resorting to hacky-feeling methods like unparenting. It’s much nicer to just disable things rather than have to settle on some weird game standard for what to do with deactivated assets.

Engines like Unity and even Core have the ability to just turn off instances, and having worked in Unity some, it is very convenient.

I would expect this to effectively disable rendering of the instance and it’s children, and all physics simulation.

4 Likes

I just want to clarify that I am aware that this request is possible already. The three methods I listed all work and I am using them in production for my games.

Rather, this is a request to make the process simpler. For example, the transparency option would require you to loop through all instances, not just parts but SurfaceGuis, Beams, etc., as well, which require other property modifications to hide. To unhide them, you can’t just set Transparency = 0 again because some parts might have been Transparency = 0.5 originally.

Hiding multiple objects is just unnecessarily complicated and I think it should be natively supported. Unity, for example, has Layers/Culling Masks and gameObject.SetActive().

2 Likes