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:

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.

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.

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.

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?

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.