Captures Blueprint hierarchy, legacy ability/RPC paths, animation dependency seeds, and handoff state without modifying Unreal assets. Co-authored-by: Cursor <cursoragent@cursor.com>
2.8 KiB
2.8 KiB
09 — Enemy AI Static Analysis
Status: Draft
- Scope: Native enemy class (Batch 1) + Pass 3 structural Blueprint inventory. Deep Tick/overlap/AI graph walk deferred to Pass 9.
- Inspection method: Native read; Batch 2 AssetTools tags + BlueprintTools list_graphs/events/variables/deps.
- Last updated: 2026-07-16
- Current phase: Phase 1 — Static Architecture
- Last completed pass: Pass 3 (Batch 2) — structural only
- Next pass expected to contribute: Batch 4 Pass 9
Draft tracking
Completed sections
- Native enemy ASC ownership and highlight interface
- Confirmation: no chase/attack/MoveTo in native C++
- Blueprint child paths + Pass 3 structural sheets
- BPI_EnemyCharacter API surface
Pending sections
- Connected Tick / overlap / timer / MoveTo graphs on enemy BPs
- AIControllerClass / AutoPossessAI on CDOs (reconfirm)
- Consumers of GetASC on enemies
Evidence still required
- Where chase/attack was intended to live (Blueprint vs missing)
- Runtime root cause of nonfunctional chase/attack — Requires Runtime Inspection
Native findings
Observed Implementation: ARIRBaseEnemyCharacter implements:
- ASC + AttributeSet on self (Minimal replication)
- InitAbilityActorInfo(this, this) in BeginPlay
- ITargetInterface highlight via custom depth
- Visibility collision on mesh
Observed Implementation: No AIController subclass, no MoveTo, no perception, no attack timers in native.
Calibration (prior Observed Implementation): Stock /Script/AIModule.AIController; AutoPossessAI PlacedInWorld on skeleton instance; no project BehaviorTree assets.
Issue: Existing Baseline Defect (enemy chase/attack nonfunctional per project brief).
Pass 3 Blueprint structure (not Pass 9 deep dive)
BP_EnemyCharacterBase
| Field | Value |
|---|---|
| Path | /Game/_Main/Blueprints/Characters/Enemies/BP_EnemyCharacterBase |
| Parent | RIRBaseEnemyCharacter |
| IsDataOnly | True |
| Graphs | UserConstructionScript, EventGraph |
| Variables | [] |
| Implemented events | ReceiveBeginPlay, ReceiveTick, ReceiveActorBeginOverlap |
| Deps | /Script/REALMSINRUIN only |
BP_Enemy_Skeleton
| Field | Value |
|---|---|
| Path | /Game/_Main/Blueprints/Characters/Enemies/Skeleton/BP_Enemy_Skeleton |
| Parent | BP_EnemyCharacterBase_C |
| Interface | BPI_EnemyCharacter (GetEnemyREF) |
| Graphs | UCS, EventGraph, GetEnemyREF |
| Variables | [] |
| Implemented events | ReceiveBeginPlay, ReceiveTick, ReceiveActorBeginOverlap |
| Deps | SKM_Skeleton_Guard_Body, BPI_EnemyCharacter, BP_EnemyCharacterBase, ABP_Skeleton, REALMSINRUIN |
BPI_EnemyCharacter
Graphs: GetEnemyREF, AddPlayerTarget, EnemyMeleeAttack — Documented Intent surface for targeting/melee; connected implementations on Skeleton/base not traced in Batch 2 (Pass 9).