Files
Lefteris Notas 411edea8ce add blueprints
2026-05-19 13:22:27 +03:00

157 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 78 — WBP_SplashScreen
## Blueprint Spec — UE 5.55.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