Build high-fidelity games with Unreal Engine 5 using Blueprints and C++. Implement game systems, Niagara particles, Gameplay Ability System, and deploy to platforms. Use when building Unreal games, AAA games, or when user mentions Unreal Engine, UE5, Blueprints, Lumen, Nanite, Niagara, GAS, third-person, first-person shooter, action RPG.
A comprehensive skill for building high-fidelity games with Unreal Engine 5. This skill covers project setup, C++ and Blueprint development, visual effects with Niagara, the Gameplay Ability System (GAS), Lumen/Nanite graphics, and multi-platform deployment.
# Windows - Check if UE5 is installed
dir "C:\Program Files\Epic Games\UE_5.5"
# macOS - Check if UE5 is installed
ls /Users/Shared/Epic\ Games/UE_5.5
Option A: Using Epic Games Launcher
Option B: Copy Starter Template
# Copy the starter template to your projects folder
cp -r templates/starter-app ~/UnrealProjects/MyGame
cd ~/UnrealProjects/MyGame
# Rename project (update .uproject and source files)
# Then generate project files
# Windows
"C:\Program Files\Epic Games\UE_5.5\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.exe" \
-projectfiles -project="MyGame.uproject" -game -rocket -progress
# macOS
/Users/Shared/Epic\ Games/UE_5.5/Engine/Build/BatchFiles/Mac/GenerateProjectFiles.sh \
-project="MyGame.uproject"
# Open in Visual Studio (Windows) or Xcode (macOS)
# Set configuration to "Development Editor"
# Build (F7 or Cmd+B)
# Run (F5 or Cmd+R)
Unreal Engine 5 (UE5) is Epic Games' state-of-the-art game engine for creating photorealistic games, virtual production, architectural visualization, and interactive experiences. Key features include:
Version 5.5 Features (December 2024 Stable):
Version 5.7 Features (Latest):
Before starting development, gather the following information:
## Game Concept Questionnaire
### Genre & Gameplay
- What genre is your game? (FPS, RPG, Platformer, Strategy, etc.)
- Is it single-player, multiplayer, or both?
- What is the camera perspective? (First-person, Third-person, Top-down, Side-scroller)
- What are the core gameplay mechanics?
### Target Platforms
- Primary platform? (PC, Console, Mobile)
- Which consoles? (PS5, Xbox Series X|S, Nintendo Switch)
- Mobile platforms? (iOS, Android)
- VR/XR support needed?
### Visual Style
- Art style? (Photorealistic, Stylized, Pixel art)
- Will you use Nanite for high-poly meshes?
- Will you use Lumen for dynamic lighting?
- Target frame rate? (30 FPS, 60 FPS, 120 FPS)
### Technical Requirements
- Expected world size? (Small levels, Open world)
- Multiplayer architecture? (Dedicated server, Listen server, P2P)
- Expected player count? (Single, Co-op 2-4, MMO 100+)
- Save system requirements?
## Team Capabilities
### Programming
- [ ] C++ developers available
- [ ] Blueprint-only development
- [ ] Mixed C++/Blueprint approach
### Art & Assets
- [ ] 3D artists for custom assets
- [ ] Using Marketplace assets
- [ ] Outsourcing art production
### Audio
- [ ] In-house audio designer
- [ ] Licensed audio assets
- [ ] Third-party audio middleware (Wwise, FMOD)
Development Machine Requirements:
| Component | Minimum | Recommended | Ideal |
|---|---|---|---|
| CPU | Quad-core 2.5 GHz | 6-core 3.0 GHz | 8+ core 3.5+ GHz |
| RAM | 16 GB | 32 GB | 64 GB |
| GPU | GTX 1060 / RX 580 | RTX 3070 / RX 6800 | RTX 4080+ / RX 7900+ |
| Storage | 256 GB SSD | 512 GB NVMe SSD | 1 TB NVMe SSD |
| OS | Windows 10 64-bit | Windows 11 64-bit | Windows 11 64-bit |
Step 1: Install Epic Games Launcher
# Download from: https://www.unrealengine.com/download
# Windows: Run EpicInstaller-x.x.x.msi
# macOS: Mount and install from .dmg
Step 2: Install Unreal Engine
Step 3: Install Visual Studio (Windows)
# Download Visual Studio 2022 Community
# https://visualstudio.microsoft.com/
# Required Workloads:
# - Desktop development with C++
# - Game development with C++
# Required Components:
# - MSVC v143 build tools
# - Windows 10/11 SDK
# - C++ profiling tools
Step 4: Install Xcode (macOS)
# Install from Mac App Store or:
xcode-select --install
# Accept license
sudo xcodebuild -license accept
Git with Git LFS (Recommended):
# Initialize Git repository
git init
# Install and configure Git LFS
git lfs install
# Create .gitattributes for UE5 binary files
cat > .gitattributes << 'EOF'
*.uasset filter=lfs diff=lfs merge=lfs -text
*.umap filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
EOF
# Track LFS files
git lfs track "*.uasset" "*.umap"
Perforce (Enterprise):
Unreal Engine provides several project templates:
| Template | Description | Best For |
|---|---|---|
| Blank | Empty project | Custom game types |
| First Person | FPS setup | Shooters, exploration |
| Third Person | TPS with character | Action, RPG |
| Top Down | Isometric camera | Strategy, ARPGs |
| Vehicle | Car physics | Racing games |
| Puzzle | Puzzle mechanics | Puzzle games |
| 2D Side Scroller | 2D gameplay | Platformers |
# Generate project from template
# Using the Engine's command line tools
# Windows
"C:\Program Files\Epic Games\UE_5.5\Engine\Binaries\Win64\UnrealEditor-Cmd.exe" \
-run=CreateProject \
-ProjectName="MyGame" \
-ProjectDir="C:\Projects\MyGame" \
-Template="/Script/GameProjectGeneration.GameProjectTemplate_ThirdPerson" \
-ProjectType="CPP"
MyGame/
├── Config/
│ ├── DefaultEngine.ini # Engine settings (rendering, physics)
│ ├── DefaultGame.ini # Game settings (project info, packaging)
│ ├── DefaultInput.ini # Input mappings
│ ├── DefaultEditor.ini # Editor preferences
│ └── DefaultGameplayTags.ini # Gameplay tags
├── Content/
│ ├── Abilities/ # GAS abilities and effects
│ ├── Animations/ # Animation assets
│ ├── Audio/ # Sound effects and music
│ ├── Blueprints/ # Blueprint classes
│ ├── Characters/ # Character assets
│ ├── Effects/ # Niagara and materials
│ ├── Environments/ # Level assets
│ ├── Input/ # Input actions and contexts
│ ├── Maps/ # Level files
│ ├── Materials/ # Material instances
│ ├── Meshes/ # Static meshes
│ ├── Textures/ # Texture assets
│ └── UI/ # UMG widgets
├── Source/
│ └── MyGame/
│ ├── MyGame.Build.cs # Module build rules
│ ├── MyGame.Target.cs # Game target config
│ ├── MyGameEditor.Target.cs # Editor target config
│ ├── Public/ # Header files
│ │ ├── MyGame.h
│ │ ├── Characters/
│ │ ├── Abilities/
│ │ ├── Controllers/
│ │ └── Subsystems/
│ └── Private/ # Implementation files
│ └── ...
├── Plugins/ # Project plugins
├── MyGame.uproject # Project file
└── .gitignore
MyGame.Build.cs:
using UnrealBuildTool;
public class MyGame : ModuleRules
{
public MyGame(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
// Core dependencies
PublicDependencyModuleNames.AddRange(new string[] {
"Core",
"CoreUObject",
"Engine",
"InputCore",
"EnhancedInput",
"UMG",
"Slate",
"SlateCore"
});
// Gameplay Ability System
PublicDependencyModuleNames.AddRange(new string[] {
"GameplayAbilities",
"GameplayTags",
"GameplayTasks"
});
// AI
PublicDependencyModuleNames.AddRange(new string[] {
"AIModule",
"NavigationSystem"
});
// Visual Effects
PublicDependencyModuleNames.AddRange(new string[] {
"Niagara"
});
// Networking (if multiplayer)
PublicDependencyModuleNames.AddRange(new string[] {
"NetCore",
"OnlineSubsystem",
"OnlineSubsystemUtils"
});
// Private dependencies
PrivateDependencyModuleNames.AddRange(new string[] {
"AnimGraphRuntime"
});
// Enable IWYU
bEnforceIWYU = true;
}
}
MyGame.Target.cs:
using UnrealBuildTool;
using System.Collections.Generic;
public class MyGameTarget : TargetRules
{
public MyGameTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
DefaultBuildSettings = BuildSettingsVersion.V5;
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_5;
ExtraModuleNames.AddRange(new string[] { "MyGame" });
// Build optimizations
bUseLoggingInShipping = false;
bUseChecksInShipping = false;
bUseUnityBuild = true;
// Enable Iris for advanced optimizations (optional)
// bUseIris = true;
}
}
Base Character Class:
// MyGameCharacter.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "AbilitySystemInterface.h"
#include "MyGameCharacter.generated.h"
class UAbilitySystemComponent;
class UMyGameAttributeSet;
class USpringArmComponent;
class UCameraComponent;
UCLASS()
class MYGAME_API AMyGameCharacter : public ACharacter, public IAbilitySystemInterface
{
GENERATED_BODY()