Why is "Hidden in Game" not "Visible in Game"

You have a checkbox for “Visible,” which when checked makes something visible in the editor. This makes sense, checked = true/yes unchecked = false/no.

Then right under that you have “Hidden in Game,” which when checked has the opposite effect of hiding something in the game. This is counter intuitive and sometimes makes you have to stop and think about it because you have to remember that ticked (true/yes) is to hide it, not to show it. The C++ function of SetHiddenInGame() is equally counter intuitive as you are setting it to true to hide instead of true to show. Hide is naturally a negative term that relates well to false/no, while show is naturally a positive terms that relates well to true/yes.

It would be nice to see this terminology reversed, and then just reverse the ticks on all objects when the editor upgrades a project.

I guess its just a legacy thing… “was always like this…”
Changing that is more than update some UI checkboxes. That state is also queried by code and would require many (error prone) changes with no actual benefit.

I guess thats why they didnt redefine polarity when they discovered that electrons actually flow the other way :smiley:

1 Like

For me hide is not negative only a actor state.

A boolean type always is a question, you need read the variable as question

is it Hidden in Game?
yes / no

Make sense not? :slight_smile:

The default actor’s behaviours is visible, Few time you wanna “hide in game” Actors, so you need be proactive cheking the true. it wiil be crazy have a booleans for all actor default behaviours.

Somewhat related:

whats the difference between Visible and Hidden in Game? They both do the same; Hiding/ Showing the component.

1 Like

There is a conceptual difference between these two.

Visibility is for showing/hiding an actor for gameplay purposes. It makes an actor visible in Editor and in Game.
Hidden in Game is for debug purposes. You want your arrow component to be visible in your Editor, but it should not be visible in Game. So instead of deleting this component you just make it Visible and Hidden in game.

Edit: Also I’m against reversing. It is not another “Visible” but for gameplay, it should be toggled on only if you want specific debug behavior. By reversing a default you make a statement that by default it should be on and if you wish to have a non-standard behavior you disable it.

1 Like

I’m okay with your perspective on paper, but like others have said this will break a LOT of stuff. Not just in-editor but also in client projects. It’s not worth the risk.

We have a similar script in unity for hide del spawn mesh reference when play the game.

1 Like

And thats kids why naming conventions are must have.

For me a bigger question is, why do the AI still react and tick for hidden in game stuff?

Maybe this?
https://answers.unrealengine.com/questions/58195/can-you-disable-actors.html

I have seen that post and one of the answerers has asked exactly the same question concerning the AI and received no answer.

I don’t understand the confusion here as they’re both bools that when checked = true. As DomusLudus explained; Visible is like saying "Is this object Visible? and Hidden in game is like saying "Is this object hidden in the game (IE when playing). You can have something be both Visible and Hidden in game as one is for use in Editor and the other is while the game is running. “Visible” toggles the actor’s visibility regardless of the state (editor or gameplay). “Hidden in game” is used when you want the actor to be visible in the editor but not in the game while you play. There are a million use cases where you want something to be invisible to the player, but you still want to be able to see it while in the editor for placement etc.

The discussion is not about the use cases of either option. It is about the consistency of terminology. One is “ticked” true to indicate visible, while the other is “unticked” false to indicate visible.

I personally always try to follow the convention of true indicating positive/on/working/visible and false indicating negative/off/broken/hidden etc. Following this convention just eliminates some of the mental processing required when looking at the state of boolean values.

Again, the bool is asking “Should the object be hidden in game?” It’s TRUE value makes the object hidden in game. The Visible bool is asking “Should the object be visible in game?” They’re both using the same consistency of terminology. I think you guys are just misunderstanding the ‘question’ being asked by the engine. Your statement “One is “ticked” true to indicate visible, while the other is “unticked” false to indicate visible.” is incorrect, because that’s not the question that is being asked by the boolean.
Visible isn’t limited to in-game only. It’s about general visibility in the engine. So you can have Visible ticked to true so you can see the object in the editor, but also Hidden ticked to true so that it’s not shown IN THE GAME. lol

I suppose you could have demanded that the bool be renamed to “Shown in-game” rather than “Hidden in-game” but, the creator of the bool obviously didn’t want the value to be set to true as the default state. It’s all arbitrary really.