So, the definition of an AActor is “an object that can be placed or spawned in the world.”
This implies that every AActor has a location by default… and if you create a blueprint Actor, it does.
However, if you create a C++ AActor, it doesn’t.
Yes, it’s a question of just adding the equivalent of the following to your constructor…
USceneComponent* SceneComponent = CreateDefaultSubobject<USceneComponent>(TEXT("GivesMeAnActualLocation")); RootComponent = SceneComponent;
… but if you’re just thinking “I need something quick that exists in the world, but doesn’t really do anything special”, it’s easy to overlook this and then you run into all kinds of bizarre edge cases that can take hours to debug.
Condensed version: “please add a root scene component to the default AActor child template”
People can replace the lines in a second if they don’t need them, and if they’re new or are flying through a quick prototype, they won’t run into gotchas.