So I've been wanting to come up with a robust skill system for game development that I can build in Unreal Engine 4 C++. I've been working on the overall design (and trying to improve my UML skills), so I'd appreciate any feedback you all have.
Basically, I've been trying to apply Decorator, Factory Method, and Command patterns to the composition and application of skills.
And for those of you unfamiliar with UE4 who look at this, hint: TScriptInterface is just a wrapper around a reference to an interface type.
EDIT:
I have a feeling that I'll need to add the use of the Visitor pattern as well so that I can decouple any references to a SkillUser or Skill's data from the SkillEffect and SkillMod "Apply_____" methods, respectively. As it stands, the methods have no way of getting to the data of a SkillUser, and I'd like to keep it that way since it can't be templated properly (which would have allowed the user to supply their own class as the SkillUser/Skill data object). Instead, it would be better to have it function like the Visitor pattern to where the SkillEffect/SkillMod is passed to the SkillUser/Skill and the SkillUser/Skill handles HOW the thing influences its data directly (since it's aware of the private data that is hidden from the interface). I have yet to add that to the UML design though.