Files
tedwardsandCursor ff5640a020 Establish UE 5.8 known-good baseline with Batch 1 archaeology docs.
Initialize Git with LFS for binary assets and add standard Unreal Engine .gitignore/.gitattributes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 19:40:19 -07:00

189 lines
13 KiB
Markdown

---
name: MCP Calibration Report
overview: 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.
todos:
- id: archaeology-prep
content: Use this calibration report as the gate checklist before the full archaeology pass (read-only tool whitelist + PIE-gated queries)
status: pending
- id: semantic-search-key
content: "Optional: configure SemanticSearch embedding API key so Search/FindSimilar can be used in later passes"
status: pending
isProject: 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_assets` with `asset_type=/Script/AIModule.BehaviorTree` over `/Game`**[]**
- No `BT_*`, `Blackboard`, `AIC_*`, or `Perception` assets 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 with `BP_Enemy_Skeleton` in this project** — nothing to inspect.
### 6. AttributeSetToolset
`FindAttributeSetClasses` returned:
- **`RIRAttributeSet`** (native, empty `assetPath`) — Realms in Ruin set: `Health`, `MaxHealth`, `Mana`, `MaxMana`, `Stamina`, `MaxStamina`
- `AbilitySystemTestAttributeSet` (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`, plus `Disable.*`, `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_variables` alone (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 (`AnimNotifyList` was 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 `RIRBaseEnemyCharacter` C++ (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 `/Game` that uses non-standard naming (e.g. undocumented AI assets)
---
## Recommended Toolsets for the Full Archaeology Pass
**Primary (read-only):**
1. `editor_toolset.toolsets.asset.AssetTools` — locate, classify, deps/refs, tags
2. `editor_toolset.toolsets.blueprint.BlueprintTools` — graphs/functions/events/variables/nodes/DSL
3. `editor_toolset.toolsets.object.ObjectTools` — CDO/instance properties, subclass search
4. `editor_toolset.toolsets.actor.ActorTools` — component trees on CDO/instances
5. `EditorToolset.EditorAppToolset` — selection, open assets, PIE status only
6. `editor_toolset.toolsets.scene.SceneTools``get_current_level`, `find_actors` (avoid `load_level`)
7. `GASToolsets.AttributeSetToolset` — attribute inventory
8. `GameplayTagsToolset.GameplayTagsToolset``ListTags` / `GetTagInfo` / `FindReferencersByTag` only
9. `GASToolsets.GameplayCueToolset``ListCues` / `GetCueInfo` / `FindCueNotifyAssets` only
10. `PluginToolset.PluginToolset``ListEnabledPlugins` / `GetPluginInfo` / `IsEnabled`
11. `UMGToolSet.UMGToolSet``ListWidgetBlueprints`, `GetWidgets`, `GetWidgetTreeDepth`, `GetWidgetDescription` only
12. `aimodule_toolset.toolsets.behavior_tree.BehaviorTreeTools` — only if BT assets appear later
**Deferred / gated:**
- `SemanticSearchToolset` — after API key
- `GASToolsets.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**).