unreal-best-practices — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited unreal-best-practices (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Before implementing any gameplay system, always investigate whether Epic provides a newer, purpose-built system for it. Epic Games continuously introduces modern frameworks that replace ad-hoc solutions. Using the latest recommended system yields better performance, easier networking, designer-friendly workflows, and future compatibility.
Workflow:
Why this matters: Epic signals their direction through actions, not just announcements. When they rebuild the First/Third Person templates to use GAS and Enhanced Input, or when Fortnite ships with Game Feature Plugins and CommonUI, that is the clearest indicator of where the ecosystem is heading.
| Source | URL |
|---|---|
| Epic Documentation Hub | https://dev.epicgames.com/documentation/en-us/unreal-engine |
| UE Public Roadmap | https://portal.productboard.com/epicgames/1-unreal-engine-public-roadmap |
| Lyra Sample Project | https://dev.epicgames.com/documentation/en-us/unreal-engine/lyra-sample-game-in-unreal-engine |
| UE Release Notes | https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-release-notes |
| Epic Community Tutorials | https://dev.epicgames.com/community/learning |
| Experimental Features List | https://dev.epicgames.com/documentation/en-us/unreal-engine/experimental-features |
| Allar's UE5 Style Guide | https://github.com/Allar/ue5-style-guide |
| Tom Looman's UE5 Guides | https://tomlooman.com |
| X157 Dev Notes (Lyra) | https://x157.github.io/UE5/ |
The Lyra Starter Game is Epic's canonical reference implementation for modern UE5 architecture. It demonstrates GAS, Enhanced Input, Game Feature Plugins, CommonUI, GameplayMessageSubsystem, Gameplay Tags, and modular gameplay patterns -- all derived from Fortnite's production codebase.
See references/modern-systems.md for detailed information on each system, migration paths, and documentation links.
System status as of UE 5.7:
| Domain | Legacy/Old System | Modern System | Status |
|---|---|---|---|
| Input | BindAction/BindAxis | Enhanced Input | Production -- legacy deprecated since 5.1 |
| Abilities | Ad-hoc booleans/timers | Gameplay Ability System (GAS) | Production -- recommended for ability-driven games |
| State/Classification | Enums, booleans, strings | Gameplay Tags | Production -- foundation of modern UE |
| AI Behavior | Behavior Trees | StateTree | Production since 5.1 -- alternative, BTs still supported |
| AI Interaction | Manual scripting | Smart Objects | Production since 5.1 |
| Particles/VFX | Cascade | Niagara | Production -- Cascade deprecated since 5.0 |
| Audio | SoundCue | MetaSounds | Production (core) -- SoundCue not yet deprecated |
| Audio Mixing | Static config | Audio Modulation | Production |
| Rendering (Geometry) | Manual LODs | Nanite | Production since 5.0 |
| Rendering (Lighting) | Baked lightmaps | Lumen | Production since 5.0 |
| Level Streaming | World Composition / Level Streaming | World Partition | Production -- World Composition deprecated |
| UI (Multiplatform) | Raw UMG | CommonUI + UMG | Beta (used in Fortnite) |
| Movement | CharacterMovementComponent | Mover 2.0 | Experimental -- CMC still recommended |
| Procedural Content | Manual/Blueprint scripting | PCG Framework | Production since 5.7 |
| Architecture | Monolithic modules | Game Feature Plugins | Production (Lyra/Fortnite) |
| Messaging | Direct delegates/casting | GameplayMessageSubsystem | Production (Lyra) |
| Animation (Locomotion) | State machines/blend trees | Motion Matching (PoseSearch) | Experimental |
| Animation (Interaction) | Manual montage sync | Motion Warping | Production-usable |
| Animation (Rigging) | External DCC only | Control Rig | Production (core) |
| Asset Selection | Hardcoded switch/if chains | Chooser Tables | Beta since 5.4 |
| Networking (Large-scale) | Default replication | Iris | Beta since 5.7 |
| Dialogue | Third-party plugins | CommonConversation | Experimental (not recommended) |
See references/blueprint-and-cpp.md for detailed patterns, communication methods, and performance guidelines.
The gold standard pattern: Abstract C++ base + Blueprint subclass.
C++ (UCLASS(Abstract)) Blueprint Subclass
+----------------------------------+ +---------------------------+
| Base class logic | | Visual/gameplay config |
| - Core systems & algorithms | | - Asset references |
| - Networking & replication | | - Tuning values |
| - Performance-critical code | | - Event responses |
| - BlueprintImplementableEvent | | - Designer iteration |
| - UPROPERTY(EditDefaultsOnly) | | - One-off behaviors |
+----------------------------------+ +---------------------------+Decision matrix:
Critical rules:
TSoftObjectPtr<> for assets not immediately needed (prevents memory bloat)See references/data-driven-design.md for Data Tables, Data Assets, Primary Assets, Asset Manager, and Gameplay Tag patterns.
Core principle: Separate data from logic. Let designers configure without touching code.
| Asset Type | Best For | Key Trait |
|---|---|---|
| Data Table | Large homogeneous datasets (100+ items) | CSV/JSON import, FTableRowBase rows |
| Data Asset | Unique complex definitions (bosses, skill trees) | Full inheritance, UObject members |
| Primary Data Asset | Assets with lifecycle management | Asset Manager integration, async loading |
| Gameplay Tags | Hierarchical state/classification | Replaces enums, designer-creatable |
Gameplay Tags are fundamental -- use them for state management, ability classification, damage types, animation states, input binding, and cross-system communication. Always use FGameplayTagContainer over TArray<FGameplayTag>.
See references/project-organization.md for naming conventions, folder structure, and modular architecture patterns.
Naming convention prefixes (standard):
| Prefix | Type | Prefix | Type |
|---|---|---|---|
BP_ | Blueprint | IA_ | Input Action |
WBP_ | Widget Blueprint | IMC_ | Input Mapping Context |
DA_ | Data Asset | GA_ | Gameplay Ability |
DT_ | Data Table | GE_ | Gameplay Effect |
SM_ | Static Mesh | NS_ | Niagara System |
SK_ | Skeletal Mesh | AM_ | Animation Montage |
M_ | Material | ABP_ | Animation Blueprint |
MI_ | Material Instance | BS_ | Blend Space |
T_ | Texture | S_ | Sound Wave |
Folder structure: Feature-based, not asset-type-based.
See references/performance-and-debugging.md for tick optimization, object pooling, GC management, profiling, and Unreal Insights.
Top performance rules:
bCanEverTick = false)-trace=cpu,gpu,frame,counters), not guessworkCOND_* flags on replicated properties to minimize network bandwidthLyra establishes these patterns as Epic's recommended architecture:
Key changes affecting development practices:
FVector → 3 doubles; TObjectPtr<> replaces raw pointers in UPROPERTYBuildSettingsVersion.V5FString::Appendf enforces static constexpr format strings; HWRT performance improvedFindObject uses EFindObjectFlags; BuildSettingsVersion.V6~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.