A few questions about creating in the unreal engine.

[Sorry for language mistakes. I am not a native speaker]

Hi. I have solid skills in c++ programming and am not afraid to create more advanced things using this language. With UE I am just starting out, so many things are unclear to me in terms of the engine itself.

In the future I would like to create some kind of rpg game, with simple graphics, but advanced enemy logic and other interesting mechanics. To begin with, I don’t intend to create anything big, but start with small projects focusing on fine-tuning some specific mechanics. I would like to gather experience from these small projects to use later on something bigger.

This final project will have a single player mode, mode for 2-3 players to play with friends, but also the possibility of creating dedicated servers for example for 32 players with an open map.

The question is whether to be mainly interested in GameplayAbilitySystem and building gameplay based on Gameplay Tags. I realize that this system is huge and when building some tiny projects it is overkill, but I treat learning it more as a long-term goal and would like to learn the whole pattern already with small projects. Or rather focus on creating some custom implementations? What does it look like in terms of performance (multiplayer)? I usually create most of the project in c++, based on that I create blueprints, which only supplement what can’t be done comfortably in c++, and is not that important in terms of performance. I guess when creating own implementation I can easily mess it up if I keep adding something new.

Another small question - about TObjectPtr. It is supposedly Epic’s own implementation of pointers. I read that they encourage to use it because it gives more control to the engine. What does this look like in terms of performance? Supposedly in the shipping they are compiled to raw pointers.