Daily Unreal Column #44 - Project General Settings
A lot of people forget about General Settings tab in the project. It is immensely helpful as it allows to overwrite classes for things like world settings or asset manager.
Today's tip is mainly a reminder about existence of General Settings tab inside project settings. There is a lot of useful settings that should be looked at the beginning of each project.
You can specify base classes for things like Console, World Settings, Asset Manager and more.
You can disable blueprint tick by default.
You can setup frame rate smoothing.
And more.
You can not disable blueprints ticking by default in project setting. I share this on Twitter(X) here: https://x.com/flassari/status/1852346724880175242, but typing it out here also so people don't need to go to X:
There's this setting, "Can Blueprints Tick by Default", that I often hear people recommending turning off so that actors will start with their tick function disabled.
But it doesn't really do that. Time for myth-busting!
First, a quick summary to spoil the rest of thread, if you hold your curser over that property the tooltip will tell you about the fringe cases where this property applies.
// Controls whether Blueprint subclasses of actors or components can tick by default.
//
// Blueprints that derive from native C++ classes that have bCanEverTick=true will always be able to tick
// Blueprints that derive from exactly AActor or UActorComponent will always be able to tick
// Otherwise, they can tick as long as the parent doesn't have meta=(ChildCannotTick) and either bCanBlueprintsTickByDefault is true or the parent has meta=(ChildCanTick)
It does NOT make it so that new actors have their "Start with Tick Enabled" property disabled. It never has, so I'm surprised people are still recommending this, anyone who would've tried it would've noticed immediately that it didn't do that.
Blueprints that derive from exactly AActor (or UActorComponent), OR from any C++ class where bCanEverTick is true, will ALWAYS be created with Tick enabled by default. Always. Period.
But that's fine. Remember that blueprints with no tick function, or a ghost tick function, will never tick anyways. Beware though that empty tick functions will still tick (in UE prior to 5.6), but you have to create it manually first for that to happen.
(See more at https://dev.epicgames.com/community/learning/tutorials/l3E0/myth-busting-best-practices-in-unreal-engine#emptytickoverhead)
Then, if a BP Tick function exists then it will be called, and if it doesn't exist then it won't get called. I feel having actors not tick by default even when users create a tick function is a bad practice, if someone creates a Tick then it was probably supposed to get called!
So what does this "Can Blueprints Tick by Default" project setting do? The tooltip tries to explain it but it's quite short form, there's a full description over here by one of our engineers:
https://dev.epicgames.com/community/learning/knowledge-base/baav/unreal-engine-faq-c-programming#code
But in short, it's for the ChildCanTick and ChildCannotTick class meta properties when bCanEverTick is false in the parent C++ class. When:
• TRUE: Child BPs can always tick unless you have ChildCannotTick meta property.
• FALSE: Child BPs can tick only when you have ChildCanTick meta property.
If you have a blueprint that is being affected by that property (and the parent class has bCanEverTick=false) then you'll know, because you'll get a warning on the node.