Initialize Git with LFS for binary assets and add standard Unreal Engine .gitignore/.gitattributes. Co-authored-by: Cursor <cursoragent@cursor.com>
13 KiB
name, overview, todos, isProject
| name | overview | todos | isProject | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MCP Calibration Report | Read-only Unreal MCP capability-calibration results for Realms in Ruin. No editor/project state was modified; PIE was not started. SemanticSearch failed (missing embedding API key); AssetTools and other inspect APIs succeeded. |
|
false |
Unreal MCP Read-Only Capability Calibration Report
Session constraints honored: No ProgrammaticToolset, no create/update/set/save/delete/move/rename/compile/execute/activate/load-level/PIE/screenshot/click/type/drag, no Slate UI automation. PIE status checked only (IsPIERunning = false). Current level left as /Game/_Main/Levels/Testing/Test01.
Successful Read-Only Queries
1. Asset location (AssetTools.find_assets)
| Query | Result paths |
|---|---|
| Player_Paladin | /Game/_Main/Blueprints/Characters/PlayerCharacters/PlayerCharacterClasses/Paladin/Player_Paladin (+ meshes SKM_Player_Paladin, SM_Player_Paladin) |
| Player_Amazon | No exact match. Closest: /Game/_Main/Blueprints/Characters/PlayerCharacters/PlayerCharacterClasses/Amazonian/Player_Amazonian |
| BP_Enemy_Skeleton | /Game/_Main/Blueprints/Characters/Enemies/Skeleton/BP_Enemy_Skeleton |
| Test01 | /Game/_Main/Levels/Testing/Test01 |
| Dev_Island | /Game/_Main/Levels/Testing/Dev_Island (+ Dev_Island_BuiltData) |
2. SemanticSearch (SemanticSearchToolset.Search)
Failed. Embedding generation returned HTTP 401 (no API key). Index/toolset present but not usable until SemanticSearch embedding credentials are configured.
3. Player_Paladin structural inspection
| Field | Value |
|---|---|
| Asset path | /Game/_Main/Blueprints/Characters/PlayerCharacters/PlayerCharacterClasses/Paladin/Player_Paladin |
| Object ref | /Game/_Main/Blueprints/.../Player_Paladin.Player_Paladin |
| Generated class | Player_Paladin_C → /Game/.../Player_Paladin.Player_Paladin_C |
| Blueprint parent | /Game/_Main/Blueprints/Characters/PlayerCharacters/BP_PlayerCharacterBase.BP_PlayerCharacterBase_C |
| Native parent | /Script/REALMSINRUIN.RIRPlayerCharacter |
| Own variables | Ability001Montages, ChargeStartLoc, ChargeFinishLoc, IsCharging, IsBlocking |
| Inherited DEPRECATED vars (on base) | On BP_PlayerCharacterBase: DEPRECATED_CurrentHealth/MaxHealth, DEPRECATED_CurrentMana/MaxMana, DEPRECATED_CurrentStamina/MaxStamina, DEPRECATED_ManaRegenOverTime, DEPRECATED_Ability00{1-4}Damage/ManaCost |
| Graphs | UserConstructionScript, GetPlayerPaladinREF, PlayerHitCheck, EventGraph |
| Implemented functions (local) | UserConstructionScript, GetPlayerPaladinREF, PlayerHitCheck |
| Key implemented events | Charge, Client_Charge, Server_Ability_00{1-4}_*, UseAbility001/004, ReceiveBeginPlay, ReceiveTick, ReceiveActorBeginOverlap |
Components (via CDO get_components) |
Native: CollisionCylinder, Arrow, CharacterMesh0, CharMoveComp, AbilitySystemComponent; many skeletal mesh attach comps (Helmet, Sword, Shield, sockets, etc.); inherited TPSpringArm, ThirdPersonCamera, footstep comps |
| Interfaces on Paladin asset tags | Not listed in get_asset_tags ImplementedInterfaces (empty/absent). Referencers include /Game/_Main/Blueprints/Interfaces/BPI_PlayerCharacter |
| DEPRECATED ability section | Structurally inspectable. find_nodes(title="DEPRECATED") + get_node_infos + get_connected_subgraph walk EventGraph nodes e.g. GetDEPRECATED_Ability003ManaCost → FCanUseMana → Branch → Charge / Client_Charge chain from EventServer_Ability_003_Begin |
4. Selected BP_Enemy_Skeleton instance
| Field | Value |
|---|---|
| Selected actor | /Game/_Main/Levels/Testing/Test01.Test01:PersistentLevel.BP_Enemy_Skeleton_C_1 |
| Blueprint asset | /Game/_Main/Blueprints/Characters/Enemies/Skeleton/BP_Enemy_Skeleton |
| Class | /Game/.../BP_Enemy_Skeleton.BP_Enemy_Skeleton_C |
| Blueprint parent | /Game/_Main/Blueprints/Characters/Enemies/BP_EnemyCharacterBase.BP_EnemyCharacterBase_C |
| Native parent | /Script/REALMSINRUIN.RIRBaseEnemyCharacter |
| Implemented interface | BPI_EnemyCharacter → /Game/_Main/Blueprints/Interfaces/BPI_EnemyCharacter.BPI_EnemyCharacter_C (graph GetEnemyREF) |
| AI Controller class | /Script/AIModule.AIController (stock engine class) |
| AutoPossessAI | PlacedInWorld |
| Components | CollisionCylinder, Arrow, CharMoveComp, CharacterMesh0, AbilitySystemComponent (+ AttributeSet property → ...BP_Enemy_Skeleton_C_1.AttributeSet) |
| ASC editor state | defaultStartingData=[], activatableAbilities.items=[] |
| Dependencies | SKM_Skeleton_Guard_Body, BPI_EnemyCharacter, BP_EnemyCharacterBase, /Script/REALMSINRUIN, /Game/_Main/Animations/Enemies/Skeleton/ABP_Skeleton |
| Perception / BT / Blackboard props on instance | Not present as dedicated properties on the actor instance beyond stock pawn AI fields |
5. BehaviorTreeTools vs project content
AssetTools.find_assetswithasset_type=/Script/AIModule.BehaviorTreeover/Game→ []- No
BT_*,Blackboard,AIC_*, orPerceptionassets under/Game/_Main ObjectTools.search_subclasses(AIController, "RIR")→ []- Conclusion: BehaviorTreeTools APIs (
list_nodes,get_blackboard, etc.) are available, but no Behavior Tree asset is associated withBP_Enemy_Skeletonin this project — nothing to inspect.
6. AttributeSetToolset
FindAttributeSetClasses returned:
RIRAttributeSet(native, emptyassetPath) — Realms in Ruin set:Health,MaxHealth,Mana,MaxMana,Stamina,MaxStaminaAbilitySystemTestAttributeSet(engine/test)GASToolsetsTestAttributeSet(toolset test)
7. GameplayTagsToolset (read-only ListTags / GetTagInfo)
ListTags(parentTag="")returned full manager list (project + engine/plugin tags).- Sample project tags from
DefaultGameplayTags.ini:State.Dead,Disable.Ability, plusDisable.*,Effect.*,State.*, etc. - Also listed engine/plugin tags (
EnhancedInput.*,Niagara.*,UI.Action.*,Tests.*, …). - Mutators (
AddTag/RemoveTag/RenameTag) not used.
8. Domain capability probes (read-only)
| Domain | Tooling that worked | Sample / note |
|---|---|---|
| Gameplay Effects | AssetTools + ObjectTools on CDO |
e.g. /Game/_Main/Blueprints/Game/GameSystems/GAS/GameplayEffects/PlayerCharacters/Paladin/GE_Paladin_DefaultAttributes — Instant GE, overrides RIRAttributeSet:Health/Mana to 100 |
| Gameplay Abilities | Class filter /Script/GameplayAbilities.GameplayAbility → []; GA_* name search → []; search_subclasses → [] |
No discrete GA assets found; abilities appear BP-event driven (Server_Ability_*, UseAbility*) |
| Anim Blueprints | AssetTools + BlueprintTools.list_graphs |
/Game/_Main/Animations/PlayerCharacters/Human/CharacterClasses/Paladin/ABP_Paladin — AnimGraph states Idle/WalkRun/Charge/Block/Death |
| Anim Montages | AssetTools + get_asset_tags |
e.g. Paladin_Ability004_Montage — Skeleton SKEL_Hu_M, length 1.866667 |
| UMG | AssetTools + BlueprintTools + UMG read helpers |
Widgets under /Game/_Main/UI/Widgets/...; UMGToolSet has ListWidgetBlueprints, GetWidgets, GetWidgetTreeDepth, etc. (mutating UMG ops exist but were not used) |
| Advanced Sessions | PluginToolset + AssetTools + BlueprintTools |
Plugin enabled; path .../Plugins/AdvancedSessions; example BP /Game/_Main/Blueprints/Examples/ExampleAdvancedSessionsFunctionsChar contains many K2Node_LatentOnlineCall / Session nodes |
Information Available
- Asset registry search by name/type/folder; deps/refs; asset class; asset registry tags; metadata tags; load soft refs
- Blueprint parent chain (BP + native); graphs; functions; events (incl.
bIsImplemented); variables (per-Blueprint, not auto-merged inheritance in one call) - Graph structure: find nodes by title, node infos (pins/connections/positions), connected subgraphs,
read_graph_dsl - Actor/instance: selection query, class, components, property list/get (AIControllerClass, ASC, AttributeSet, etc.)
- AttributeSet discovery + attribute names
- Gameplay tag list + per-tag comment/source/children
- Plugin enablement + descriptor/path for Advanced Sessions
- AnimBP graph/state machine listing via BlueprintTools
- GE CDO modifiers/duration via ObjectTools
- Current level path; PIE running flag
Information Not Exposed
- SemanticSearch without embedding API key
- Dedicated GameplayAbility asset inspector (no GA assets + no GA-specific toolset beyond runtime
AbilitySystemInspectorToolset) - Behavior Trees / Blackboards / custom AIControllers / AI Perception assets for enemies in this project (tools exist; content absent)
- ImplementedInterfaces as a reliable ObjectTools property on BP/CDO (failed property reads); available via asset registry tags when populated (worked for Skeleton, not Paladin tags)
- Inherited Blueprint variables not returned by child
list_variablesalone (must query each parent BP) - Comment-box / graph-section / “DEPRECATED ability section” as a named region — only discoverable via node title search + subgraph walk
- Montage notify/timeline deep structure beyond asset registry tags (
AnimNotifyListwas empty;in sample) - Runtime ASC state (granted abilities, active effects, live attribute values) without PIE
- Online session runtime (Advanced Sessions latent results) without PIE/network
- Full UMG visual tree layout details without loading widget into UMGToolSet/
GetWidgets(read APIs exist; not fully exercised for every widget)
Queries Requiring PIE
Mark as Requires Runtime Inspection:
GASToolsets.AbilitySystemInspectorToolset.*(GetGrantedAbilities,GetAttributeValues,GetActiveTags,GetActiveEffects) — needs live ASC- Runtime AI possession / Behavior Tree tick / Blackboard values (even if BTs existed)
- Advanced Sessions create/find/join session outcomes
- Montage playback, ability activation success, damage application, death/respawn flows
GameplayCueToolset.ExecuteCueOnSelectedActor(executes cue; docs note PIE/manager for visible results) — also mutating/execute, excluded here
Queries Requiring Manual Editor Inspection
- SemanticSearch captions/similarity until API key configured
- Visual layout of DEPRECATED comment regions / collapsed graph sections in EventGraph
- Confirm whether enemy AI logic lives entirely in native
RIRBaseEnemyCharacterC++ (no BT assets found) - Exact BPI_PlayerCharacter implementation chain on Paladin vs base (tags vs interface editor UI)
- AnimMontage notify tracks / section names when registry tags are empty
- Any content outside
/Gamethat uses non-standard naming (e.g. undocumented AI assets)
Recommended Toolsets for the Full Archaeology Pass
Primary (read-only):
editor_toolset.toolsets.asset.AssetTools— locate, classify, deps/refs, tagseditor_toolset.toolsets.blueprint.BlueprintTools— graphs/functions/events/variables/nodes/DSLeditor_toolset.toolsets.object.ObjectTools— CDO/instance properties, subclass searcheditor_toolset.toolsets.actor.ActorTools— component trees on CDO/instancesEditorToolset.EditorAppToolset— selection, open assets, PIE status onlyeditor_toolset.toolsets.scene.SceneTools—get_current_level,find_actors(avoidload_level)GASToolsets.AttributeSetToolset— attribute inventoryGameplayTagsToolset.GameplayTagsToolset—ListTags/GetTagInfo/FindReferencersByTagonlyGASToolsets.GameplayCueToolset—ListCues/GetCueInfo/FindCueNotifyAssetsonlyPluginToolset.PluginToolset—ListEnabledPlugins/GetPluginInfo/IsEnabledUMGToolSet.UMGToolSet—ListWidgetBlueprints,GetWidgets,GetWidgetTreeDepth,GetWidgetDescriptiononlyaimodule_toolset.toolsets.behavior_tree.BehaviorTreeTools— only if BT assets appear later
Deferred / gated:
SemanticSearchToolset— after API keyGASToolsets.AbilitySystemInspectorToolset— Requires Runtime Inspection (PIE)- Avoid: ProgrammaticToolset, SlateInspector, mutating Asset/Blueprint/Object/Scene/UMG/GameplayTags ops
Suggested archaeology order: AttributeSets + Tags → Character BP hierarchy (native → base → class) → GE CDOs → AnimBP/Montages → UI widgets → Plugin/session examples → level-placed enemy instances → (optional PIE) ASC runtime.
Calibration verdict
Unreal MCP read-only tooling is sufficient for structural archaeology of Blueprints, levels, GEs, AnimBPs, montages, tags, AttributeSets, plugins, and UMG widget discovery. Gaps: SemanticSearch credentials, absence of GA/BT project assets, and any live GAS/AI/session behavior (Requires Runtime Inspection).