Skip to content

Extra Modules

Recep Samet Yıldız edited this page Sep 1, 2026 · 1 revision

Extra Modules

UEBPCracker's core 28 modules cover Actor Blueprint operations. The extra module system extends this with domain adapters for Unreal's other asset types and editor systems.


Domain Registry

All extra modules operate through a central domain registry (FUEBPDomainRegistry):

Domain ID Description Status
input Enhanced Input (Actions, Mapping Contexts, Modifiers, Triggers) ✅ Partially complete (Extra 01–04)
data Data Assets, Data Tables 🗺️ Planned (Extra 12)
gameplay Gameplay Tags 🗺️ Planned (Extra 11)
ai Behavior Tree, Blackboard 🗺️ Planned (Extra 17)
fx Niagara Systems 🗺️ Planned (Extra 18)
project Project Settings, Developer Settings 🗺️ Planned (Extra 10)
ui Widget Blueprint, UMG 🗺️ Planned (Extra 20)

Each domain has 5 base operations per the registry: create, inspect, patch, validate, delete.
bAvailable=false for domains not yet implemented.

Check availability:

GetDomainCapabilities (domain="all")

Common Architecture (Extra 01–02)

Extra Module 01 — Domain Registry & Security

Established the compile-time domain registry and cross-domain security:

  • FUEBPDomainRegistry — static table of domains, ops, availability
  • FUEBPDomainSecurityPolicy — validates declared operations; unavailable domain → UEBP.DOMAIN_OPERATION_NOT_ALLOWED
  • CanonicalizeLockResources — asset → state → config lock order; duplicates → UEBP.CROSS_DOMAIN_DEPENDENCY_INVALID
  • FUEBPDomainMutationLease — reuses global FUEBPMutationLease (second domain → OPERATION_BUSY)
  • get_domain_capabilities tool (L0 read-only)

Results: Automation 20/20, MCP 8/8, restart 6/6.
Policy fingerprint: sha1:5308baefe0090518290f7e524fcf4ef1f26ed82a (restart-stable)

Extra Module 02 — Asset Factory & Inspector Infrastructure

Foundation for all domain asset operations:

  • FUEBPDomainAssetService — canonical path enforcement, write-root + reserved namespace, dirty/read-only/source-control checks, typed options
  • Atomic create pipeline: IAssetTools::CreateAsset → adapter typed write → PostEditChangeIsDataValidSaveLoadedAsset → re-resolve → inspect
  • core.domain_record.v1 foundation adapter (UUEBPDomainAssetRecord — only label typed option as proof-of-concept)
  • Factory/inspector adapters are PRIVATE interfaces
  • FUEBPAssetSaveService::Save(UObject*) extended for domain assets

Error codes: DOMAIN_FACTORY_NOT_AVAILABLE, DOMAIN_ASSET_CLASS_INVALID, DOMAIN_ASSET_ALREADY_EXISTS, DOMAIN_ASSET_CREATE_FAILED, DOMAIN_ASSET_VALIDATION_FAILED, DOMAIN_ASSET_POSTCONDITION_FAILED


Enhanced Input Domain (Extra 03–04)

Extra Module 03 — Input Action System

Full UInputAction management:

  • Create, inspect, and configure Input Actions
  • 4 value types: Boolean, Axis1D (float), Axis2D (FVector2D), Axis3D (FVector)
  • Typed allow-list for action configuration
  • Canonical modifier/trigger inspection on actions
  • Read: inspect_input_action, list_input_actions
  • Write: create_input_action, set_input_action_value_type, add_action_modifier, add_action_trigger

Results: Automation 21/21, restart 2/2, MCP 10/10 + restart.

Extra Module 04 — Input Mapping Context & Key Mapping

Full UEnhancedInputLocalPlayerSubsystem and UInputMappingContext management:

  • Create/inspect Mapping Contexts
  • Exact EKeys — keyboard/mouse/gamepad/motion/XR key support
  • Boolean–Axis3D compatibility enforcement
  • Managed add/remove of key mappings
  • Undo/recovery for mapping changes
  • Mapping order preservation

Results: Automation 22/22, restart 2/2, MCP 14/14 + restart.


Planned Extra Modules

Extra 05 — Input Modifier System

UInputModifier subclass management on Input Actions and Mapping Contexts.

Planned modifiers: InputModifierDeadZone, InputModifierScalar, InputModifierNegate, InputModifierSwizzleAxis, InputModifierResponseCurveExponential

Design doc →

Extra 06 — Input Trigger System

UInputTrigger subclass management.

Planned triggers: InputTriggerPressed, InputTriggerReleased, InputTriggerHold, InputTriggerTap, InputTriggerCombo

Design doc →

Extra 07 — Player Mappable Profile, Input Mode & Runtime

  • UPlayerMappableInputConfig management
  • Input mode switching (UI-only, Game-only, Game-and-UI)
  • Runtime binding inspection

Design doc →

Extra 08 — Blueprint Enhanced Input Graph Integration

  • K2 node generation for UEnhancedInputComponent::BindAction bindings
  • Event node wiring for Input Action events in Blueprint EventGraph

Design doc →

Extra 09 — Enhanced Input Spec/Patch & Exit Criteria

  • .uebp.json spec extensions for the full Enhanced Input domain
  • Patch/idempotency for Input Action and Mapping Context spec ownership

Design doc →

Extra 10 — Project Settings & Developer Settings

  • UGameMapsSettings, UInputSettings, UGeneralProjectSettings read/write
  • UDeveloperSettings subclass discovery and typed property mutation

Extra 11 — Gameplay Tags

  • UGameplayTagsManager integration
  • Tag and tag container variable support in Blueprint specs

Extra 12 — Data Asset & Data Table

  • UDataAsset and UPrimaryDataAsset factory + inspector
  • UDataTable row schema inspection and typed row add/remove

Extra 13 — Collision Channel, Profile & Trace

  • UCollisionProfile channel/preset inspection and modification
  • ECollisionChannel allow-list validation

Extra 14 — Physical Material, Surface & Layer

  • UPhysicalMaterial factory + inspector (friction, restitution, surface type)
  • EPhysicalSurface enum management

Extra 15 — Game Framework Defaults & World Settings

  • AWorldSettings inspection and mutation
  • AGameModeBase / AGameStateBase / APlayerController class assignment

Extra 16 — Animation Blueprint

  • UAnimBlueprint factory + inspector
  • State machine graph reading

Extra 17 — Behavior Tree & Blackboard

  • UBehaviorTree and UBlackboardData factory + inspector
  • Blackboard key management (typed: bool, int, float, string, object, class, enum, vector, rotator)

Extra 18 — Niagara

  • UNiagaraSystem and UNiagaraEmitter inspection
  • User parameter read/write (typed allow-list)

Extra 19 — Material & Material Instance

  • UMaterial inspection (parameter names, types, default values)
  • UMaterialInstanceConstant parameter override (scalar, vector, texture)

Extra 20 — Widget Blueprint & UMG

  • UWidgetBlueprint factory + inspector
  • Widget hierarchy reading, named slot inspection

Extra 21 — Multi-system Spec Ownership & Dependency Planner

  • Cross-domain .uebp.json spec (Blueprint + Input + Data + Material in one spec)
  • Dependency ordering, circular dependency detection

Extra 22 — Automation, Security & Release Criteria

  • Full regression suite for all extra modules
  • Security policy review for new domain operations
  • CHANGELOG and version bump

Adding a New Domain Module

  1. Register the domain in FUEBPDomainRegistry (set bAvailable=true)
  2. Implement IUEBPDomainFactoryAdapter and IUEBPDomainInspectorAdapter (Private interfaces)
  3. Register adapters with FUEBPDomainAssetService
  4. Add MCP tools to the toolset (UFUNCTION with request/result USTRUCTs)
  5. Add tests in UEBPCrackerEditorTests (20+ automation assertions)
  6. Add MCP harness test script
  7. Verify restart stability (fingerprints stable)
  8. Update CHANGELOG.md and get_domain_capabilities response

See Also

Clone this wiki locally