4.8 KiB
Agent Test Spec: ue-blueprint-specialist
Agent Summary
- Domain: Blueprint architecture, the Blueprint/C++ boundary, Blueprint graph quality, Blueprint performance optimization, Blueprint Function Library design
- Does NOT own: C++ implementation (engine-programmer or gameplay-programmer), art assets or shaders, UI/UX flow design (ux-designer)
- Model tier: Sonnet
- Gate IDs: None; defers to unreal-specialist or lead-programmer for cross-domain rulings
Static Assertions (Structural)
description:field is present and domain-specific (references Blueprint architecture and optimization)allowed-tools:list matches the agent's role (Read for Blueprint project files; no server or deployment tools)- Model tier is Sonnet (default for specialists)
- Agent definition does not claim authority over C++ implementation decisions
Test Cases
Case 1: In-domain request — Blueprint graph performance review
Input: "Review our AI behavior Blueprint. It has tick-based logic running every frame that checks line-of-sight for 30 NPCs simultaneously." Expected behavior:
- Identifies tick-heavy logic as a performance problem
- Recommends switching from EventTick to event-driven patterns (perception system events, timers, or polling on a reduced interval)
- Flags the per-NPC cost of simultaneous line-of-sight checks
- Suggests alternatives: AIPerception component events, staggered tick groups, or moving the system to C++ if Blueprint overhead is measured to be significant
- Output is structured: problem identified, impact estimated, alternatives listed
Case 2: Out-of-domain request — C++ implementation
Input: "Write the C++ implementation for this ability cooldown system." Expected behavior:
- Does not produce C++ implementation code
- Provides the Blueprint equivalent of the cooldown logic (e.g., using a Timeline or GameplayEffect if GAS is in use)
- States clearly: "C++ implementation is handled by engine-programmer or gameplay-programmer; I can show the Blueprint approach or describe the boundary where Blueprint calls into C++"
- Optionally notes when the cooldown complexity warrants a C++ backend
Case 3: Domain boundary — unsafe raw pointer access in Blueprint
Input: "Our Blueprint calls GetOwner() and then immediately accesses a component on the result without checking if it's valid." Expected behavior:
- Flags this as a runtime crash risk: GetOwner() can return null in some lifecycle states
- Provides the correct Blueprint pattern: IsValid() node before any property/component access
- Notes that Blueprint's null checks are not optional on Actor-derived references
- Does NOT silently fix the code without explaining why the original was unsafe
Case 4: Blueprint graph complexity — readiness for Function Library refactor
Input: "Our main GameMode Blueprint has 600+ nodes in a single graph with duplicated damage calculation logic in 8 places." Expected behavior:
- Diagnoses this as a maintainability and testability problem
- Recommends extracting duplicated logic into a Blueprint Function Library (BFL)
- Describes how to structure the BFL: pure functions for calculations, static calls from any Blueprint
- Notes that if the damage logic is performance-sensitive or shared with C++, it may be a candidate for migration to unreal-specialist review
- Output is a concrete refactor plan, not a vague recommendation
Case 5: Context pass — Blueprint complexity budget
Input context: Project conventions specify a maximum of 100 nodes per Blueprint event graph before a mandatory Function Library extraction. Input: "Here is our inventory Blueprint graph [150 nodes shown]. Is it ready to ship?" Expected behavior:
- References the stated 150-node count against the 100-node budget from project conventions
- Flags the graph as exceeding the complexity threshold
- Does NOT approve it as-is
- Produces a list of candidate subgraphs for Function Library extraction to bring the main graph within budget
Protocol Compliance
- Stays within declared domain (Blueprint architecture, performance, graph quality)
- Redirects C++ implementation requests to engine-programmer or gameplay-programmer
- Returns structured findings (problem/impact/alternatives format) rather than freeform opinions
- Enforces Blueprint safety patterns (null checks, IsValid) proactively
- References project conventions when evaluating graph complexity
Coverage Notes
- Case 3 (null pointer safety) is a safety-critical test — this is a common source of shipping crashes
- Case 5 requires that project conventions include a stated node budget; if none is configured, the agent should note the absence and recommend setting one
- No automated runner; review manually or via
/skill-test