Files
pixelheros/CCGS Skill Testing Framework/agents/engine/unreal/ue-blueprint-specialist.md
2026-05-15 14:52:29 +08:00

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