How to decide if content should be put into a plugin?

What is the general criteria and best practice for the decision of the placement of new modules/content?
I am currently studying the Lyra Starter Game to understand the best practice for the structure of the game, but it is quite complex.

There is for example this blueprint:
LyraStarterGame5_3/Plugins/GameFeatures/ShooterCore/Content/Game/Dash/GA_Hero_Dash.uasset
it inherits from:
LyraStarterGame5_3/Content/Characters/Heroes/Abilities/GA_AbilityWithWidget.uasset
This inheritance is quite counterintuitive. The more specific blueprint is stored in a plugin, which depends on content from the main game. Why is it not the other way around?

ShooterCore is a GameFeature which unlike a regular Plugin is able to depend on the game module.
GameFeatures can be enabled or disabled without breaking the Game Module allowing you to create new features in isolation similar to how a game mod would work.

Is there some documentation for that somewhere?

About as much as you might expect from Epic.

What would be missing from the page you linked then?

Everything about how to use them at runtime.
Everything about their behavior at runtime.
Creating new feature actions. (the docs don’t really make it clear you can/should even do this)
Best practices for organizing your project around features. (admittedly this might be asking too much)
Etc.

The doc basically tells you how to make a feature plugin and the built in feature actions.

1 Like