Create Unreal Engine subsystems entirely in Blueprint.
Subsystems are a clean way to hold global or scope-specific state without placing an actor, building a singleton or passing a reference through every graph. Unreal Engine creates and destroys them with the scope they belong to, and exposes them through its standard Get Subsystem nodes. Normally, defining a new subsystem requires C++.
Blueprint Subsystems opens all six subsystem scopes to Blueprint:
Engine — one instance for the whole process.
Editor — one instance for the editor session, for tools and validation.
Game Instance — one instance for the game session, across level changes.
World — one instance for each world or level.
Tickable World — a world subsystem with a Blueprint Tick event.
Local Player — one instance per local player, including split-screen players.
Use the full subsystem lifecycle
Implement Initialize, Deinitialize and Should Create Subsystem as Blueprint events. World subsystems also expose Post Initialize and World Begin Play, tickable world subsystems expose Tick, and local player subsystems report Player Controller Changed. Initialize Dependency lets one subsystem explicitly start another subsystem of the same scope first.
Keep Blueprint subsystems in packaged builds
Subsystem Blueprints often have no asset reference pointing to them, so an ordinary cook can leave them out of a packaged game. The plugin discovers Blueprint subsystem classes, registers them with the engine and adds them to the cook. Discovery can cover every mounted content root or selected folders, and individual classes can always be listed explicitly.
Control discovery and registration
Project settings let you enable automatic discovery, choose search paths, add explicit subsystem classes, log registration and opt into early registration when a Game Instance subsystem must exist during GameInstance initialization. Blueprint nodes can also register, unregister, inspect and rescan subsystem classes at runtime.
Recompiling a Blueprint subsystem in the editor can recreate its live instances so the new graph takes effect immediately. This behaviour is configurable and is skipped during Play In Editor.
There are no actors to place. Create a Blueprint Subsystem from the Content Browser, choose its scope and use the engine's normal Get node. Full C++ source is included.
Documentation: Blueprint Subsystems documentation