The Disadvantages:

  1. We cannot inherit from UMGs
  2. Swapping out the UI is extremely painful.


What I purpose is to decouple the game/app logic from UMG UI (frontend) and store it in separate BP Actor (backend) or Actor Component, if possible.

The Advantages:

  1. Simplifies swapping out 2D Gadget, 3D Widget, & 3D Objects for interactivity. New UI could be in the form of supplemental Asset Packs!
  2. Allow Users to derive Full Function Child Classes, overriding any behavior.
  3. Simplify Project Integration (especially with the Player Character/Controller). Improved UX for the Game Developer
  4. Reduced/Cleaner Blueprints design.
  5. Reduced complexity of UI.




Other Recommendations:

  1. I would also encourage working towards a BP Module design that can be 'Added to Projects' (NO config file modifications) verses 'Create Project' to simplify integration and modification with existing projects because Merging Marketplace Projects with Existing Project sucks...
  2. If at all possible, avoid using Level Blueprints and Blueprint Macros because they aren't supported by the Blueprint Nativization Optimization Tool, and won't be converted into native CPP code. So your package doesn't slow down my game.


Thanks for reading. Please voice you're opinions both good and bad.