- Updated `CONTEXT.md` to reference the new Manual Implementation Guide and Build Checklist in blueprint spec files. - Added a detailed Manual Implementation Guide to `01_GI_GameTagRegistry.md`, including class setup, variable initialization, function implementations, and a build checklist. - Introduced a Manual Implementation Guide section in `22_BPC_PhysicsDragSystem.md` with step-by-step instructions for setup and function logic. - Expanded `28_BPC_ConsumableSystem.md` with a comprehensive Manual Implementation Guide detailing class setup, variable initialization, function implementations, and networking. - Enhanced `69_BP_WeaponBase.md` with a Manual Implementation Guide covering class setup, variable defaults, function implementations, and networking. - Added a Manual Implementation Guide to `84_AI_BaseAgentController.md`, outlining class setup, variable initialization, function implementations, and networking. - Updated `TEMPLATE.md` to version 2.0, incorporating the Manual Implementation Guide and Build Checklist for human implementers. - Revised `INDEX.md` to reflect the new purpose and content of blueprint specifications, emphasizing the inclusion of the Manual Implementation Guide.
271 lines
8.2 KiB
Markdown
271 lines
8.2 KiB
Markdown
# Blueprint Spec Template v2.0
|
|
|
|
Use this template for every system file in `docs/blueprints/`. Replace all `{{placeholders}}` with system-specific values.
|
|
|
|
**v2.0 Changes:** Added Section 11 (Manual Implementation Guide) and Section 12 (Build Checklist) for human implementers building Blueprints manually in UE5. Each function now has node-by-node logic with specific UE5 Blueprint node names.
|
|
|
|
---
|
|
|
|
# {{System Number}} — {{System Name}} (`{{AssetType}}_{{Name}}`)
|
|
|
|
## Purpose
|
|
{{1-2 sentences describing what this system does and why it exists.}}
|
|
|
|
## Dependencies
|
|
- **Requires:** {{other systems this directly depends on}}
|
|
- **Required By:** {{which systems depend on this}}
|
|
- **Engine/Plugin Requirements:** {{e.g. GameplayTags, GASP, DeveloperSettings}}
|
|
|
|
## Class Info
|
|
| Property | Value |
|
|
|----------|-------|
|
|
| **Parent Class** | `{{ParentClassName}}` |
|
|
| **Class Type** | {{Blueprint, BlueprintComponent, Widget, etc.}} |
|
|
| **Asset Path** | `Content/Framework/{{Category}}/{{FileName}}` |
|
|
| **Implements Interfaces** | `{{I_Interfaces}}` |
|
|
|
|
---
|
|
|
|
## 1. Enums
|
|
|
|
```text
|
|
Enum Name: {{E_EnumName}}
|
|
(DisplayName = "{{Display Name}}")
|
|
|
|
Values:
|
|
{{Value1}} = 0 // Description
|
|
{{Value2}} = 1 // Description
|
|
{{Value3}} = 2 // Description
|
|
```
|
|
|
|
*List each enum the system defines or uses.*
|
|
|
|
---
|
|
|
|
## 2. Structs
|
|
|
|
### `{{S_StructName}}`
|
|
| Field | Type | Description |
|
|
|-------|------|-------------|
|
|
| `{{Field1}}` | `{{Type}}` | {{Description}} |
|
|
| `{{Field2}}` | `{{Type}}` | {{Description}} |
|
|
|
|
*List each struct the system defines. Include all fields with types and descriptions.*
|
|
|
|
---
|
|
|
|
## 3. Variables
|
|
|
|
### Configuration (Instance Editable, Expose On Spawn)
|
|
|
|
| Variable | Type | Default | Category | Description |
|
|
|----------|------|---------|----------|-------------|
|
|
| `{{VarName}}` | `{{Type}}` | `{{Default}}` | `{{Category}}` | {{Description}} |
|
|
|
|
### Internal (Private / Protected, No Expose)
|
|
|
|
| Variable | Type | Default | Category | Description |
|
|
|----------|------|---------|----------|-------------|
|
|
| `{{VarName}}` | `{{Type}}` | `{{Default}}` | `{{Category}}` | {{Description}} |
|
|
|
|
### Replicated (if multiplayer)
|
|
|
|
| Variable | Type | Condition | Description |
|
|
|----------|------|-----------|-------------|
|
|
| `{{VarName}}` | `{{Type}}` | `{{RepCond}}` | {{Description}} |
|
|
|
|
---
|
|
|
|
## 4. Functions
|
|
|
|
### Public Functions
|
|
|
|
#### `{{FunctionName}}` → `{{ReturnType}}`
|
|
- **Description:** {{What this function does}}
|
|
- **Parameters:**
|
|
| Param | Type | Description |
|
|
|-------|------|-------------|
|
|
| `{{ParamName}}` | `{{Type}}` | {{Description}} |
|
|
- **Blueprint Authority:** {{Client / Server / Multicast / Any}}
|
|
- **Flow:** {{brief description of logic flow}}
|
|
|
|
### Protected / Private Functions
|
|
|
|
#### `{{FunctionName}}` → `{{ReturnType}}`
|
|
- **Description:** {{What this function does}}
|
|
- **Parameters:**
|
|
| Param | Type | Description |
|
|
|-------|------|-------------|
|
|
| `{{ParamName}}` | `{{Type}}` | {{Description}} |
|
|
- **Flow:** {{brief description of logic flow}}
|
|
|
|
---
|
|
|
|
## 5. Event Dispatchers
|
|
|
|
| Dispatcher | Parameters | Bind Access | Description |
|
|
|------------|-----------|-------------|-------------|
|
|
| `On{{EventName}}` | `{{Type1}}`, `{{Type2}}` | `{{Public/Private}}` | {{When this fires}} |
|
|
| `On{{OtherEvent}}` | `{{Type1}}` | `{{Public/Private}}` | {{When this fires}} |
|
|
|
|
---
|
|
|
|
## 6. Overridden Events / Custom Events
|
|
|
|
### Event: `{{EventName}}`
|
|
- **Description:** {{What triggers this event and what it does}}
|
|
- **Flow:**
|
|
1. {{Step 1}}
|
|
2. {{Step 2}}
|
|
3. {{Step 3}}
|
|
|
|
---
|
|
|
|
## 7. Blueprint Graph Logic Flow
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
A[BeginPlay / Initialize] --> B{Check Condition}
|
|
B -->|True| C[Do Action]
|
|
B -->|False| D[Alternate Path]
|
|
C --> E[Fire Dispatcher]
|
|
D --> F[Log Warning]
|
|
```
|
|
|
|
*Describe the main execution flow using a Mermaid flowchart.*
|
|
|
|
---
|
|
|
|
## 8. Communication Matrix
|
|
|
|
| Who Talks | How | What Is Sent |
|
|
|-----------|-----|-------------|
|
|
| `{{Source}}` | `{{I_Interface / Dispatcher / Direct}}` | `{{Data}}` |
|
|
| `{{Source}}` | `{{I_Interface / Dispatcher / Direct}}` | `{{Data}}` |
|
|
|
|
*List every other system this one talks to and the mechanism used.*
|
|
|
|
---
|
|
|
|
## 9. Validation / Testing Checklist
|
|
|
|
- [ ] {{Check 1}}
|
|
- [ ] {{Check 2}}
|
|
- [ ] {{Check 3}}
|
|
- [ ] Edge case: {{Edge case description}}
|
|
|
|
---
|
|
|
|
## 10. Reuse Notes
|
|
|
|
- {{Any notes about reusing this component in other contexts}}
|
|
- {{Things to watch out for during implementation}}
|
|
|
|
---
|
|
|
|
## 11. Manual Implementation Guide
|
|
|
|
> **This section is for a human implementer building the Blueprint manually in UE5.**
|
|
>
|
|
> Follow these steps in order. Each function is broken down into specific UE5 Blueprint nodes.
|
|
> Variable names in `code font` refer to variables defined in Section 3.
|
|
> References to other systems (e.g., `BPC_HealthSystem`) mean "get the component and call its function."
|
|
|
|
### 11.1 Class Setup
|
|
|
|
1. Create a new Blueprint Class:
|
|
- Parent Class: `{{ParentClass}}`
|
|
- Name: `{{AssetType}}_{{Name}}`
|
|
- Path: `Content/Framework/{{Category}}/`
|
|
2. Add all variables from Section 3 to the Class Defaults.
|
|
- Configuration variables: set `Instance Editable` ✓ and `Expose on Spawn` ✓ (if marked).
|
|
- Internal variables: set to `Private` (no expose).
|
|
3. If the class implements interfaces, add them in `Class Settings → Implemented Interfaces`.
|
|
|
|
### 11.2 Variable Initialization (Construction Script / BeginPlay)
|
|
|
|
```
|
|
Event BeginPlay
|
|
├─ Set {{VarName}} = {{Default}} // For each internal variable with a default
|
|
├─ Get Owner → Cast to {{ExpectedOwnerType}} → Store as CachedOwner
|
|
├─ Get Component by Class ({{RequiredComponent}}) → Store reference
|
|
│ └─ If NOT valid → Print Warning: "{{Component}} missing on {{Owner}}"
|
|
├─ [If replicating] Check HasAuthority → if server, initialize replicated vars
|
|
└─ Fire initialization-related dispatchers
|
|
```
|
|
|
|
### 11.3 Function Implementations
|
|
|
|
#### `{{FunctionName}}`
|
|
|
|
**Input Pins:** `{{Param1}}` ({{Type1}}), `{{Param2}}` ({{Type2}})
|
|
**Output Pins:** `{{ReturnValue}}` ({{ReturnType}})
|
|
|
|
**Node-by-Node Logic:**
|
|
```
|
|
[Function: {{FunctionName}}]
|
|
Step 1: {{First thing to do — get a reference, check a condition}}
|
|
Step 2: Branch on {{Condition}}
|
|
True →
|
|
Step 2a: {{Action for true branch}}
|
|
Step 2b: {{Next action}}
|
|
False →
|
|
Step 2c: {{Action for false branch}}
|
|
Step 3: {{Continuation after branch}}
|
|
Step 4: Fire dispatcher: Call {{OnEventName}}({{Params}})
|
|
Step 5: Return {{ReturnValue}}
|
|
```
|
|
|
|
**Nodes Used:** {{List of UE5 Blueprint nodes the implementer should search for}}
|
|
|
|
**Things to Watch:**
|
|
- {{Gotcha 1}}
|
|
- {{Gotcha 2}}
|
|
|
|
#### `{{NextFunction}}`
|
|
|
|
*(Repeat the same detailed format for every public and protected function)*
|
|
|
|
### 11.4 Event Dispatcher Bindings
|
|
|
|
List every dispatcher this system binds TO (inbound listeners) and what to do:
|
|
|
|
| Bind to Dispatcher (on which system) | Custom Event to Create | What it Does |
|
|
|--------------------------------------|------------------------|--------------|
|
|
| `{{Component}}.On{{EventName}}` | `On{{EventName}}Handler` | {{Brief logic}} |
|
|
|
|
### 11.5 Networking Setup (if applicable)
|
|
|
|
- In `Class Settings`, enable `Replicates` ✓
|
|
- For each replicated variable, set `Replication` to `Replicated` or `Replicated Using OnRep_{{VarName}}`
|
|
- Create `OnRep_{{VarName}}` functions that fire the same dispatchers as single-player
|
|
- Add `Switch HasAuthority` before all state-changing logic
|
|
- Add `Run on Server` RPC functions with `Server_` prefix
|
|
|
|
### 11.6 Quick Node Reference
|
|
|
|
Common UE5 Blueprint nodes used in this system:
|
|
| Node | Where to Find | Used For |
|
|
|------|---------------|----------|
|
|
| `{{NodeName}}` | Right-click → "{{search term}}" | {{Purpose}} |
|
|
|
|
---
|
|
|
|
## 12. Blueprint Build Checklist
|
|
|
|
Complete these steps in order when implementing this system:
|
|
|
|
- [ ] Create Blueprint class with correct parent
|
|
- [ ] Add all variables with correct types and defaults
|
|
- [ ] Implement interface functions (if any)
|
|
- [ ] Build `BeginPlay` / `OnPossess` / initialization event
|
|
- [ ] Implement each function from Section 4 following the step-by-step guide
|
|
- [ ] Create all event dispatchers from Section 5
|
|
- [ ] Bind to inbound dispatchers (Section 11.4)
|
|
- [ ] Add networking logic (HasAuthority gates, RPCs, RepNotify)
|
|
- [ ] Test with validation checklist (Section 9)
|
|
- [ ] Place in level or attach to character as appropriate
|
|
|
|
---
|
|
|
|
*Template version 2.0 — Includes Manual Implementation Guide for human implementers.* |