Currently there are two base objects, which stand at opposite side of spectrum.
One is UObject, which implements only bare minimum need for reflection/serialization/editor to work. On the opposite side is AActor which implements everything. Neither are good for things like AGameModeBase or AGameStateBase (for example).
What we need is something like UGameObject base which would:
- Support componenets.
- Support Network Replication (Off by default). Preferabbly networking support could be moved to separate component, and any object with ie. NetworkComponent could support replication. I realize, that it would be huge refactor, so I don’t even expect it will happen in foreseeable future.
- Have single Root component (but does not need to be Scene/Transform component).
- Support transform if root is set to scene component.
- Can be rendered in level if have Mesh component.
That’s it. No build in support for Collision, no support for mouse click events, etc.
Currently bare bone actor takes about 1.5kB of memory. Not much. But considering that most of actors does not need most of the fucnionality implemented in AActor, it adds up to waste.