Native C++ Use Cases

Can someone explain to me what situations would be “fine” for someone NOT to use the Engine-exposed C++ code in? I’ve been tinkering around with interfaces and structs, wishing I had features that just don’t exist in Unreal C++ (interfaces especially are way too limited).

As far as my understanding goes, so long as I use Unreal’s smart pointers for memory management, don’t care for things to be visible to Blueprints, and don’t need the data replicated to a client (since it’s all back-end data and calculations that doesn’t need to be shared with the user directly), then it should be fine to just use regular old C++, yes? Or should I still be using things that derive from UObject?

I’m confused regarding which objects trigger Unreal compiler errors and when I do and do not need to be using them based on the use case. Any level of clarity would be of great assistance.

You can do anything and use pure C++ code whenever you want. There is nothing limiting you in any way that I can think of. If you get compilation errors that you dont understand, try the following two things:

  1. Compile from within the editor.
  2. Remove all user generated macros like UE_LOG(). Macros can cause the error to be move faar away from where the problem actually is.

Every time you use a macro, compile and check that it works.