Files
realms-in-ruin-dev/Documentation/Archaeology/09-EnemyAI-StaticAnalysis.md
T
tedwardsandCursor 0d045d142f Document Batch 2–3 Phase 1 archaeology: shared player-base architecture and per-character ability inventories.
Captures Blueprint hierarchy, legacy ability/RPC paths, animation dependency seeds, and handoff state without modifying Unreal assets.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-16 20:29:10 -07:00

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, EnemyMeleeAttackDocumented Intent surface for targeting/melee; connected implementations on Skeleton/base not traced in Batch 2 (Pass 9).