Captures Blueprint hierarchy, legacy ability/RPC paths, animation dependency seeds, and handoff state without modifying Unreal assets. Co-authored-by: Cursor <cursoragent@cursor.com>
77 lines
2.8 KiB
Markdown
77 lines
2.8 KiB
Markdown
# 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).
|