IWYU Advanced C++ Boilerplate

I would love if there was further resources to aid me with architecture of projects post 4.15 when implementing in C++ using advanced features to be extended/exposed in the editor.

I think I’m getting on the right track now, though it’s involved some digging around and experimentation.
The specific areas I am interested in seeing current examples of best practice is using modules to increase reuse of code, I see plugins as just a further extension and am pretty comfortable with how they are setup.

Then there’s best practice with interfaces and components as a good design pattern for object/actor embellishment.
I also am having some difficulty understanding how to best use events/delegates to reduce coupling and also how to extend them all in the editor when you get to the added complexity of needing multicasting with projects of this structure. To be fair I might have just been stumped by clang, but it’s another area that’s generally been hurting my head.

Again, I think I’m getting to grips with things using 4.15 after extended hiatus. Further resources would be good though.

I’m thinking if there was something focused like a tutorial either specifically on some of these areas with useful example, or a basic project template as a whole to dig into.

Shouts to Rama and others!, the wiki has probably been the most help.

Also shouts to Allar! The conventions guide was a great help and I’m pretty happy with my Content folder at least!

Another one that would be nice to cover that I’m just starting to think about is advice/examples for using tags over enums. Why would I use one of these bitmask enums over a tag, for replication maybe as uint8? I dunno, these are some of the questions hurting my head that I am thinking about instead of how to make things awesome.

I.E: One of the first things I have experimented with is creating an InterfaceModule module, this has an IInterfaceModule derived from IModuleInterface which I use to access UGroupAssociation which is derived from UInterface.

The idea is other common interfaces could live here.

In the GroupAssociation header I declare bitmask enums to “embelish” any actor with information about it’s associations.
PlayerCharacter is associated with player, some group they joined… etc.
A building could be part of a group. This could be to distinguish player from enemy actors, faction/clan association… whatever…
Using uint8 does limit the capacity but would be light to transmit if needed.
Using interfaces seems the best approach for this.
I am wondering if using enums over tags to do this is the best approach though.

Also to reference the title I’ve given up trying to work with PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs.

If you download 4.16 preview and create a new c++ project with it, it actually sets up a quite nice template for how to use it properly.

I was causing me build issues when including plugins and such though. I would need to update too many files it seemed to get a build happy, so have it off until I get more stable.
It’s good to know the templates are being updated, thanks!

I’ve spent more time trying to get up to speed with programming / current state of code, I’ll add some further summary. I am trying to tackle some advanced areas and I’m finding many references that are out of date. I never really had any burning aspirations to be an engine programmer, yet I find myself digging into the engine source extensively.
There’s sure is plenty of information available, but the digging and inferring can be a productivity killer. Hopefully some areas of study will prove beneficial.
I would really prefer more source code reference over video tutorials and such, I’ve got to watch the Extending the Editor one now as well as digging into Slate to play with factories and detail customization. It’s things like that where you welcome as much help as possible! :slight_smile: