Repository navigation
feat: demo showcase redesign + UE 5.7 Blueprint API compatibility - #107
Conversation
Redesign Demo project from calibration grid into a walkable linear corridor showcasing all 9 MCP tool categories with themed zones, materials, Niagara VFX, labels, and navigation signs. Fix blueprint_add_component, blueprint_compile, and blueprint_modify_component for UE 5.7 where simple_construction_script and KismetEditorUtilities were removed from the Python API. New compatibility layer uses SubobjectDataSubsystem + BlueprintEditorLibrary with automatic fallback to legacy SCS API on older UE versions.
Test assets from comprehensive MCP tests (structs, datatables, input mappings, materials, animation, statetree) were left in /Game/Tests/ after test runs. Now cleaned up alongside /Game/TestBlueprints/.
… git Test assets (structs, datatables) created by comprehensive test runs should not be tracked. Updated .gitignore to exclude Demo/Content/Tests/ and saved level after reset_demo_scene cleanup.
- widget.py: replace KismetCompilerLibrary.compile_blueprint with _compile_bp wrapper in screenshot() for UE 5.7 compatibility - animation.py: wrap KismetEditorUtilities.add_blueprint_variable with hasattr guard, fallback to BlueprintEditorLibrary.add_member_variable - PLAN.md: fix stale "3x3 grid" description to "linear corridor"
There was a problem hiding this comment.
Pull request overview
This PR modernizes the Demo project into a walkable “feature showcase” corridor and updates Python Blueprint operations to work on UE 5.7’s updated editor/Python APIs (plus a small hot-reload improvement).
Changes:
- Added UE-version compatibility helpers for Blueprint compilation and component/subobject manipulation (legacy SCS vs UE 5.7+ SubobjectDataSubsystem).
- Updated multiple ops modules (blueprint_graph, blueprint, widget, animation) to use the compatibility layer instead of direct
KismetEditorUtilitiescalls. - Reworked Demo project documentation/assets and adjusted reset behavior + repo ignore rules to support the new showcase layout and test asset cleanup.
Reviewed changes
Copilot reviewed 12 out of 37 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| server/tests/python/ops/test_blueprint_graph.py | Updates unit test expectations for component modification when SCS/subobject APIs are unavailable. |
| plugin/Content/Python/utils/blueprint_helpers.py | Adds compile + SCS/SubobjectDataSubsystem compatibility helpers for UE 5.4–5.7+. |
| plugin/Content/Python/uemcp_listener.py | Extends hot-reload module clearing to include utils.* submodules. |
| plugin/Content/Python/ops/widget.py | Switches widget compilation to version-compatible Blueprint compilation helper. |
| plugin/Content/Python/ops/level.py | Updates demo reset baseline prefixes and expands test-asset cleanup directories. |
| plugin/Content/Python/ops/blueprint.py | Updates Blueprint compilation logic to use the new compilation helper. |
| plugin/Content/Python/ops/blueprint_graph.py | Implements UE 5.7-compatible component add/modify/list via SubobjectDataSubsystem path. |
| plugin/Content/Python/ops/animation.py | Replaces direct Kismet compilation calls; adds UE 5.7 variable-add fallback using BlueprintEditorLibrary. |
| PLAN.md | Documents the Demo showcase redesign in the project plan. |
| Demo/README_CALIBRATION.md | Replaces calibration-grid documentation with the new showcase corridor guide. |
| Demo/Demo.uproject | Bumps EngineAssociation from 5.6 to 5.7 for the demo project. |
| Demo/Content/Demo/Materials/Showcase/M_Demo_Rough.uasset | Adds new showcase material asset (rough). |
| Demo/Content/Demo/Materials/Showcase/M_Demo_Neon.uasset | Adds new showcase material asset (neon). |
| Demo/Content/Demo/Materials/Showcase/M_Demo_Emissive.uasset | Adds new showcase material asset (emissive). |
| Demo/Content/Demo/Materials/Showcase/M_Demo_Copper.uasset | Adds new showcase material asset (copper). |
| Demo/Content/Demo/Materials/M_Demo_TestArea.uasset | Adds demo material for E2E test area platform visuals. |
| Demo/Content/Demo/Materials/M_Demo_Niagara.uasset | Adds demo zone material for Niagara section visuals. |
| Demo/Content/Demo/Materials/M_Demo_Material.uasset | Adds demo zone material for Material section visuals. |
| Demo/Content/Demo/Materials/M_Demo_Hub.uasset | Adds demo hub material asset. |
| Demo/Content/Demo/Materials/M_Demo_Ground.uasset | Adds demo ground material asset. |
| Demo/Content/Demo/Materials/M_Demo_Data.uasset | Adds demo zone material for Data Systems section visuals. |
| Demo/Content/Demo/Materials/M_Demo_Blueprint.uasset | Adds demo zone material for Blueprint section visuals. |
| Demo/Content/Demo/Materials/M_Demo_Audio.uasset | Adds demo zone material for Audio/MetaSound section visuals. |
| Demo/Content/Demo/Materials/M_Demo_Animation.uasset | Adds demo zone material for Animation/AI section visuals. |
| Demo/Content/Demo/Materials/M_Demo_Actor.uasset | Adds demo zone material for Actor section visuals. |
| .gitignore | Adjusts ignore rules to keep Demo showcase content while continuing to ignore generated folders. |
| .changelogs/NEXT.md | Adds release notes for the showcase redesign, UE 5.7 compatibility changes, and hot-reload fix. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…ll and hot-reload utils gap - Remove incorrect unreal.BlueprintEditorLibrary.generated_class(blueprint) call which would raise AttributeError on UE 5.7; generated_class() is a property on the Blueprint object itself, not on BlueprintEditorLibrary - Include top-level 'utils' package in hot-reload module clearing so changes to utils/__init__.py are picked up by restart_listener()
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 12 out of 37 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…oTestArea_ Copilot review correctly identified that reset_demo_scene only preserved actors with the Demo_ prefix, but the showcase level also uses DemoFloor_, DemoLabel_, and DemoTestArea_ prefixes per the naming convention in the README. Without these, zone floors, labels, and test area platforms would be deleted during scene reset.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 12 out of 37 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…string matching SubobjectDataBlueprintFunctionLibrary.get_display_name() returns unreal.Text (FText) in UE 5.7+, not a Python str. Wrap all call sites with str() to ensure reliable string comparisons with component_name and JSON-serializable payloads in error details and return values.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 12 out of 37 changed files in this pull request and generated 1 comment.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…tEditorLibrary If neither KismetEditorUtilities nor BlueprintEditorLibrary is available, raise a structured ProcessingError instead of an AttributeError.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 12 out of 37 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…ion error handling - Update NEXT.md to list all 4 preserved prefixes (DemoFloor_, DemoLabel_, DemoTestArea_) instead of incorrectly claiming only Demo_ is preserved - Rename Demo/README_CALIBRATION.md -> README_SHOWCASE.md to match content - Raise ProcessingError in add_variable when no API is available or add call returns falsy, instead of silently continuing and reporting success
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 13 out of 38 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
plugin/Content/Python/ops/level.py:84
reset_demo_scenenow deletes the top-level/Game/Testsdirectory by default whendelete_test_assets=True. In non-Demo projects this path is commonly used for legitimate content, so this can cause unintended data loss. Consider narrowing deletion to a more specific, UEMCP-owned subfolder (e.g./Game/Tests/UEMCP), gating it behind a separate explicit flag, or verifying the current project is the Demo showcase before deleting/Game/Tests.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Summary
blueprint_add_component,blueprint_compile, andblueprint_modify_componentwhich were broken on UE 5.7 due to removal ofsimple_construction_scriptandKismetEditorUtilitiesfrom the Python APIrestart_listener()now clearsutils.*modules alongsideops.*to prevent stale cached importsDemo Layout
Each zone has: colored platform, title labels, feature sub-labels, demo objects, and a dedicated E2E test area cleaned by
reset_demo_scene.UE 5.7 API Changes
Blueprint.simple_construction_scriptSubobjectDataSubsystem.add_new_subobject()KismetEditorUtilities.compile_blueprint()BlueprintEditorLibrary.compile_blueprint()KismetEditorUtilities.add_blueprint_variable()BlueprintEditorLibrary.add_member_variable()Blueprint.mark_package_dirty()Compatibility layer auto-detects UE version via
hasattrchecks and uses the appropriate API.Test plan
blueprint_add_componentcreates components on UE 5.7 (tested with CameraComponent)blueprint_compilecompiles blueprints on UE 5.7reset_demo_sceneremoves test actors and cleans/Game/Tests+/Game/TestBlueprints/CoverageTest