Skip to content

How the examples are authored

The five public examples are real plugin maps, not screenshots. Each map stores a Blueprint world-layout actor, a Blueprint gameplay-root actor, and a Player Start. The running game reuses the saved gameplay root, lighting, camera, and environment settings. The world-layout actor also owns an explicitly labelled editor-only composition preview: route/deployment geometry, obstacles, landmarks, and representative teams remain visible before Play, then hide while the runtime collision geometry and Mass population take authority.

This division is intentional: designers can inspect and change composition and gameplay definitions in Blueprint and Data Assets, while the high-volume entity loops remain in compiled Mass processors and bounded sample backends.

Find the editable content

Enable Show Plugin Content in the Content Browser, then open /MassForge/L_MF_ShowcaseMenu or one of the maps below.

ExampleMapBlueprint gameplay rootBlueprint world layout
Tower Defense/MassForge/MassForgeShowcases/Maps/L_MF_TowerDefenseBP_MF_TowerDefense_WorldRootBP_MF_TOWER_DEFENSE_WorldLayout
Third-Person Horde Defense/MassForge/MassForgeShowcases/Maps/L_MF_ThirdPersonHordeDefenseBP_MF_ThirdPersonHordeDefense_WorldRootBP_MF_WIZARD_HORDE_WorldLayout
Third-Person Horde Defense — VAT/MassForge/MassForgeShowcases/Maps/L_MF_ThirdPersonHordeDefenseVATBP_MF_ThirdPersonHordeDefenseVAT_WorldRootBP_MF_WIZARD_HORDE_VAT_WorldLayout
Battle Simulator/MassForge/MassForgeShowcases/Maps/L_MF_BattleSimulatorBP_MF_BattleSimulator_WorldRootBP_MF_BATTLE_SIMULATOR_WorldLayout
Survivor Roguelite/MassForge/MassForgeShowcases/Maps/L_MF_SurvivorRogueliteBP_MF_SurvivorRoguelite_WorldRootBP_MF_ARCANE_STAMPEDE_WorldLayout

The shared editable gameplay definitions are under /MassForge/BlueprintExamples/Data. They include the three attribute schemas, entity and projectile configs, damage definitions, instant and persistent effects, targeting policy, and abilities used by the examples.

Plugin content is a versioned reference. Duplicate an asset into /Game before changing it for a real project, then assign the duplicate on the project's Blueprint root.

What exists before Play

Select the MF_AUTHORED_*_WORLD_LAYOUT actor in the World Outliner. Its inherited Blueprint components contain the ground, routes or deployment markers, obstacles, landmarks, representative team staging, lighting, atmosphere, post process, overview camera, and concise teaching labels. Change Showcase, toggle the labels, or use Rebuild Authored Layout to rebuild the saved editor composition. The preview geometry has Hidden in Game enabled by design: it explains the level before Play without duplicating, flickering against, or pretending to own the runtime Mass presentation.

Select MF_AUTHORED_*_GAMEPLAY_ROOT to inspect the definitions used by that game. The Mass Forge Showcases > Authoring categories expose schema, Entity Config, ability, damage, projectile, and effect references. The root is the actor the GameMode reuses when Play begins; the GameMode does not spawn a hidden replacement.

Open the root Blueprint's Event Graph. Every published root contains a visible, commented startup flow:

  • Tower Defense calls Initialize Example from Event BeginPlay.
  • The other four roots call Start Mode with the map's explicit mode preset.
  • On Tower Defense Example Ready or On Showcase Example Ready is an empty project extension event for UI, audio, tutorials, objectives, or game-specific rules.

The startup calls are idempotent and retain a native fallback for C++-only or blank-map use. Automation rejects a public root whose graph, preset, comments, extension event, or editable definition references are missing.

The Player Start is also saved and labelled. Representative friendly and hostile formations are present before Play to communicate scale, routes, and faction intent. They are previews rather than simulated entities and are replaced by the real Mass population when Play begins. The gameplay-root Blueprint and editor monitor remain the sources for live entity state.

Blueprint and C++ ownership boundary

ResponsibilityBlueprint/Data AssetNative backend
Saved editor composition, light, camera, teaching markersYesReusable component implementation
Editor-only representative teams and route previewBlueprint component instancesHidden and replaced by runtime Mass presentation
Attribute names, defaults, bounds, and stable slotsYesFixed-capacity fragments and lookup
Entity/projectile trait compositionYesTrait build implementation
Damage, effects, targeting, abilities, cooldowns, costsYesValidation and atomic execution
Per-example definition references and balance inputsYesSafe startup and fallback diagnostics
Mass population iteration and fixed-step combatNoYes
Batched skeletal/VAT/HISM presentation updatesProfile/material assetsYes
Project-specific UI, objectives, progression, and controlsReplaceable sample Blueprint/native surfaceSample implementation

Mass Forge does not pretend that a Blueprint actor is simulating thousands of entities one by one. The public Blueprint and Data Asset surface owns authoring and orchestration. The C++ path owns the operations where Blueprint iteration would be misleading, unsafe during Mass processing, or unnecessarily expensive.

Make a project-owned variant

  1. Duplicate the example map and both referenced Blueprints into /Game.
  2. Duplicate only the Data Assets you want to change from /MassForge/BlueprintExamples/Data.
  3. Assign those project-owned definitions on the duplicated gameplay root.
  4. Edit the layout Blueprint or replace the placed world-layout actor with project scenery. Keep one actor tagged MassForge.AuthoredEnvironment if the sample GameMode should use its overview camera.
  5. Press Play and open Tools > Mass Forge Live Showcase. Confirm the active, simulated, represented, and rendered counts mean what your design expects.
  6. Open Mass Forge Entity Inspector and Gameplay Event History to verify attributes, tags, grants, effects, damage, and lifecycle events.
  7. Run Mass Forge Project Health before packaging.

Example-specific authoring surfaces

Tower Defense

The Blueprint root references the public starter schemas, a combat-ready Entity Config, direct and mitigated damage definitions, and a persistent slow. Runtime duplicates the definitions before applying match-specific values, so the shipping reference assets are never mutated.

Horde Defense and Survivor Roguelite

The Blueprint root references the schemas, unit and projectile configs, four ability templates, and entity/Actor damage definitions. Horde Defense selects the skeletal character backend; its VAT twin selects the VAT backend while preserving the same gameplay setup. Survivor changes population, objective, and progression behavior while using the same Mass Forge contracts.

Battle Simulator

The same root exposes symmetric faction combat definitions. Melee and ranged/support actions resolve through the shared damage/effect/projectile systems; the fixed-step army loop stays native because it is the high-volume portion being demonstrated.

Runtime fallback

If a developer launches a supported GameMode in a blank map, the sample can still spawn a temporary root and environment so the map fails usefully instead of crashing. Published maps must not use that fallback. Automation requires exactly one saved Blueprint gameplay root and one saved authored layout in every public map, and runtime audits require ActiveRoots=1 with StaleRemoved=0.

Rebuild the authored reference content

The checked-in .uasset files are the shipping source of truth. Maintainers can reproduce them in an isolated host in this order:

  1. Run Examples/MassForgeShowcases/Scripts/CreateShowcaseMap.py through the rendered Unreal Editor Python runner to create or refresh the maps, layout Blueprints, gameplay-root Blueprints, and Player Starts.
  2. Run UnrealEditor-Cmd <Project> -run=MFGenerateShowcaseBlueprintGraphs to author the five inspectable startup graphs.
  3. Run UnrealEditor-Cmd <Project> -run=MFGenerateBlueprintExamples -RebuildGeneratedAssets to rebuild the Blueprint Quick Start, 27 Data Assets, and four material instances (32 assets total).
  4. Run UnrealEditor.exe <Project> -ExecutePythonScript=<absolute path to CreateBlueprintQuickStartMap.py> -Unattended -NoSound -NoSplash to rebuild the authored learning map. Do not add -NullRHI: UE 5.6 actor placement consults the level viewport and its NullRHI hit-proxy path is not safe.
  5. Run MassForgeShowcases.Editor.StandaloneMaps and MassForge.Editor.BlueprintExamples.QuickStartGraph before promoting generated assets.
  6. Generate and save assets with Unreal Engine 5.6, the oldest supported version, then cross-load and test them in 5.7 and 5.8.

Continue with Playable Showcases, Blueprint Quick Start, and C++ High-Volume Integration.

Mass Forge documentation — generated from the shipping Markdown source.