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,157 @@
# 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