"Code Organization" Classes

I’d like to know what derivable classes I should know about and should be implemented in any (well-organized) project that supports both single and multi player. I’m not talking about the obvious things like actors, characters etc, but about the things that work in the background and can be overlooked.

There are probably hundreds or thousands of classes to derive from when adding a new C++ class via the editor and I’ve got a feeling I won’t ever need 95% of them. But if I just start writing code without at least being aware that certain classes exist for a good reason, it will probably all end up where it doesn’t belong.

So far I’m aware of

  • GameInstance
  • GameMode
  • GameState
  • HUD
  • PlayerController
  • PlayerState
  • PlayerCameraManager (?)
  • WorldSettings (?)
  • possibly BlueprintFunctionLibrary

I don’t know what all of these are actually good for and how they are different from each other, but at least having heard of them is a good start I guess. The rest will become clear.