add blueprints

This commit is contained in:
Lefteris Notas
2026-05-19 13:22:27 +03:00
parent f71bc678b2
commit 411edea8ce
138 changed files with 23330 additions and 0 deletions

View File

@@ -0,0 +1,131 @@
# 43 — BPC_TrialScenarioSystem
## Blueprint Spec — UE 5.55.7
---
### Parent Class
`ActorComponent`
### Dependencies
- [`BPC_NarrativeStateSystem`](58_BPC_NarrativeStateSystem.md)
- [`BPC_ObjectiveSystem`](39_BPC_ObjectiveSystem.md)
- [`DA_ScenarioData`](../12-content/48_DA_NarrativeDataAssets.md)
- [`BPC_CheckpointSystem`](../04-save/34_BPC_CheckpointSystem.md)
- [`BPC_DeathHandlingSystem`](../04-save/35_BPC_DeathHandlingSystem.md)
### Purpose
Manages trial-based gameplay scenarios: combat gauntlets, escape sequences, investigation time-limits, survival waves. Tracks trial state (setup / active / success / fail), enforces rules, and reports outcome to the narrative system.
### Responsibilities
- Load scenario definition from `DA_ScenarioData`
- Initialize world state for the trial (spawn enemies, lock doors, set lighting)
- Track trial objectives and completion conditions
- Monitor failure conditions (player death, time expiry, target escape)
- Broadcast success/failure to narrative state
- Clean up trial elements on completion
### Does NOT Handle
- Individual enemy AI (that is Phase 8 AI system)
- Lighting or atmosphere changes (that is Phase 9 AtmosphereController)
- Checkpoint creation (that is BPC_CheckpointSystem)
### Variables
| Name | Type | Description |
|------|------|-------------|
| `ActiveScenario` | DA_ScenarioData | Currently running scenario (null if none) |
| `ScenarioState` | EScenarioState | Current phase of scenario |
| `ScenarioStartTime` | Float | World time when scenario began |
| `SuccessTags` | Array of GameplayTag | Tags to set on success (fired to NarrativeState) |
| `FailureTags` | Array of GameplayTag | Tags to set on failure |
| `bHasCheckedFailure` | Bool | Already evaluated fail conditions this tick |
### Enums
| Enum | Values | Description |
|------|--------|-------------|
| `EScenarioState` | Inactive, SetupRunning, ActiveRunning, Success, Failure, Cleanup | Lifecycle of a trial scenario |
### Structs
| Struct | Fields | Description |
|--------|--------|-------------|
| `FScenarioObjective` | TargetTag: GameplayTag, RequiredCount: Integer, CurrentCount: Integer, bIsComplete: Bool | A tracked objective within the scenario |
| `FScenarioCompletionReport` | bSuccess: Bool, ElapsedTime: Float, ObjectivesCompleted: Integer, ObjectivesTotal: Integer, FlagsSet: Array of GameplayTag | Outcome report for narrative |
### Functions / Events
| Name | Inputs | Outputs | Description |
|------|--------|---------|-------------|
| `BeginScenario` | Scenario: DA_ScenarioData | — | Start a new trial scenario |
| `EndScenario` | bIsSuccess: Bool | — | End current scenario with outcome |
| `UpdateObjectiveProgress` | ObjectiveTag: GameplayTag, Delta: Integer | — | Increment/update objective tracker |
| `CheckAllObjectives` | — | Bool | Have all objectives been met? |
| `CheckFailureConditions` | — | Bool | Has any failure condition triggered? |
| `GetTimeRemaining` | — | Float | Time left if scenario has time limit |
| `GetElapsedTime` | — | Float | Seconds since scenario started |
| `GetScenarioCompletionReport` | — | FScenarioCompletionReport | |
| `AbortScenario` | — | — | Force-end with failure, clean up |
| `IsScenarioActive` | — | Bool | |
### Event Dispatchers
| Name | Parameters | Fired When |
|------|-----------|-----------|
| `OnScenarioStarted` | Scenario: DA_ScenarioData | Scenario begins setup |
| `OnScenarioActive` | Scenario: DA_ScenarioData | Setup complete, trial is live |
| `OnObjectiveProgressed` | ObjectiveTag: GameplayTag, Progress: Integer, Required: Integer | Any objective count changed |
| `OnScenarioSuccess` | Report: FScenarioCompletionReport | All objectives complete |
| `OnScenarioFailure` | Report: FScenarioCompletionReport | Failure condition met |
| `OnScenarioAborted` | Scenario: DA_ScenarioData | Force-aborted |
| `OnScenarioCleanup` | Scenario: DA_ScenarioData | Cleanup complete |
### Blueprint Flow
```
[BeginScenario: DA_ScenarioData]
└─► Set ScenarioState = SetupRunning
└─► Broadcast OnScenarioStarted
└─► Trigger checkpoint auto-save (if configured)
└─► Execute scenario setup actions from DA_ScenarioData:
└─► Spawn enemies on spawn points
└─► Lock / unlock doors by tag
└─► Set initial objective state from scenario definition
└─► Apply lighting overrides (via AtmosphereController if present)
└─► Set ScenarioState = ActiveRunning
└─► Broadcast OnScenarioActive
└─► Record ScenarioStartTime + start tick monitors
[Tick / UpdateObjectiveProgress]
└─► CheckAllObjectives → if true → EndScenario(success = true)
└─► If not bHasCheckedFailure → CheckFailureConditions
└─► If failure condition true → EndScenario(success = false)
[EndScenario: bIsSuccess]
└─► ScenarioState = Success or Failure
└─► Build FScenarioCompletionReport
└─► Broadcast appropriate dispatcher
└─► Set narrative success/failure tags via BPC_NarrativeStateSystem
└─► ScenarioState = Cleanup
└─► Execute cleanup actions:
└─► Despawn trial-specific actors
└─► Reset doors, lights, etc.
└─► Unlock doors that were locked for trial
└─► Broadcast OnScenarioCleanup
└─► ScenarioState = Inactive
└─► ActiveScenario = null
```
### Communications With
| Target System | Method | Why |
|---------------|--------|-----|
| [`BPC_NarrativeStateSystem`](58_BPC_NarrativeStateSystem.md) | Direct | Set success/failure flags upon completion |
| [`BPC_ObjectiveSystem`](39_BPC_ObjectiveSystem.md) | Direct | Sync scenario objectives with objective UI |
| [`BPC_CheckpointSystem`](../04-save/34_BPC_CheckpointSystem.md) | Direct | Create checkpoint on scenario start |
| [`BPC_DeathHandlingSystem`](../04-save/35_BPC_DeathHandlingSystem.md) | Dispatcher | Player death triggers scenario failure |
| Phase 8 AI | Indirect | Spawn/despawn enemy actors by tag |
### Reuse Notes
Scenarios are fully data-driven via `DA_ScenarioData`. Designers configure spawn tags, objective tags, time limits, and cleanup actions without blueprint modifications. Supports mixed scenarios: combat + investigation, timed + untimed, survival + objective.