- 技術 💻
UE5(Unreal Engine 5)とは|始め方・必要スペック・料金を解説
結論
UE5(Unreal Engine 5)は、Epic Gamesが無料で配布する3Dのゲームエンジンです。ゲームの売上が100万ドルを超えた分にだけ5%のロイヤリティがかかります。
この記事でわかること
- Nanite・Lumenなど機能12種と公式の必要スペック
- インストール6手順とジャンプ台を作る8手順
- エラー10件の直し方とUnity・Godotとの違い表
UE5 は、Epic Games Launcher でエンジンを入れ、テンプレートからプロジェクトを作り、エディタでレベル(ゲームの舞台)を組み立てて、ブループリントか C++ で動きを付ける、という順に使います。
flowchart TD
A[Epic Games Launcher<br>を入れてサインイン] --> B[エンジン 5.8 を<br>インストール]
B --> C[テンプレートから<br>プロジェクトを作る]
C --> D[レベルに配置して<br>ブループリントで動かす]
D --> E[Play で試す]
E --> F[パッケージ化して<br>配布する]
急いでいる人向けに、よく調べられることの答えを先にまとめます。
| 知りたいこと | 答え | 詳しい節 |
|---|---|---|
| 読み方・何か | アンリアルエンジン ファイブ。Epic Games のゲームエンジン | UE5とは |
| 無料か | 無料。ゲームは製品の総収益100万ドル超の分に5% | 料金とロイヤリティ |
| 最新版 | 5.8(2026年6月公開。ホットフィックスは 5.8.4) | UE5とは |
| 必要スペック | Windows 11・4コア 2.5GHz・メモリ 32GB・VRAM 8GB(推奨) | 必要スペック |
| インストール | Epic Games Launcher →「Unreal Engine」→「ライブラリ」→「+」 | インストール手順 |
| 最初の一歩 | Third Person テンプレート+ブループリント | 最初のゲーム |
| C++ は必要か | 必須ではない。基盤を C++、その上をブループリントが公式の勧め | ブループリントとC++ |
| シェーダーのコンパイルが遅い | 初回はコンパイルが走り、結果はキャッシュ(DDC)に残る | よくあるエラー |
| Unity・Godot との違い | 言語・料金の仕組み・ライセンスが違う | 違い表 |
確認環境:UE5 本体の仕様・必要スペック・インストール手順・テンプレート・エディタの画面・ブループリントと C++ の説明・コーディング規約・パッケージ化・エラー時の設定は、Epic Games の公式ドキュメント(Unreal Engine 5.8 版)と Unreal Engine 5.8 のリリースノートで、料金とロイヤリティは unrealengine.com のライセンスページと公式ブログで、MetaHuman のライセンスは metahuman.com で、版とホットフィックスは Epic Developer Community フォーラムの告知で確かめました。C++ の部分は、UE のクラス・マクロの書き方を公式ドキュメントに沿って示し、エンジンを使わない計算(Tick の移動量・ベクトルの内積・float と double の精度)は Ubuntu 24.04・g++ 13.3.0(-std=c++20)で実行して出力を載せています。.uproject は UE 5.8 の公開サンプルプロジェクトと同じ形で作って Python 3.11.15 で読み、.gitignore と Git LFS の対象は git 2.43.0・git-lfs 3.4.1 の check-ignore・check-attr で確かめました。Unity・Godot の情報は各公式ページで確かめました(確認日 2026年10月22日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「UE5(Unreal Engine 5)とは|始め方・必要スペック・料金を解説」
UE5(Unreal Engine 5)とは(読み方・最新版・UE6)
この節では、UE5 がどんなソフトで、今どの版が最新かが分かります。
UE5(Unreal Engine 5、読み方はアンリアルエンジン ファイブ)は、米国の Epic Games が開発・配布しているゲームエンジンです。 ゲームエンジンは、画面の描画・物理・音・入力・アニメーション・ネットワークなど、ゲームに共通する部品をまとめたソフトです。UE5 はゲームのほか、映像・放送・建築・自動車の可視化にも使われます。プロジェクトの作成画面でも、「Games」のほかに「Film, Television, and Live Events」「Architecture, Engineering, and Construction」「Automotive, Product Design, and Manufacturing」の分野が並びます。
1無料で全機能が使える
公式のライセンスページでは、個人と年間総収益100万ドル未満の会社、教育機関は無料。ソースコードにもアクセスできる。
2写真に近い3D表現
Nanite(大量のポリゴン)と Lumen(動的な光の反射)で、作り込んだ見た目をリアルタイムに描く。
3コードなしでも作れる
ブループリント(ノードをつなぐ見た目のスクリプト)で、ゲームの動きを作れる。C++ でも書ける。
4多くの機種に書き出す
Windows・Mac・Linux・iOS・Android 向けに書き出せる。家庭用ゲーム機向けはソースからのビルドが要る(公式のインストール手順)。
UE5 の歩みと、2026年10月22日時点の版です。
| 時期 | 出来事 |
|---|---|
| 2020年5月 | UE5 を発表(PlayStation 5 で動く技術デモ) |
| 2021年5月 | 早期アクセス版を公開 |
| 2022年4月 | 正式版 5.0 を公開 |
| 2026年6月17日 | 5.8 を公開(State of Unreal で発表) |
| 2026年10月 | 公式フォーラムで 5.8.4 ホットフィックスを告知 |
| 2027年末(目標) | UE6 の早期アクセス版。正式版はその12〜18か月後が目標 |
2026年10月22日時点の最新版は Unreal Engine 5.8 で、ホットフィックスは 5.8.1(7月)・5.8.2(8月)・5.8.3(9月)・5.8.4(10月)と出ています。 Epic Games ジャパンの発表では、UE6 は UE5 と Unreal Editor for Fortnite(UEFN)を1つにまとめたエンジンで、2027年末の早期アクセスが目標です。今から学ぶなら 5.8 で始め、UE6 が出たら移行を考える順になります。
5.8 で入った主な機能と、リリースノートでの状態です。
| 機能 | 内容 | 状態(5.8) |
|---|---|---|
| MegaLights | 影を落とす光源を大量に置けるライティング | Production Ready |
| Lumen Lite | 軽い版の Lumen | Beta |
| Mesh Terrain | メッシュで作る地形 | Experimental |
| Unreal MCP Server | AI エージェントからエディタを操作する MCP サーバーのプラグイン | Experimental |
| Procedural Vegetation Editor | 植物を手続き的に作るエディタ | Experimental |
| MetaHuman Crowd | MetaHuman の群衆 | Experimental |
5.8 では、Windows の音声の既定が XAudio2 から WASAPI に変わるなど、既存プロジェクトに関わる変更もリリースノートに載っています。版を上げるときは、リリースノートの「Upgrade Notes」を先に読みます。
UE5でできること(Nanite・Lumen・MetaHumanなどの早見表)
この節では、UE5 の代表的な機能が、それぞれ何をするものかが一覧で分かります。
UE5 の機能は「見た目(描画)」「広い世界」「キャラクター」「動き・音・物理」に分けると覚えやすくなります。 公式ドキュメントの説明をもとにまとめました。
| 機能 | 何をするか | 分野 |
|---|---|---|
| Nanite | 内部の独自形式で、高密度のメッシュを LOD を作らずに描く仮想化ジオメトリ | 描画 |
| Lumen | 完全に動的なグローバルイルミネーション(間接光)と反射。新規プロジェクトでは既定で有効 | 描画 |
| Virtual Shadow Maps | 高解像度の影。Nanite と組み合わせて使う | 描画 |
| MegaLights | 影を落とす光源を多数置ける(5.8 で Production Ready) | 描画 |
| Temporal Super Resolution | 低い解像度で描いて高い解像度に引き上げる | 描画 |
| World Partition | 1つの大きなマップをグリッドに分け、距離に応じて自動で読み込む | 広い世界 |
| PCG | ルールから木・岩・建物などを自動で配置する | 広い世界 |
| MetaHuman | 写真に近いデジタルヒューマンを作り、動かす | キャラクター |
| Control Rig | エディタの中でキャラクターのリグを作り、アニメーションを付ける | キャラクター |
| Niagara | パーティクル(炎・煙・魔法など)のエフェクト | 動き・音・物理 |
| Chaos | 物理・破壊のシミュレーション | 動き・音・物理 |
| MetaSounds | ノードで組み立てる音のシステム | 動き・音・物理 |
Nanite は、静的メッシュ・スケルタルメッシュ・インスタンスなどに対応し、マテリアルは不透明(Opaque)とマスク(Masked)に対応します。半透明(Translucent)や Morph Target には対応しません(公式ドキュメント)。メッシュでは、スタティックメッシュエディタの「Details」パネルの「Nanite Settings」で「Enable Nanite Support」にチェックを入れると有効になります。
Lumen は、対応する GPU・RHI・OS ではハードウェアレイトレーシングを使い、そうでないときは距離フィールドを使うソフトウェアレイトレーシングで動きます。UE4 から変換したプロジェクトでは、Lumen は自動では有効になりません。
MetaHuman は、年間の収益が100万ドル未満なら無料で使え、UE 以外のエンジンや制作ソフトでも使えます(metahuman.com のライセンスページ、2026年10月22日時点)。収益がそれを超えると、UE の標準の条件が適用されます。
UE5の必要スペック(Windows・Mac・Linux)
この節では、UE5 を動かすのに公式が推奨するパソコンの性能と、Lumen・Nanite を使うための条件が分かります。
UE 5.8 の公式の推奨は、Windows 11・クアッドコア 2.5GHz 以上の CPU・メモリ 32GB・ビデオメモリ 8GB 以上・DirectX 12 対応の GPU です。 公式ドキュメント「Hardware and Software Specifications」の値です(2026年10月22日時点)。
| 項目 | Windows | Mac | Linux |
|---|---|---|---|
| OS(推奨) | Windows 11 | macOS(エンジンの実行は Sonoma 14.5 以上) | Ubuntu 22.04 |
| CPU | Intel・AMD のクアッドコア 2.5GHz 以上 | Apple シリコン M3(最小は M1・M2、機能による) | Intel・AMD のクアッドコア 2.5GHz 以上 |
| メモリ | 32GB | 32GB 以上(最小 16GB) | 32GB |
| GPU | DirectX 12 対応・VRAM 8GB 以上 | Apple シリコンの GPU | GeForce 2080 相当・VRAM 8GB 以上 |
| C++ の開発ツール | Visual Studio 2026(最小 2022 の 17.14) | Xcode(macOS 向けは 15.2 以上、iOS 向けは 26.0 以上) | clang 20.1.8 |
Windows でエンジンを動かす最小の条件は、Windows 10 Version 22H2(64 ビット)か Windows 10 Enterprise Version 21H2(64 ビット)と、DirectX End-User Runtimes(June 2010)です。Linux では Rocky Linux 8・Red Hat Linux 8 以降、カーネル 4.18 以降、glibc 2.28 以降が最小です。
Lumen・MegaLights・Naniteを使うための条件
Lumen(GI と反射)と MegaLights は、DirectX 12 と Shader Model 6(SM6)が使える GPU が条件です。 公式ドキュメントに載っている GPU は次のとおりです。
| 機能 | Windows の条件 | 対応 GPU |
|---|---|---|
| Lumen・MegaLights | Windows 10 build 1909.1350 以降・DirectX 12・SM6 を有効 | NVIDIA RTX-2000 以降、AMD RX-6000 以降、Intel Arc A シリーズ以降 |
| Nanite・Virtual Shadow Maps | DirectX 12(SM 6.6 の atomics)か Vulkan(VK_KHR_shader_atomic_int64)・SM6 を有効 | GPU の一覧は無し(最新のドライバ) |
| Temporal Super Resolution | Shader Model 5 に対応した GPU | ― |
Mac では、Lumen のソフトウェアレイトレーシングは Apple シリコン M1 以降、Lumen のハードウェアレイトレーシングと MegaLights は M2 以降(実験的)、Nanite と Virtual Shadow Maps は M2 以降(ベータ)です。新規プロジェクトでは SM6 は既定で有効になっています。
ディスクの容量はどれくらい要るか
公式ドキュメントは、エンジンに必要な容量を数値で示していません。 インストール時の「Options」の画面に、選んだ部品に必要な容量が表示されます。容量はエンジンの版ごとに必要で、さらにプロジェクトごとに中間ファイル(Intermediate)・保存データ(Saved)・派生データのキャッシュ(DDC)が増えます。公式ドキュメントで紹介されている Epic Games 社内の典型的な作業用 PC は、OS 用に 2TB、データ用に 4TB の SSD を積んでいます。エンジンとプロジェクトは、空きに余裕のある SSD に置くと、読み込みとシェーダーのコンパイルの待ち時間が短くなります。
- 1メモリは 32GB あるか16GB でも起動はするが、公式の推奨は 32GB
- 2GPU は DirectX 12・VRAM 8GB 以上かLumen を使うなら RTX-2000・RX-6000・Arc A 以降
- 3SSD の空きに余裕があるかエンジンの版ごと・プロジェクトごとに容量が増える
- 4C++ を書くなら Visual Studio を入れたかブループリントだけなら不要。C++ を書く場合は後の節のワークロードを選ぶ
UE5の料金とロイヤリティ(2026年10月22日時点)
この節では、UE5 が無料で使える範囲と、お金がかかる条件、その計算方法が分かります。
UE5 は誰でも無料でダウンロードして使えます。お金がかかるのは、(1) ゲームなどを販売して製品の総収益が100万ドルを超えたとき(超えた分の5%)と、(2) 年間の総収益が100万ドルを超える会社がゲーム以外の商用目的で使うとき(1シート年額1,850ドル)です。 unrealengine.com のライセンスページの内容です(2026年10月22日時点)。
| 区分 | 対象 | 料金 |
|---|---|---|
| 無料 | 個人・年間総収益100万ドル未満の小規模な会社・教育者と教育機関(教育機関は収益の上限なし) | 無料。全機能・全プラットフォーム・ソースコード |
| ロイヤリティ | 実行時にエンジンのコードを使うゲーム・アプリを第三者の利用者に提供する場合 | 製品の生涯総収益のうち100万ドルを超えた分に5%。シートの購入は不要 |
| シート | 上以外の商用利用で、過去12か月の総収益が100万ドルを超える場合(映像・建築など) | 1シートあたり年額1,850ドル |
ロイヤリティについて、ライセンスページには次のことも書かれています。
- Epic Games Store での販売による収益は、ロイヤリティがかかりません。
- 出荷したらリリースの通知フォームを出し、四半期ごとにロイヤリティを報告します。
- シートは Developer Portal で買い、管理します。10シート以上なら Epic Pro Support を追加で買えます。
2025年1月1日からは「Launch Everywhere with Epic(図の EGS 先行)」という仕組みがあり、ゲームを Epic Games Store で他のストアと同時か先に出すと、すべてのプラットフォーム・ストアのロイヤリティが5%から3.5%に下がります(Epic Games の公式ブログ)。他の PC・Android のストアで先に出すと5%に戻ります。この仕組みを使うには、更新された UE の EULA(使用許諾契約)への同意が要ります。
flowchart TD
A[売るゲーム・アプリ] --> B[製品の総収益<br>100万ドルまで無料]
B --> C[超えた分に5%<br>EGS先行なら3.5%]
D[ゲーム以外の商用<br>映像・建築など] --> E[会社の年収益<br>100万ドル以下は無料]
E --> F[超える会社は<br>1シート年1,850ドル]
ロイヤリティの計算例
「生涯総収益のうち100万ドルを超えた分 × 料率」を、Python で計算しました。Epic Games Store 以外で売れた収益で計算した例です。
"""UE のロイヤリティの目安:製品の生涯総収益のうち 100万ドルを超えた分 × 料率(Epic Games Store の売上は対象外)"""
THRESHOLD = 1_000_000
def royalty(gross_other: float, rate: float = 0.05) -> float:
"""gross_other: Epic Games Store 以外の総収益(米ドル)"""
return max(0.0, gross_other - THRESHOLD) * rate
for gross in (800_000, 1_000_000, 1_500_000, 5_000_000):
print(f"総収益 {gross:>9,} ドル → 5%: {royalty(gross):>9,.0f} ドル / 3.5%: {royalty(gross, 0.035):>9,.0f} ドル")
総収益 800,000 ドル → 5%: 0 ドル / 3.5%: 0 ドル
総収益 1,000,000 ドル → 5%: 0 ドル / 3.5%: 0 ドル
総収益 1,500,000 ドル → 5%: 25,000 ドル / 3.5%: 17,500 ドル
総収益 5,000,000 ドル → 5%: 200,000 ドル / 3.5%: 140,000 ドル
150万ドル売れたゲームでは、超えた50万ドルの5%で2万5,000ドル、Launch Everywhere with Epic の対象なら3.5%で1万7,500ドルになります。総収益は利益ではなく売上の総額で、ストアが差し引く手数料の前の金額です。実際の計算の対象(ダウンロードコンテンツ・アプリ内課金など)と報告の方法は、EULA とライセンスの FAQ で確かめます。
UE5のインストール手順(Epic Games Launcher)
この節では、UE5 を Windows・Mac に入れて、エディタを起動するまでの手順が分かります。
UE5 は「Epic Games Launcher」というアプリから入れます。 公式ドキュメント「Installing Unreal Engine」の手順です。
Epic Games Launcher を入れる
unrealengine.com のダウンロードページで「Download Launcher」を押し、インストーラーを実行します。
サインインする
Launcher を開き、Epic Games のアカウントでサインインします。「sign in later」を選ぶとエンジンをダウンロードできません。
エンジンの版を足す
左の「Unreal Engine」→「Library」タブを開き、「ENGINE VERSIONS」の横の「+」を押します。タイルの版の番号から入れる版を選びます(既定は最新版)。
料金と EULA に同意する
タイルの「Install」を押し、料金の説明で「Accept」、EULA のチェックを入れて「Accept」を押します。
場所と部品を選ぶ
「Browse」で入れる場所を選び、「Options」で部品を選んで「Apply」を押します。必要な容量はこの画面に表示されます。
インストールして起動する
「Install」で入れ始めます。途中で一時停止・再開もできます。終わったらタイルの「Launch」で起動し、プロジェクトブラウザが開きます。
「Options」で選べる部品です。
| 部品 | 内容 | 入れる目安 |
|---|---|---|
| Core Components | エンジンの本体(必須) | 必須 |
| Starter Content | 練習用のマップ・メッシュ・テクスチャ | 学ぶなら入れる |
| Templates and Feature Packs | プロジェクトのテンプレートと機能パック | 入れる |
| Engine Source | 読むためのソースコード(変更・再ビルドはできない) | C++ でエンジンの中を読みたいとき |
| Editor symbols for debugging | クラッシュ時の詳しい情報 | C++ でデバッグするとき(容量が大きい) |
| Target Platform | Android・iOS・Linux など向けの部品(各 SDK が別に要る) | 書き出す機種だけ |
エンジンを改造したい、家庭用ゲーム機向けに作りたいときは、GitHub のソースコードからビルドした UE を使います(公式のインストール手順)。この方法は Launcher 版とは別の手順です。
エディタを日本語にする
UE のエディタは英語で表示されることがあります。エディタの環境設定(Editor Preferences)の「Region & Language」で、言語を日本語(Japanese)に変えると、メニューなどが日本語になります。公式ドキュメントや海外の解説は英語の項目名で書かれていることが多いので、英語のまま覚えると調べるときに迷いにくくなります。この記事では、画面の名前を英語で書いています。
プロジェクトの作り方とテンプレートの選び方
この節では、最初のプロジェクトをどのテンプレートと設定で作ればよいかが分かります。
最初は「Games」分野の Third Person テンプレートを、Blueprint で作ると、動くキャラクターが入った状態から始められます。 プロジェクトブラウザでは、分野 → テンプレート → 「Project Defaults」→ 場所と名前、の順に選びます。
UE 5.6 で新しくなったゲームのテンプレートと、その中の「バリアント(Variant)」です(Epic Games の公式ニュース)。
| テンプレート | バリアント | 入っているもの |
|---|---|---|
| First Person | Arena Shooter・Survival Horror | 武器の拾得・弾・AI の敵/懐中電灯・ダッシュ・暗い環境のライティング |
| Third Person | Combat・Side Scroller・Platformer | 格闘のコンボ・AI の敵/横スクロールのカメラ/ダッシュ・壁ジャンプ |
| Top Down | Strategy・Twin Stick | グリッド移動・範囲選択/2本スティックの操作・スコア |
| Vehicle | Offroad・Time Trial | 四輪駆動の車と地形/周回コースとラップタイム |
| Blank | ― | 空のプロジェクト |
| Handheld AR | ― | スマホの AR(実装は Blueprint だけ) |
どのバリアントにも、Nanite 品質のメッシュ、ドア・ジャンプ台などの仕掛け、キャラクターの Manny と Quinn、スマホのタッチにも対応した入力の設定が共通で入っています。
「Project Defaults」の設定です。
| 設定 | 選択肢 | 最初の選び方の目安 |
|---|---|---|
| Implementation | Blueprint・C++ | Blueprint(後から C++ のクラスを足せる) |
| Target Platform | Desktop・Mobile | Desktop |
| Quality Preset | Maximum・Scalable | PC の性能に余裕がなければ Scalable |
| Starter Content | 入れる・入れない | 学ぶなら入れる |
| Ray Tracing | 有効・無効 | GPU が対応していなければ無効 |
Implementation で Blueprint を選んでも、後から「New C++ Class」で C++ のクラスを足せます。 その時点で Visual Studio などの開発ツールが必要になります。
エディタの画面の見方と基本操作
この節では、UE5 のエディタの画面の各部分の名前と役割、視点の動かし方が分かります。
UE5 のエディタ(レベルエディタ)は、真ん中のビューポートでレベルを見ながら、右の Outliner で物を選び、Details パネルで設定を変える、という使い方が基本です。 公式ドキュメント「Unreal Editor Interface」の画面の部分です。
| 部分 | 役割 |
|---|---|
| Menu Bar | 保存・レベルの作成・ウィンドウを開くなどのメニュー |
| Main Toolbar | よく使うツール、モードの切り替え、Play の操作、書き出し用の Platforms メニュー |
| Level Viewport | レベルの中身を表示し、配置・編集する場所 |
| Viewport Toolbar | 移動・回転のツール、スナップ、カメラ、表示モード、性能の設定 |
| Outliner | レベルにあるものの一覧(ツリー) |
| Details panel | 選んだもの(Actor)の位置・メッシュ・マテリアル・物理などの設定 |
| Content Drawer | プロジェクトのアセット(素材)の一覧。Ctrl+Space で開く |
| Bottom Toolbar | コマンドのコンソール、Output Log、派生データ、ソース管理の状態 |
UE では、レベルに置ける物を Actor(アクター) と呼びます。キャラクター・ライト・カメラ・置いた岩も Actor です。Actor に付ける部品(メッシュ・当たり判定・音など)を Component(コンポーネント) と呼びます。
| 操作 | キー(既定) |
|---|---|
| 視点を前後左右に動かす | 右ボタンを押しながら W・S・A・D |
| 視点を上下に動かす | 右ボタンを押しながら E・Q |
| 選んだ物に視点を合わせる | F |
| 移動・回転・拡大縮小のツール | W・E・R |
| コンテンツドロワーを開く | Ctrl+Space |
ショートカットは「Keyboard Shortcuts」の設定で変えられるので、環境によって違うことがあります。
ブループリントとC++の違い・選び方
この節では、UE5 でゲームの動きを書く2つの方法の違いと、どちらから始めるかの決め方が分かります。
ブループリント(Blueprint)はノードを線でつないで動きを作る、エディタの中の見た目のスクリプトで、C++ はテキストで書くプログラムです。 公式ドキュメントは「C++ を土台にして、その上にブループリントのクラスを作る」組み合わせ方を勧めています。
ジャンプ台に乗ったら高く飛ばしたい
公式の比較:ブループリントは試作と調整が速く、デザイナーにも読める。C++ は新しいシステムを作りやすく、テキストなので diff・マージ・共有がしやすい
| 観点 | ブループリント | C++ |
|---|---|---|
| 書き方 | ノードを線でつなぐ(エディタの中) | テキストで書いてビルドする |
| 向いていること | 動きの調整、試作、デザイナーとの共同作業 | 新しいシステム、細かい制御、複雑なアルゴリズム |
| 実行のされ方 | バイトコードにコンパイルされ、仮想マシンで動く | ネイティブのコードにコンパイルされる |
| 速さ | 実行のオーバーヘッドがあるが、差は多くの場合わずか(公式) | オーバーヘッドなし |
| バージョン管理 | .uasset(バイナリ)で、差分が見にくい | テキストで、diff・マージしやすい |
| 必要なもの | エディタだけ | Visual Studio・Xcode・Rider など |
公式ドキュメントは、ブループリントの性能を上げる方法として、毎フレームの「Tick」を使う代わりにタイマーやデリゲートで処理を予約することを挙げています。
flowchart TD
A[C++ のクラス<br>土台の処理と変数] --> B[ブループリントのクラス<br>C++ のクラスを親にする]
B --> C[レベルに置いた<br>アクター]
D[デザイナーが<br>数値と見た目を調整] --> B
迷ったときの判断表です。
| 状況 | 選ぶもの(目安) |
|---|---|
| プログラミングが初めて・まず動くものを作りたい | ブループリント |
| テンプレートを改造して遊びを作りたい | ブループリント |
| チームで同じファイルを触る・差分を確かめたい | 中心の処理を C++ |
| 毎フレーム多くの物を計算する・重い処理がある | C++(呼ぶ側をブループリント) |
| エンジンにない仕組み(独自の通信・データ処理)を作る | C++ |
| C++ の経験がある | C++ のクラス+ブループリントの子クラス |
C++ は書けるけれど UE が初めて、という人も、最初はブループリントでエディタの考え方(Actor・Component・イベント)を覚えると、UE の C++ のクラスの役割が読みやすくなります。
最初のゲームを作る手順(ブループリントでジャンプ台)
この節では、テンプレートのキャラクターが乗ると高く飛ぶ「ジャンプ台」を、ブループリントで作る手順が分かります。
公式のブループリントのクイックスタートと同じノードの組み方で、Third Person テンプレートにジャンプ台を作ります。 当たり判定(Box Collision)に入ったのがプレイヤーなら、「Launch Character」で上に飛ばす、という仕組みです。
プロジェクトを作る
「Games」→「Third Person」、Implementation は「Blueprint」、Starter Content を入れて作ります。
ブループリントのクラスを作る
Content Drawer で右クリック →「Blueprint Class」→ 親クラスに「Actor」を選び、名前を BP_LaunchPad にします。
見た目と当たり判定を足す
ブループリントエディタの「Add」から Cube を足して薄い板(Scale の Z を 0.1)にし、さらに「Box Collision」を足して板の上に広げます。
重なったときのイベントを置く
Box を選び、Event Graph で右クリック →「Add Event for Box」→「Collision」→「On Component Begin Overlap」を置きます。
プレイヤーか確かめる
「Other Actor」から「Equal (Object)」を出し、もう一方に「Get Player Pawn」をつなぎます。その結果を「Branch」の Condition につなぎます。
上に飛ばす
「Get Player Pawn」から「Cast to Character」を出して Branch の True につなぎ、「As Character」から「Launch Character」を出して Z に 3000 を入れます。
コンパイルして置く
ツールバーの「Compile」と「Save」を押し、Content Drawer から BP_LaunchPad をレベルにドラッグして置きます。
Play で試す
メインツールバーの Play を押し、W・A・S・D で歩いてジャンプ台に乗ります。終わったら Stop で止めます。
できあがるノードのつながりを文字で書くと、次のとおりです。
On Component Begin Overlap (Box)
└─ Branch Condition = (Other Actor == Get Player Pawn)
└─ True → Cast to Character (Object = Get Player Pawn)
└─ Launch Character (Target = As Character, Launch Velocity Z = 3000)
UE の距離の既定の単位はセンチメートル(cm)なので、Launch Velocity の 3000 は秒速30メートルです(公式ドキュメント「Units of Measurement」)。Z が上向きなのは、UE の座標系が「左手系・Z が上・X が前」だからです。
ここから先は、コインを拾うとスコアが増える、時間内にゴールする、といった遊びを、同じ「イベント → 条件 → 処理」の形で足していきます。
UE5のC++の書き方(クラス・マクロ・命名規則)
この節では、UE の C++ が普通の C++ とどう違うか、最小のクラスの書き方、Visual Studio の準備が分かります。
UE の C++ は C++20 で書き、UCLASS・UPROPERTY・UFUNCTION というマクロで、クラスや変数をエディタとブループリントに見せます。 公式のコーディング規約では、UE は既定で C++20 でコンパイルされ、最低でも C++20 が要ります。C++ の言語そのものの基本は、関連記事「C言語とは|入門から環境構築・ポインタ・mallocまで実行例で解説」で扱っています。
名前の付け方(型の頭文字)
公式のコーディング規約の命名規則です。エンジンのコードを読むときにも、この頭文字で種類が分かります。
| 頭文字 | 意味 | 例 |
|---|---|---|
| A | AActor を継承したクラス(レベルに置ける物) | AActor・ACharacter |
| U | UObject を継承したクラス | UStaticMeshComponent |
| F | それ以外の多くのクラス・構造体 | FVector・FString |
| T | テンプレートのクラス | TArray・TMap |
| I | 抽象インターフェース | IInterface の形 |
| E | 列挙型 | ECollisionChannel |
| S | SWidget を継承したクラス(Slate の UI) | SButton |
| b | bool の変数 | bCanEverTick |
規約では、auto は一部の例外(ラムダ、長いイテレーターの型など)を除いて使わない、NULL ではなく nullptr を使う、文字列のリテラルは TEXT() で囲む、とされています。
最小のクラス(上下に浮きながら回る Actor)
公式の C++ クイックスタートと同じ内容(上下に揺れながら回る Actor)のクラスを、この記事用に書きました。エディタのメニューの「New C++ Class」で、親クラスに Actor を選んで作ったファイルに書き足します。このコードは UE のプロジェクトの中でビルドします(エンジンのヘッダーを使うため)。
// FloatingActor.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "FloatingActor.generated.h"
UCLASS()
class MYGAME_API AFloatingActor : public AActor
{
GENERATED_BODY()
public:
AFloatingActor();
virtual void Tick(float DeltaTime) override;
protected:
// エディタで見えるが、差し替えはしないメッシュ
UPROPERTY(VisibleAnywhere, Category = "Floating")
TObjectPtr<UStaticMeshComponent> VisualMesh;
// エディタとブループリントから変えられる値(0以上)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Floating", meta = (ClampMin = "0.0"))
float FloatHeight = 20.0f; // 上下の振れ幅(cm)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Floating")
float RotationSpeed = 20.0f; // 1秒あたりの回転(度)
// ブループリントから呼べる関数
UFUNCTION(BlueprintCallable, Category = "Floating")
void ResetHeight();
private:
double StartZ = 0.0;
};
// FloatingActor.cpp
#include "FloatingActor.h"
#include "Components/StaticMeshComponent.h"
AFloatingActor::AFloatingActor()
{
PrimaryActorTick.bCanEverTick = true; // 毎フレーム Tick を呼ぶ
VisualMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("VisualMesh"));
RootComponent = VisualMesh;
}
void AFloatingActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
FVector Location = GetActorLocation();
FRotator Rotation = GetActorRotation();
const float RunningTime = GetGameTimeSinceCreation();
const float DeltaHeight = FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime);
Location.Z += DeltaHeight * FloatHeight; // sin の差分だけ動かす
Rotation.Yaw += RotationSpeed * DeltaTime; // DeltaTime を掛けて「1秒あたり」にする
SetActorLocationAndRotation(Location, Rotation);
}
void AFloatingActor::ResetHeight()
{
FVector Location = GetActorLocation();
Location.Z = StartZ;
SetActorLocation(Location);
}
MYGAME_API の部分は、プロジェクト名から作られるマクロで、プロジェクトごとに名前が変わります。マクロの意味は公式ドキュメントで次のとおりです。
| 書き方 | 意味 |
|---|---|
UPROPERTY(EditAnywhere) |
プロパティのウィンドウで、アーキタイプ(ブループリントの既定値)と置いた物の両方で編集できる |
UPROPERTY(VisibleAnywhere) |
すべてのプロパティのウィンドウで見えるが、編集はできない |
UPROPERTY(EditDefaultsOnly) |
アーキタイプでだけ編集できる |
BlueprintReadWrite・BlueprintReadOnly |
ブループリントから読み書きできる・読むだけ |
meta = (ClampMin = "N") |
入力できる最小値 |
UFUNCTION(BlueprintCallable) |
ブループリントのグラフから実行できる関数 |
UFUNCTION(BlueprintPure) |
持ち主の状態を変えない関数(実行ピンの無いノードになる) |
UFUNCTION(BlueprintImplementableEvent) |
ブループリント側で中身を書くイベント |
UFUNCTION(BlueprintNativeEvent) |
C++ に既定の中身があり、ブループリントで上書きできるイベント |
Tick の計算をエンジン無しで確かめる(g++ で実行)
UE の動きのコードで大事なのは、毎フレームの移動量に DeltaTime(前のフレームからの秒数)を掛けることです。 掛けないと、フレームレートが高い PC ほど速く動きます。上の Tick と同じ計算を、エンジンを使わない C++ で書き、30・60・144・240 fps で1秒ずつ動かしました。
// tick_sim.cpp:FloatingActor の Tick と同じ計算を、フレームレートを変えて比べる
#include <cmath>
#include <cstdio>
#include <initializer_list>
struct Result { double z; double yaw; double yawPerFrame; int frames; };
Result Simulate(int fps, double seconds) {
const float DeltaTime = 1.0f / fps; // UE の Tick に渡る DeltaTime(秒、float)
double Z = 180.0; // 置いた高さ(cm)
double Yaw = 0.0, YawPerFrame = 0.0;
double Time = 0.0; // 生成からの経過秒
const int frames = static_cast<int>(std::lround(seconds * fps));
for (int i = 0; i < frames; ++i) {
const double HeightDelta = std::sin(Time + DeltaTime) - std::sin(Time);
Z += HeightDelta * 20.0; // 上下に ±20cm
Yaw += DeltaTime * 20.0; // 1秒に20度(DeltaTime を掛ける)
YawPerFrame += 1.0; // 悪い例:1フレームに1度
Time += DeltaTime;
}
return {Z, Yaw, YawPerFrame, frames};
}
int main() {
std::printf("%-6s %-7s %-12s %-14s %-16s\n", "fps", "frames", "Z(cm)", "Yaw(DeltaTime)", "Yaw(per frame)");
for (int fps : {30, 60, 144, 240}) {
Result r = Simulate(fps, 1.0);
std::printf("%-6d %-7d %-12.4f %-14.4f %-16.1f\n", fps, r.frames, r.z, r.yaw, r.yawPerFrame);
}
std::printf("expected Z after 1s = 180 + 20*sin(1) = %.4f\n", 180.0 + 20.0 * std::sin(1.0));
}
g++ -std=c++20 -O2 -Wall -Wextra -o tick_sim tick_sim.cpp && ./tick_sim
fps frames Z(cm) Yaw(DeltaTime) Yaw(per frame)
30 30 196.8294 20.0000 30.0
60 60 196.8294 20.0000 60.0
144 144 196.8294 20.0000 144.0
240 240 196.8294 20.0000 240.0
expected Z after 1s = 180 + 20*sin(1) = 196.8294
DeltaTime を掛けた回転は、どのフレームレートでも1秒で20度になりました。1フレームに1度ずつ足した場合は、30fps で30度、240fps で240度と8倍の差が出ました。 高さは、sin の差分を足していくので、何フレームに分けても合計が 20×sin(1秒) に一致します。
ベクトルの内積で「敵が前にいるか」を判定する
UE の FVector には内積(FVector::DotProduct)・長さ(Size)・正規化(GetSafeNormal)・距離(FVector::Dist)があります。同じ計算をエンジン無しの C++ で書き、「プレイヤーの前方 60度以内・10m 以内にいる敵だけを見つける」判定を動かしました。前向きの単位ベクトルと、敵の方向の単位ベクトルの内積は、2つのなす角の cos になります。
// vec_math.cpp:FVector と同じ計算で、前方60度・10m以内の敵を判定する
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <initializer_list>
struct Vec { // UE5 の FVector は double(Large World Coordinates)
double X, Y, Z;
Vec operator-(const Vec& o) const { return {X - o.X, Y - o.Y, Z - o.Z}; }
double Size() const { return std::sqrt(X * X + Y * Y + Z * Z); }
Vec GetSafeNormal() const { double s = Size(); return s < 1e-8 ? Vec{0, 0, 0} : Vec{X / s, Y / s, Z / s}; }
static double DotProduct(const Vec& a, const Vec& b) { return a.X * b.X + a.Y * b.Y + a.Z * b.Z; }
static double Dist(const Vec& a, const Vec& b) { return (a - b).Size(); }
};
int main() {
const double kPi = 3.14159265358979323846;
const Vec Player{0, 0, 0};
const Vec Forward{1, 0, 0}; // UE は X が前、Z が上(左手系)
const double ViewHalfAngleDeg = 60.0, MaxDistCm = 1000.0; // 距離の単位は cm
const double CosLimit = std::cos(ViewHalfAngleDeg * kPi / 180.0);
struct { const char* name; Vec pos; } Enemies[] = {
{"A front", {500, 0, 0}}, {"B 45deg", {400, 400, 0}}, {"C side", {0, 500, 0}},
{"D behind", {-300, 0, 0}}, {"E far", {1500, 100, 0}}, {"F same", {0, 0, 0}},
};
std::printf("cos(60deg) = %.4f\n", CosLimit);
std::printf("%-9s %-9s %-8s %-8s %s\n", "enemy", "dist(cm)", "dot", "angle", "visible");
for (auto& e : Enemies) {
const Vec Dir = (e.pos - Player).GetSafeNormal();
const double Dot = Vec::DotProduct(Forward, Dir);
const double Dist = Vec::Dist(Player, e.pos);
const double Angle = std::acos(std::clamp(Dot, -1.0, 1.0)) * 180.0 / kPi;
const bool bVisible = Dist > 0.0 && Dist <= MaxDistCm && Dot >= CosLimit; // bool は b を付ける
std::printf("%-9s %-9.1f %-8.4f %-8.1f %s\n", e.name, Dist, Dot, Angle, bVisible ? "true" : "false");
}
// FMath::Clamp と同じ:体力を 0〜100 に収める
int Health = 100;
for (int Damage : {30, 50, 40}) { Health = std::clamp(Health - Damage, 0, 100); std::printf("damage %d -> Health %d\n", Damage, Health); }
}
cos(60deg) = 0.5000
enemy dist(cm) dot angle visible
A front 500.0 1.0000 0.0 true
B 45deg 565.7 0.7071 45.0 true
C side 500.0 0.0000 90.0 false
D behind 300.0 -1.0000 180.0 false
E far 1503.3 0.9978 3.8 false
F same 0.0 0.0000 90.0 false
damage 30 -> Health 70
damage 50 -> Health 20
damage 40 -> Health 0
内積が cos(60度)=0.5 以上なら前方60度以内です。 真横(C)は 0、真後ろ(D)は −1 でした。E は角度が3.8度でも 15m 先なので外れ、F のように同じ位置だと方向が決まらないので、GetSafeNormal は長さ0のベクトルを返します(距離0の判定で除外)。acos を毎回計算しなくても、内積と cos の値を比べるだけで判定できるので、毎フレーム多くの敵を調べるときに向いています。
UE5 の位置が double になった理由(float と double の精度)
UE5 では、Large World Coordinates(LWC)によって、位置などの基本のデータ型が 64 ビットの double になりました。 公式ドキュメントは、UE4 の 32 ビット float では世界の大きさが制限されていた、と説明しています。原点から離れた位置で、float と double が表せる最小の刻みを g++ で調べました(単位は UE の既定の cm)。
// lwc.cpp:原点から離れた位置で、float と double の「表せる最小の刻み」を比べる
#include <cmath>
#include <cstdio>
int main() {
struct { const char* label; double cm; } Points[] = {
{"1 m", 1e2}, {"1 km", 1e5}, {"10 km", 1e6}, {"20 km", 2e6}, {"100 km", 1e7}, {"1000 km", 1e8},
};
std::printf("%-8s %-14s %-16s %-14s\n", "distance", "float step(cm)", "double step(cm)", "float(x)+0.1cm");
for (auto& p : Points) {
const float f = static_cast<float>(p.cm);
const double fstep = static_cast<double>(std::nextafter(f, INFINITY)) - f;
const double dstep = std::nextafter(p.cm, INFINITY) - p.cm;
const float moved = f + 0.1f; // 0.1cm だけ動かす
std::printf("%-8s %-14g %-16g %-14g\n", p.label, fstep, dstep, static_cast<double>(moved) - f);
}
}
distance float step(cm) double step(cm) float(x)+0.1cm
1 m 7.62939e-06 1.42109e-14 0.0999985
1 km 0.0078125 1.45519e-11 0.101562
10 km 0.0625 1.16415e-10 0.125
20 km 0.125 2.32831e-10 0.125
100 km 1 1.86265e-09 0
1000 km 8 1.49012e-08 0
float では、原点から 100km 離れると 1cm 刻みでしか位置を表せず、0.1cm 動かしても位置が変わりませんでした(0 のまま)。 double では 1000km 先でも刻みは 1.5×10の−8乗 cm です。広いマップで物が震える・少しずつ動かせない、という問題を避けるために、UE5 では位置が double になっています。一方、公式ドキュメントによると、ブループリントの Float を float の引数の関数に渡すと精度が下がる場合があり、Niagara のパーティクルのデータは性能のために float のまま扱われます。
プロジェクトの設定ファイル(.uproject・Build.cs)
UE のプロジェクトの入口は .uproject という JSON のファイルです。UE 5.8 で公開されているサンプルプロジェクトと同じキーで、最小の形を作り、Python で読みました。
{
"FileVersion": 3,
"EngineAssociation": "5.8",
"Category": "",
"Description": "",
"Modules": [
{
"Name": "MyGame",
"Type": "Runtime",
"LoadingPhase": "Default"
}
],
"Plugins": [
{
"Name": "SignificanceManager",
"Enabled": true
}
]
}
keys: ['FileVersion', 'EngineAssociation', 'Category', 'Description', 'Modules', 'Plugins']
engine: 5.8
modules: [('MyGame', 'Runtime', 'Default')]
| キー | 意味 |
|---|---|
| EngineAssociation | 開くエンジンの版("5.8")。違う版で開くと変換を聞かれる |
| Modules | C++ のモジュール。Runtime はゲームに入るもの、Editor はエディタだけで使うもの |
| Plugins | 有効・無効にしたプラグイン |
C++ のモジュールでは、Source/<名前>/<名前>.Build.cs に使うエンジンのモジュールを書きます(C# の形式で、UnrealBuildTool が読みます)。
using UnrealBuildTool;
public class MyGame : ModuleRules
{
public MyGame(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput" });
}
}
C++ を書くための Visual Studio の準備(Windows)
公式ドキュメント「Setting Up Visual Studio」で、UE 5.8 向けに選ぶものです(2026年10月22日時点)。
| 種類 | 選ぶもの |
|---|---|
| Visual Studio の版 | 2022 の 17.14 以降、または 2026(18.0 以降)。リリースノートの推奨は 2026 |
| ワークロード | Game development with C++、Desktop development with C++、.NET desktop development、.NET Multi-platform App UI development |
| 個別のコンポーネント | C++ profiling tools、C++ AddressSanitizer、Windows 10 か 11 の SDK、Unreal Engine installer |
| MSVC | 最小 14.38、推奨 14.50 |
| Windows SDK | 最小 10.0.22621.0、推奨 10.0.26100 以降 |
Visual Studio のほかに、VS Code と Rider も使えます(公式)。Mac では Xcode を使います。C++ を書き換えたら、エディタを開いたまま Live Coding(Ctrl+Alt+F11) でビルドして反映できます。公式ドキュメントでは、コンストラクタの .cpp 側で既定値を変えても、すでにある物には反映されないことなどが注意点に挙がっています。
UE5のプロジェクトのフォルダとGitでの管理
この節では、プロジェクトのどのフォルダを残し、どれを消してもよいか、Git で管理するときの設定が分かります。
Content・Config・Source と .uproject がプロジェクトの本体で、Binaries・Intermediate・Saved・DerivedDataCache はエンジンが作り直せるものです。
| フォルダ・ファイル | 中身 | Git に入れるか |
|---|---|---|
Content/ |
アセット(.uasset)とレベル(.umap) | 入れる(Git LFS) |
Config/ |
DefaultEngine.ini などの設定 | 入れる |
Source/ |
C++ のコード・Build.cs・Target.cs | 入れる |
<名前>.uproject |
プロジェクトの定義 | 入れる |
Binaries/ |
ビルドした DLL など | 入れない |
Intermediate/ |
ビルドの途中のファイル | 入れない |
Saved/ |
ログ・自動保存・ローカルの設定 | 入れない |
DerivedDataCache/ |
派生データ(作り直せるキャッシュ) | 入れない |
.vs/・*.sln |
Visual Studio が作るファイル | 入れない |
公式ドキュメントでは、派生データ(DDC)は .uasset から作り直せるので、使い捨てのデータとして扱われ、ソース管理には入れません。UE 5.4 以降、ローカルの DDC は Unreal Zen Store になり、Windows の既定の場所は C:\ProgramData\Epic\Zen\Data\ です。
この形のプロジェクトを作り、.gitignore と .gitattributes(Git LFS)を置いて確かめました。
# .gitignore
Binaries/
Intermediate/
Saved/
DerivedDataCache/
.vs/
.idea/
*.sln
*.VC.db
# .gitattributes
*.uasset filter=lfs diff=lfs merge=lfs -text
*.umap filter=lfs diff=lfs merge=lfs -text
git add -A && git status --short
git check-ignore -v Binaries/Win64/UnrealEditor-MyGame.dll Intermediate/Build/x.obj Saved/Logs/MyGame.log DerivedDataCache/Compressed.ddp MyGame.sln .vs/x
git check-attr filter -- Content/Maps/Lvl_Main.umap Content/Blueprints/BP_LaunchPad.uasset Source/MyGame/FloatingActor.cpp
A .gitattributes
A .gitignore
A Config/DefaultEngine.ini
A Content/Blueprints/BP_LaunchPad.uasset
A Content/Maps/Lvl_Main.umap
A MyGame.uproject
A Source/MyGame.Target.cs
A Source/MyGame/FloatingActor.cpp
A Source/MyGame/FloatingActor.h
A Source/MyGame/MyGame.Build.cs
.gitignore:2:Binaries/ Binaries/Win64/UnrealEditor-MyGame.dll
.gitignore:3:Intermediate/ Intermediate/Build/x.obj
.gitignore:4:Saved/ Saved/Logs/MyGame.log
.gitignore:5:DerivedDataCache/ DerivedDataCache/Compressed.ddp
.gitignore:9:*.sln MyGame.sln
.gitignore:7:.vs/ .vs/x
Content/Maps/Lvl_Main.umap: filter: lfs
Content/Blueprints/BP_LaunchPad.uasset: filter: lfs
Source/MyGame/FloatingActor.cpp: filter: unspecified
ステージされたのは Content・Config・Source・.uproject だけで、作り直せる6種類は .gitignore のどの行で除外されたかまで表示されました。 .uasset と .umap はバイナリなので、Git LFS(ここでは git-lfs 3.4.1)の対象にしています。.gitignore の書き方の詳細は関連記事「.gitignoreの書き方一覧 パターン早見表と効かないときの確認手順」で、チームでのブランチの分け方は関連記事「Gitのブランチ戦略|Git Flow・GitHub Flowの違いと選び方」で扱っています。
ゲームとして書き出す(パッケージ化)
この節では、作ったものをエディタ無しで動くゲームとして書き出す方法が分かります。
Windows 向けには、メインツールバーの「Platforms」→「Windows」→「Package Project」で書き出し、保存先のフォルダを選びます。 公式ドキュメント「Packaging Your Project」の手順です。書き出しの設定(ビルド構成)は「Project Settings」→「Packaging」の「Build Configuration」で選びます。
| ビルド構成 | 内容 | 使う場面 |
|---|---|---|
| Debug | エンジンとプロジェクトを最適化なしでビルド | エンジンも含めたデバッグ |
| DebugGame | プロジェクトのコードだけ最適化なし(ブループリントだけのプロジェクトでは選べない) | 自分の C++ のデバッグ |
| Development | 時間のかかる最適化以外を有効(既定) | 開発中の確認 |
| Test | すべての最適化を有効にし、コンソールコマンド・統計・プロファイラーを残す | 社内のテスト |
| Shipping | すべての最適化を有効にし、コンソールコマンド・統計・プロファイラーを外す | 配布 |
配布するときは Shipping を選びます。アセットは既定で Pak という形式の書庫にまとめられます。
UE5でよくあるエラーと直し方(起動しない・シェーダー・容量不足)
この節では、UE5 を使い始めたときによく出る問題の原因と直し方を引けます。
| 症状・エラー | 原因 | 直し方 |
|---|---|---|
| Launcher からエンジンをダウンロードできない | サインインしていない(「sign in later」を選んだ) | Epic Games のアカウントでサインインする |
| エディタが起動しない・起動直後に落ちる | GPU のドライバが更新されていない、DirectX 12・SM6 に対応しない GPU | ドライバを更新する。Project Settings の「Default RHI」を DirectX 11 にする |
GPU crashed or D3D device removed |
GPU の処理が止まった(負荷・ドライバ) | ドライバを更新し、エディタの表示品質(Scalability)を下げる、他のアプリを閉じる |
| Video Memory Has Been Exhausted(ビデオメモリ不足) | VRAM が足りない | 品質を下げる、Quality Preset を Scalable にする、解像度を下げる、他のアプリを閉じる |
| 「Compiling Shaders」の数がなかなか減らない | 初めて開くとき・設定を変えたときにシェーダーをコンパイルしている | 終わるまで待つ。結果は DDC に残り、次回からは速くなる |
| 毎回シェーダーのコンパイルからやり直しになる | DDC を消している・保存先の容量が足りない | DDC(Zen の場所)を消さない。チームなら共有 DDC を設定する |
| ディスクの容量が足りない | エンジンの版を複数入れている、Intermediate・Saved・DDC が大きい | 使わない版を Launcher から外す。Intermediate・Saved は消しても作り直される |
The following modules are missing or built with a different engine version: |
C++ のプロジェクトのモジュールが無い・別の版でビルドされた | 「Yes」で再ビルドする。Visual Studio とワークロードを入れる |
… could not be compiled. Try rebuilding from source manually. |
上の再ビルドに失敗(開発ツールが無い、ウイルス対策がファイルを消す) | Visual Studio から直接ビルドしてエラーを読む。ウイルス対策の除外にプロジェクトとエンジンのフォルダを入れる |
| Lumen が効かない・暗い | GPU が対象外、SM6 が無効、UE4 から変換したプロジェクト | 必要スペックの節の GPU を確かめる。Project Settings で Lumen を選ぶ |
シェーダーのコンパイルが遅いとき
シェーダーのコンパイルは、マテリアルを今の GPU と RHI で描けるようにする処理で、最初に開くときに多く走ります。 公式ドキュメントでは、マテリアルを描く前にエディタが動いているプラットフォーム向けにシェーダーをコンパイルし、その結果を派生データ(DDC)として保存すると説明しています。2回目からは DDC から読むので、同じ設定なら待ち時間が短くなります。
- DDC を消さない:UE 5.4 以降のローカルの DDC は
C:\ProgramData\Epic\Zen\Data\(Windows の既定)。容量が苦しいときも、まずは使わないエンジンの版やプロジェクトの Saved・Intermediate から消す。 - チームで共有する:共有 DDC(ネットワークのドライブ)を、DefaultEngine.ini、環境変数
UE-SharedDataCachePath、エディタの環境設定(General → Global → Derived Data Cache の「Global Shared DDC Path」)のどれかで指定すると、誰か1人が作った派生データを他の人も使える。 - SSD とコア数:コンパイルは CPU の複数のコアで並べて行われるので、コアの多い CPU と速い SSD ほど早く終わる。
起動しないとき:DirectX 11 で開く
公式ドキュメント「Windows Settings」の「Default RHI」では、Default・DirectX 11・DirectX 12・Vulkan を選べます。変えた後はエディタの再起動が要り、選んだ RHI が「Targeted RHIs」でも有効になっている必要があります。DirectX 11 にすると、Lumen・Nanite など DirectX 12 と SM6 が前提の機能は使えなくなるので、原因を絞るための手段として使います。
UE5とUnity・Godotの違い(事実の比較)
この節では、よく比べられる3つのゲームエンジンの違いを、各公式ページの事実で比べられます。
大きな違いは、書く言語、料金の仕組み、ライセンスです。 2026年10月22日時点の各公式ページの内容です。
| 項目 | Unreal Engine 5 | Unity | Godot |
|---|---|---|---|
| 提供元 | Epic Games | Unity Technologies | オープンソースのコミュニティ |
| 最新版 | 5.8(ホットフィックス 5.8.4) | Unity 6 系 | 4.7.2(2026年8月18日) |
| 書く言語 | C++・ブループリント(Python はエディタの自動化だけ) | C# | GDScript・C#(.NET 版)・C++(GDExtension) |
| 無料の範囲 | 全機能が無料。収益の条件で支払い | Personal は無料(ゲーム・エンターテインメント用途) | すべて無料 |
| 有料の条件 | ゲームは製品の総収益100万ドル超の分に5%。ゲーム以外は年1,850ドル/シート | Pro は資金・年間収益が20万ドルを超える事業者に必要(年2,310ドル〜)。2,500万ドル超は Enterprise | 無し(MIT ライセンス。著作権表示とライセンス文を同梱) |
Unity は 2024年9月に、インストール数に応じた「Runtime Fee」を取りやめると公式ブログで発表しています。Godot のライセンスページでは、Godot で作ったゲームなどの中身には Godot のライセンスは及ばず、自由にライセンスを決められるとしています。
| 状況 | 候補になりやすいもの(目安) |
|---|---|
| 写真に近い 3D・広いオープンワールドを作りたい | Unreal Engine 5(Nanite・Lumen・World Partition) |
| C# で書きたい・スマホのゲームを多く作っている | Unity |
| 軽いエディタで 2D を作りたい・ロイヤリティの無いオープンソースがよい | Godot |
| C++ の経験を活かしたい | Unreal Engine 5 |
| プログラムを書かずに試作したい | Unreal Engine 5(ブループリント) |
Unity の C# でクラスを書く基本は、関連記事「C#クラスとプロパティの書き方|get・set・initとrecordまで」で、Actor・Component のようなクラスの考え方の土台は、関連記事「オブジェクト指向とは?コードでわかる基本と使いどころ」で扱っています。
よくある質問
Q. UE5の読み方は? A. 「ユーイーファイブ」「アンリアルエンジン ファイブ」と読みます。Unreal Engine 5 の略です。
Q. UE5は無料で使えますか?商用利用はできますか? A. 無料でダウンロードして全機能を使え、商用利用もできます。ゲームは製品の生涯総収益が100万ドルを超えた分に5%(Epic Games Store で同時か先に出すと3.5%)、ゲーム以外の商用利用は会社の年間総収益が100万ドルを超えると1シート年額1,850ドルです(2026年10月22日時点)。
Q. UE5の最新バージョンは? A. 2026年10月22日時点で 5.8 です。2026年6月17日に公開され、ホットフィックスは 5.8.4 まで出ています。UE6 は2027年末の早期アクセスが目標と発表されています。
Q. UE5の推奨スペックは?ノートPCでも動きますか? A. 公式の推奨は Windows 11・クアッドコア 2.5GHz 以上・メモリ 32GB・VRAM 8GB 以上・DirectX 12 対応の GPU です。ノートPCでもこの条件を満たせば使えます。Lumen を使うなら NVIDIA RTX-2000・AMD RX-6000・Intel Arc A 以降の GPU が条件です。
Q. UE5はMacで使えますか? A. 使えます。推奨は Apple シリコン M3・メモリ 32GB 以上で、エンジンの実行には macOS Sonoma 14.5 以上が要ります。Nanite は M2 以降でベータ、Lumen のソフトウェアレイトレーシングは M1 以降で使えます(公式の macOS の要件)。
Q. UE5のインストールに必要な容量は? A. 公式ドキュメントは数値を示していません。Epic Games Launcher のインストールの「Options」画面に、選んだ部品に必要な容量が表示されます。版ごと、プロジェクトごとに容量が増えるので、余裕のある SSD に入れます。
Q. UE5はC++を書けないと使えませんか? A. ブループリントだけでゲームを作れます。公式は、C++ を土台にしてブループリントを上に作る組み合わせを勧めていて、プロジェクトの作成後に C++ のクラスを足すこともできます。
Q. UE5でPythonは使えますか? A. エディタの自動化(アセットの一括処理など)に使えます。Python Editor Script Plugin を有効にすると、Python 3.11.8 が使えます。公式ドキュメントでは、ゲームの実行中の処理(ゲームプレイ)を Python で書くことはできないとされています。
Q. UE5を日本語にするには? A. エディタの環境設定(Editor Preferences)の「Region & Language」で言語を日本語にします。公式ドキュメントは日本語版もありますが、英語の画面の名前で書かれた解説も多いので、英語の名前も一緒に覚えると調べやすくなります。
Q. UE5とUnityはどちらがよいですか? A. 作りたいものと書きたい言語で決まります。写真に近い 3D や C++ なら UE5、C# で書きたいなら Unity が候補になります。料金の仕組みも違い、UE5 は収益に応じたロイヤリティ、Unity は収益・資金の額でプランが決まります(違い表の節)。
Q. UE5のシェーダーのコンパイルが遅いのはなぜですか? A. 最初にプロジェクトを開いたときや設定を変えたときに、マテリアルをその GPU 向けにコンパイルしているためです。結果は派生データのキャッシュ(DDC)に保存され、次回からは速くなります。DDC を消すと、またコンパイルからやり直しになります。
まとめ
- UE5(Unreal Engine 5)は Epic Games のゲームエンジン。2026年10月22日時点の最新版は 5.8(ホットフィックス 5.8.4)。UE6 は2027年末の早期アクセスが目標。
- 無料で全機能を使える。ゲームは製品の総収益が100万ドルを超えた分に5%、Epic Games Store で同時か先に出すと3.5%。ゲーム以外の商用は年間総収益100万ドル超の会社で1シート年額1,850ドル。
- 推奨スペックは Windows 11・4コア 2.5GHz・メモリ 32GB・VRAM 8GB。Lumen は RTX-2000・RX-6000・Arc A 以降。
- インストールは Epic Games Launcher の「Unreal Engine」→「Library」→「+」。最初は Third Person テンプレートを Blueprint で。
- 動きはブループリントで作れる。C++ は C++20 で、UCLASS・UPROPERTY・UFUNCTION でエディタに見せる。移動には DeltaTime を掛ける(30fps と 240fps で8倍の差が出た)。
- Content・Config・Source・.uproject を Git に入れ、Binaries・Intermediate・Saved・DerivedDataCache は入れない。
- シェーダーのコンパイルの結果は DDC に残る。消さずに、チームなら共有 DDC を使う。
参考・出典
確認日はいずれも 2026年10月22日です。
- Epic Games「Unreal Engine 5.8 Release Notes」:https://dev.epicgames.com/documentation/unreal-engine/unreal-engine-5-8-release-notes
- Epic Games「Hardware and Software Specifications for Unreal Engine」:https://dev.epicgames.com/documentation/unreal-engine/hardware-and-software-specifications-for-unreal-engine
- Epic Games「macOS Development Requirements for Unreal Engine」:https://dev.epicgames.com/documentation/unreal-engine/macos-development-requirements-for-unreal-engine
- Epic Games「Linux Development Requirements for Unreal Engine」:https://dev.epicgames.com/documentation/unreal-engine/linux-development-requirements-for-unreal-engine
- Epic Games「Installing Unreal Engine」:https://dev.epicgames.com/documentation/en-us/unreal-engine/install-unreal-engine
- Epic Games「Creating a New Project」:https://dev.epicgames.com/documentation/en-us/unreal-engine/creating-a-new-project-in-unreal-engine
- Epic Games「Updated game templates for Unreal Engine 5.6 available now」:https://www.unrealengine.com/en-US/news/updated-game-templates-for-unreal-engine-5-6available-now
- Epic Games「Unreal Editor Interface」:https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-editor-interface
- Epic Games「Viewport Controls」:https://dev.epicgames.com/documentation/en-us/unreal-engine/viewport-controls-in-unreal-engine
- Epic Games「Coding in Unreal Engine: Blueprint vs. C++」:https://dev.epicgames.com/documentation/en-us/unreal-engine/coding-in-unreal-engine-blueprint-vs-cplusplus
- Epic Games「Blueprints Visual Scripting」:https://dev.epicgames.com/documentation/en-us/unreal-engine/blueprints-visual-scripting-in-unreal-engine
- Epic Games「Blueprints Quick Start Guide」:https://dev.epicgames.com/documentation/en-us/unreal-engine/quick-start-guide-for-blueprints-visual-scripting-in-unreal-engine
- Epic Games「Programming Quick Start」:https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-cpp-quick-start
- Epic Games「Epic C++ Coding Standard」:https://dev.epicgames.com/documentation/en-us/unreal-engine/epic-cplusplus-coding-standard-for-unreal-engine
- Epic Games「Property Specifiers」:https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-engine-uproperties
- Epic Games「UFunctions」:https://dev.epicgames.com/documentation/en-us/unreal-engine/ufunctions-in-unreal-engine
- Epic Games「Using Live Coding」:https://dev.epicgames.com/documentation/en-us/unreal-engine/using-live-coding-to-recompile-unreal-engine-applications-at-runtime
- Epic Games「Setting Up Visual Studio for Unreal Engine」:https://dev.epicgames.com/documentation/en-us/unreal-engine/setting-up-visual-studio-development-environment-for-cplusplus-projects-in-unreal-engine
- Epic Games「Large World Coordinates」:https://dev.epicgames.com/documentation/en-us/unreal-engine/large-world-coordinates-in-unreal-engine-5
- Epic Games「Coordinate System and Spaces」:https://dev.epicgames.com/documentation/en-us/unreal-engine/coordinate-system-and-spaces-in-unreal-engine
- Epic Games「Units of Measurement」:https://dev.epicgames.com/documentation/en-us/unreal-engine/units-of-measurement-in-unreal-engine
- Epic Games「Nanite Virtualized Geometry」:https://dev.epicgames.com/documentation/en-us/unreal-engine/nanite-virtualized-geometry-in-unreal-engine
- Epic Games「Lumen Global Illumination and Reflections」:https://dev.epicgames.com/documentation/ja-jp/unreal-engine/lumen-global-illumination-and-reflections-in-unreal-engine
- Epic Games「World Partition」:https://dev.epicgames.com/documentation/en-us/unreal-engine/world-partition-in-unreal-engine
- Epic Games「Using Derived Data Cache」:https://dev.epicgames.com/documentation/en-us/unreal-engine/using-derived-data-cache-in-unreal-engine
- Epic Games「Windows Settings(プロジェクト設定)」:https://dev.epicgames.com/documentation/ja-jp/unreal-engine/windows-settings-in-the-unreal-engine-project-settings
- Epic Games「Packaging Your Project」:https://dev.epicgames.com/documentation/en-us/unreal-engine/packaging-your-project
- Epic Games「Scripting the Unreal Editor Using Python」:https://dev.epicgames.com/documentation/en-us/unreal-engine/scripting-the-unreal-editor-using-python
- Epic Games「MetaHuman Documentation」:https://dev.epicgames.com/documentation/en-us/metahuman/metahuman-documentation
- Epic Games「ライセンス」:https://www.unrealengine.com/ja/license
- Epic Games「Catch up on the big news from Unreal Fest Seattle 2024」(Launch Everywhere with Epic):https://www.unrealengine.com/en-US/blog/catch-up-on-the-big-news-from-unreal-fest-seattle-2024
- MetaHuman「License」:https://www.metahuman.com/en-US/license
- Epic Developer Community フォーラム「hotfix」タグ(5.8.1〜5.8.4 の告知):https://forums.unrealengine.com/tag/hotfix/11407
- Epic Developer Community フォーラム「The following modules are missing or built with a different engine version with a new project」:https://forums.unrealengine.com/t/the-following-modules-are-missing-or-built-with-a-different-engine-version-with-a-new-project/343391
- Epic Developer Community フォーラム「GPU crashed or D3D device removed error」:https://forums.unrealengine.com/t/gpu-crashed-or-d3d-device-removed-error/649717
- Epic Developer Community フォーラム「Unreal Engine 5: How To Fix "Video Memory Has Been Exhausted"」:https://forums.unrealengine.com/t/community-tutorial-unreal-engine-5-how-to-fix-video-memory-has-been-exhausted-temporary-fix-for-development/610664
- Epic Games ジャパン(PR TIMES 経由、inside-games 掲載)「State of Unreal 2026」の発表:https://www.inside-games.jp/release/prtimes/20260623/292852.html
- GameFromScratch「Unreal Engine 5.8 Released」:https://gamefromscratch.com/unreal-engine-5-8-released/
- tomlooman/ActionRoguelike(UE 5.8 の公開サンプルプロジェクト、GitHub):https://github.com/tomlooman/ActionRoguelike
- Wikipedia「Unreal Engine」:https://ja.wikipedia.org/wiki/Unreal_Engine
- Unity「Compare plans」:https://unity.com/products/compare-plans
- Unity「A message to our community: Unity is canceling the Runtime Fee」:https://unity.com/blog/unity-is-canceling-the-runtime-fee
- Godot Engine「License」:https://godotengine.org/license/
- Godot Engine「Download for Windows」:https://godotengine.org/download/windows/
- Godot Engine ドキュメント「Frequently asked questions」:https://docs.godotengine.org/en/stable/about/faq.html
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「UE5(Unreal Engine 5)とは|始め方・必要スペック・料金を解説」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。