add blueprints
This commit is contained in:
157
docs/blueprints/13-polish/114_WBP_SplashScreen.md
Normal file
157
docs/blueprints/13-polish/114_WBP_SplashScreen.md
Normal file
@@ -0,0 +1,157 @@
|
||||
# 78 — WBP_SplashScreen
|
||||
|
||||
## Blueprint Spec — UE 5.5–5.7
|
||||
|
||||
---
|
||||
|
||||
### Parent Class
|
||||
`UserWidget`
|
||||
|
||||
### Dependencies
|
||||
- [`BPC_LoadingScreen`](../11-polish/76_BPC_LoadingScreen.md) — Transition to loading
|
||||
- [`BPC_AudioManager`](../10-adaptive/66_BPC_AudioManager.md) — Splash audio
|
||||
- [`BPC_InputManager`](../02-player/13_BPC_InputManager.md) — Skip input
|
||||
- [`GI_GameManager`](../01-core/05_GI_GameManager.md) — Boot flow control (Phase 0)
|
||||
- [`SS_SaveManager`](../05-saveload/28_SS_SaveManager.md) — Check for existing save
|
||||
|
||||
### Purpose
|
||||
Introductory splash screen sequence shown on game boot before the main menu or loading screen. Displays company logos, game title, engine badges, and legal notices in a timed sequential presentation. Supports skip-to-main-menu via input, accessibility features (slow mode), and conditional branching based on save state.
|
||||
|
||||
### Enums
|
||||
|
||||
**ESplashElementType**
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| CompanyLogo | Developer/publisher logo |
|
||||
| EngineLogo | UE5 logo, power badges |
|
||||
| GameTitle | Full game title card |
|
||||
| LegalNotice | Copyright, ratings info |
|
||||
| Warning | Health/safety warnings |
|
||||
| AccessibilityNotice | Accessibility info |
|
||||
|
||||
### Structs
|
||||
|
||||
**FSplashElement**
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| ElementType | ESplashElementType | What to show |
|
||||
| DisplayDuration | Float | Seconds to display |
|
||||
| FadeInTime | Float | Fade in duration |
|
||||
| FadeOutTime | Float | Fade out duration |
|
||||
| Texture | UTexture2D | Logo/image to show |
|
||||
| TitleText | FText | Optional text overlay |
|
||||
| SubtitleText | FText | Optional subtitle |
|
||||
| bCanSkip | Bool | Allow skip this element |
|
||||
|
||||
### Variables
|
||||
|
||||
| Name | Type | Description |
|
||||
|------|------|-------------|
|
||||
| `SplashSequence` | TArray\<FSplashElement\> | Ordered splash elements |
|
||||
| `CurrentElementIndex` | Int32 | Active element |
|
||||
| `bIsPlaying` | Bool | Sequence running |
|
||||
| `bSkipped` | Bool | User skipped |
|
||||
| `bSlowMode` | Bool | Accessibility slow mode |
|
||||
| `CurrentTimer` | Float | Element timer |
|
||||
| `bTransitionComplete` | Bool | Sequence done |
|
||||
|
||||
### Functions
|
||||
|
||||
| Name | Inputs | Outputs | Description |
|
||||
|------|--------|---------|-------------|
|
||||
| `PlaySplashSequence` | — | — | Start boot splash |
|
||||
| `ShowElement` | Element: FSplashElement | — | Display single element |
|
||||
| `AdvanceToNext` | — | — | Move to next element |
|
||||
| `SkipSplash` | — | — | End sequence early |
|
||||
| `FadeInElement` | Duration: Float | — | Fade animation |
|
||||
| `FadeOutElement` | Duration: Float | — | Fade animation |
|
||||
| `HandleInput` | Action: FName | — | Skip/confirm binding |
|
||||
| `OnSequenceComplete` | — | — | Splash finished |
|
||||
| `SetSlowMode` | bEnabled: Bool | — | Accessibility mode |
|
||||
| `CheckSaveState` | — | Bool | Has existing save |
|
||||
|
||||
### Blueprint Flow
|
||||
|
||||
```
|
||||
[PlaySplashSequence]
|
||||
└─► Create splash sequence from configuration:
|
||||
CompanyLogo (3s display, 1s fade in/out)
|
||||
EngineLogo (2s display, 0.5s fade in/out)
|
||||
GameTitle (4s display, 1.5s fade in/out)
|
||||
LegalNotice (3s display, 1s fade in/out)
|
||||
└─► bIsPlaying = true
|
||||
└─► CurrentElementIndex = 0
|
||||
└─► ShowElement(SplashSequence[0])
|
||||
└─► Bind input actions:
|
||||
BPC_InputManager -> "Confirm" -> SkipSplash()
|
||||
BPC_InputManager -> "Pause" -> SkipSplash()
|
||||
|
||||
[ShowElement]
|
||||
└─► Get Element = SplashSequence[CurrentElementIndex]
|
||||
└─► Set visibility for appropriate canvas panel
|
||||
└─► If Element.Type == CompanyLogo:
|
||||
Set logo image, center
|
||||
└─► Else if Element.Type == GameTitle:
|
||||
Set title text, subtitle, large text block
|
||||
└─► Else if Element.Type == LegalNotice:
|
||||
Set legal text, small, bottom-aligned
|
||||
└─► Play FadeInElement(Element.FadeInTime)
|
||||
└─► Timer = 0
|
||||
└─► Tick:
|
||||
Timer += DeltaTime
|
||||
If Timer >= Element.DisplayDuration:
|
||||
AdvanceToNext()
|
||||
|
||||
[AdvanceToNext]
|
||||
└─► Play FadeOutElement(CurrentElement.FadeOutTime)
|
||||
└─► On fade complete:
|
||||
Hide current element
|
||||
CurrentElementIndex++
|
||||
If CurrentElementIndex >= SplashSequence.Length:
|
||||
OnSequenceComplete()
|
||||
Else:
|
||||
ShowElement(SplashSequence[CurrentElementIndex])
|
||||
|
||||
[SkipSplash]
|
||||
└─► If bSkipped: return
|
||||
└─► bSkipped = true
|
||||
└─► Fade out current element (fast, 0.2 seconds)
|
||||
└─► Clear all elements
|
||||
└─► OnSequenceComplete()
|
||||
|
||||
[OnSequenceComplete]
|
||||
└─► bIsPlaying = false
|
||||
└─► CheckSaveState():
|
||||
If save exists: Load main menu
|
||||
If no save: Show main menu (new game focus)
|
||||
If first boot ever: Show language/accessibility prompt
|
||||
└─► Broadcast OnSplashComplete()
|
||||
└─► Remove self from viewport
|
||||
```
|
||||
|
||||
### Event Dispatchers
|
||||
|
||||
| Name | Payload | Description |
|
||||
|------|---------|-------------|
|
||||
| `OnSplashComplete` | bSkipped: Bool | Splash sequence done |
|
||||
|
||||
### Communications With
|
||||
|
||||
| Target | Method | Why |
|
||||
|--------|--------|-----|
|
||||
| [`BPC_LoadingScreen`](../11-polish/76_BPC_LoadingScreen.md) | Direct call | Load main menu |
|
||||
| [`BPC_AudioManager`](../10-adaptive/66_BPC_AudioManager.md) | Direct call | Splash audio |
|
||||
| [`BPC_InputManager`](../02-player/13_BPC_InputManager.md) | Event binding | Skip input |
|
||||
| [`GI_GameManager`](../01-core/05_GI_GameManager.md) | Direct call | Boot flow |
|
||||
| [`SS_SaveManager`](../05-saveload/28_SS_SaveManager.md) | Direct call | Save detection |
|
||||
|
||||
### Reuse Notes
|
||||
- Fully configurable splash sequence via data
|
||||
- Supports accessibility slow mode (doubles all durations)
|
||||
- Skip input at any point
|
||||
- First-boot branching for language/accessibility setup
|
||||
- Handles both new game and existing save flows
|
||||
- Legal notice compliance baked into sequence
|
||||
- Can be reused for "press any key" or demo mode splash screens
|
||||
Reference in New Issue
Block a user