Unreal Best Practices logo

Unreal Best Practices

Community
maystudios
unreal-best-practices

Comprehensive best practices guide for modern Unreal Engine 5.x development. Covers Epic's strategic direction toward modern systems (GAS, Enhanced Input, StateTree, MetaSounds, Niagara, PCG, CommonUI, World Partition, Game Feature Plugins, Gameplay Tags), the "research first" philosophy of always checking for newer UE systems before implementing, C++ vs Blueprint decision making, data-driven design, asset management, project organization, naming conventions, performance optimization, and debugging with Unreal Insights. Use when the user asks about UE best practices, modern UE5 workflows, which system to use, old vs new UE systems, recommended approaches, project setup, code organization, performance tips, Blueprint vs C++ decisions, naming conventions, or when starting a new feature and needing guidance on the right UE system to use. Also triggers when the user asks whether there is a newer/better way to do something in Unreal Engine, or when comparing legacy systems against modern replacements. Covers deprecated systems and their migration paths.

Overview

Publishermaystudios
Repositoryclaude-skills
Skill nameunreal-best-practices
Stars
26
Forks
2
Bundled files
5
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 5 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by maystudios on GitHub. Read the source before you install it.

Installation

Install the Unreal Best Practices AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/maystudios/claude-skills/tree/main/unreal-best-practices
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/maystudios/claude-skills.git /tmp/claude-skills
mkdir -p .claude/skills
cp -r /tmp/claude-skills/unreal-best-practices .claude/skills/unreal-best-practices
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Unreal Best Practices in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Unreal Best Practices on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Unreal Best Practices is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Unreal Engine 5.x Best Practices Guide

The "Research First" Principle

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:

  1. Identify the problem domain (input, abilities, audio, particles, AI, UI, movement, etc.)
  2. Check the Modern Systems Quick Reference below
  3. If uncertain, search Epic's documentation and the UE Public Roadmap for the latest system status
  4. Prefer production-ready modern systems over legacy approaches
  5. For experimental systems: evaluate maturity before committing -- use them in prototypes, not shipping builds

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.

Official Documentation (always consult for latest details)

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.

Modern Systems Quick Reference

See references/modern-systems.md for detailed information on each system, migration paths, and documentation links.

System status as of UE 5.7:

DomainLegacy/Old SystemModern SystemStatus
InputBindAction/BindAxisEnhanced InputProduction -- legacy deprecated since 5.1
AbilitiesAd-hoc booleans/timersGameplay Ability System (GAS)Production -- recommended for ability-driven games
State/ClassificationEnums, booleans, stringsGameplay TagsProduction -- foundation of modern UE
AI BehaviorBehavior TreesStateTreeProduction since 5.1 -- alternative, BTs still supported
AI InteractionManual scriptingSmart ObjectsProduction since 5.1
Particles/VFXCascadeNiagaraProduction -- Cascade deprecated since 5.0
AudioSoundCueMetaSoundsProduction (core) -- SoundCue not yet deprecated
Audio MixingStatic configAudio ModulationProduction
Rendering (Geometry)Manual LODsNaniteProduction since 5.0
Rendering (Lighting)Baked lightmapsLumenProduction since 5.0
Level StreamingWorld Composition / Level StreamingWorld PartitionProduction -- World Composition deprecated
UI (Multiplatform)Raw UMGCommonUI + UMGBeta (used in Fortnite)
MovementCharacterMovementComponentMover 2.0Experimental -- CMC still recommended
Procedural ContentManual/Blueprint scriptingPCG FrameworkProduction since 5.7
ArchitectureMonolithic modulesGame Feature PluginsProduction (Lyra/Fortnite)
MessagingDirect delegates/castingGameplayMessageSubsystemProduction (Lyra)
Animation (Locomotion)State machines/blend treesMotion Matching (PoseSearch)Experimental
Animation (Interaction)Manual montage syncMotion WarpingProduction-usable
Animation (Rigging)External DCC onlyControl RigProduction (core)
Asset SelectionHardcoded switch/if chainsChooser TablesBeta since 5.4
Networking (Large-scale)Default replicationIrisBeta since 5.7
DialogueThird-party pluginsCommonConversationExperimental (not recommended)

C++ and Blueprint Best Practices

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:

  • C++: Base classes, systems, performance-critical code, networking, editor tools
  • Blueprint: Gameplay logic, configuration, prototyping, VFX triggers, UI layout
  • Both: C++ defines the framework, Blueprint fills in the gameplay details

Critical rules:

  • Avoid Event Tick -- use timers, events, and delegates instead (20-30% perf improvement)
  • Use Blueprint Interfaces over casting for cross-Blueprint communication (avoids hard references)
  • Use TSoftObjectPtr<> for assets not immediately needed (prevents memory bloat)
  • Cache references instead of searching every frame
  • Blueprint Nativization was removed in UE 5.0 -- manually convert hot paths to C++

Data-Driven Design

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 TypeBest ForKey Trait
Data TableLarge homogeneous datasets (100+ items)CSV/JSON import, FTableRowBase rows
Data AssetUnique complex definitions (bosses, skill trees)Full inheritance, UObject members
Primary Data AssetAssets with lifecycle managementAsset Manager integration, async loading
Gameplay TagsHierarchical state/classificationReplaces 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>.

Project Organization

See references/project-organization.md for naming conventions, folder structure, and modular architecture patterns.

Naming convention prefixes (standard):

PrefixTypePrefixType
BP_BlueprintIA_Input Action
WBP_Widget BlueprintIMC_Input Mapping Context
DA_Data AssetGA_Gameplay Ability
DT_Data TableGE_Gameplay Effect
SM_Static MeshNS_Niagara System
SK_Skeletal MeshAM_Animation Montage
M_MaterialABP_Animation Blueprint
MI_Material InstanceBS_Blend Space
T_TextureS_Sound Wave

Folder structure: Feature-based, not asset-type-based.

Performance and Debugging

See references/performance-and-debugging.md for tick optimization, object pooling, GC management, profiling, and Unreal Insights.

Top performance rules:

  1. Disable tick on actors/components that don't need it (bCanEverTick = false)
  2. Use timers and events instead of per-frame polling
  3. Pool frequently spawned/destroyed actors (projectiles, particles)
  4. Use Nanite for static geometry -- eliminates manual LOD creation
  5. Profile with Unreal Insights (-trace=cpu,gpu,frame,counters), not guesswork
  6. Use COND_* flags on replicated properties to minimize network bandwidth
  7. Audit asset references with the Reference Viewer to prevent memory bloat

Key Design Patterns from Lyra

Lyra establishes these patterns as Epic's recommended architecture:

  1. Game Feature Plugins: Self-contained features that inject into the base game at runtime. One-way dependency -- core game never references features.
  2. Experience System: Async-loading game mode configurations built on Game Feature Plugins. Superior to traditional GameMode subclassing.
  3. GameplayMessageSubsystem: Tag-based publish-subscribe messaging. Eliminates tight coupling between gameplay systems.
  4. GAS + Gameplay Tags: Abilities defined via data, activated via tags, with tag-based blocking/cancellation.
  5. Enhanced Input + Tag Binding: Input Actions mapped to Gameplay Abilities via Gameplay Tags (not direct function calls).
  6. CommonUI: Platform-aware UI with automatic input device switching and focus management.
  7. Primary Data Assets + Asset Manager: Controlled async loading with bundle-based memory management.

Version-Specific Breaking Changes

Key changes affecting development practices:

  • UE 5.0: FVector → 3 doubles; TObjectPtr<> replaces raw pointers in UPROPERTY
  • UE 5.1: Enhanced Input becomes default; legacy input deprecated
  • UE 5.3: C++20 default for new projects; BuildSettingsVersion.V5
  • UE 5.5: Legacy stat profiler deprecated → use Unreal Insights; Zen Loader production-ready; Path Tracer production-ready
  • UE 5.6: Swarm Manager removed; FString::Appendf enforces static constexpr format strings; HWRT performance improved
  • UE 5.7: PCG Framework production-ready; Substrate production-ready; FindObject uses EFindObjectFlags; BuildSettingsVersion.V6

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Unreal Best Practices AI skill do?

Comprehensive best practices guide for modern Unreal Engine 5.x development. Covers Epic's strategic direction toward modern systems (GAS, Enhanced Input, StateTree, MetaSounds, Niagara, PCG, CommonUI, World Partition, Game Feature Plugins, Gameplay Tags), the "research first" philosophy of always checking for newer UE systems before implementing, C++ vs Blueprint decision making, data-driven design, asset management, project organization, naming conventions, performance optimization, and debugging with Unreal Insights. Use when the user asks about UE best practices, modern UE5 workflows, w...

Why use Unreal Best Practices on TypingMind?

Because you install it once and use it with any model. Unreal Best Practices is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Unreal Best Practices in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/maystudios/claude-skills/tree/main/unreal-best-practices. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Unreal Best Practices?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Unreal Best Practices?

As many as you like. As long as a model supports skills, you can use Unreal Best Practices with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Unreal Best Practices AI skill free?

Yes. It is published on GitHub by maystudios under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇