ゲーム開発で使う言語は、先にエンジンを決めればほぼ自動的に決まります。UnityならC#、Unreal EngineならC++とBlueprint、GodotならGDScript、ブラウザならJavaScriptかTypeScriptです。本記事では、主要エンジンと言語の対応表、同じ移動処理を3つの言語で書いたコード、GodotのC#がWebに書き出せないといった選定後に詰まる制約、ライセンスの費用条件までを、2026年10月25日時点の公式ドキュメントをもとに整理します。最後に、配信先とチームの経験からどの言語を選ぶかを条件付きで言い切ります。
まとめ:ゲーム開発の言語はエンジンから逆算し、迷ったらUnityのC#
言語を先に選ぶと順番を誤ります。ゲームの配信先と表現からエンジンを決め、そのエンジンの標準言語を使うのが実務の進め方です。スマホと PC の2D・3DならUnityのC#、コンソール向けの高精細な3DならUnreal EngineのC++、ライセンス費用を避けたい小規模の2DならGodotのGDScript、ブラウザで遊ばせるならPhaserとTypeScriptを選びます。
迷ったときの初手はUnityのC#です。対応プラットフォームが広く、C#は業務システムやWebのバックエンドでも使われるため、採用と引き継ぎで困りにくい言語です。逆に、エンジンを使わずC++で一から書くことと、Pythonで製品版を出すことは、学習や試作の目的でない限り勧めません。
ゲーム開発の言語とエンジンの対応表:C#・C++・GDScript・JavaScript
最初に、主要なエンジンとフレームワークがどの言語で書くものかを一覧にします。ここで押さえるのは、言語ごとの優劣ではなく「エンジンが言語を決める」という関係です。
Unity・Unreal・Godot・Phaserの言語とライセンスを1表で比較
4つのエンジンの言語と費用の条件は次のとおりです。版はいずれも2026年10月25日時点で、各公式サイトから取得しました。
| エンジン | 主な言語 | 現行の版 | 費用の条件 | 主な配信先 |
|---|---|---|---|---|
| Unity | C# | 6.3 LTS(6000.3) | 過去12か月の収益等20万米ドル未満は無料 | スマホ・PC・コンソール・Web |
| Unreal Engine | C++・Blueprint | 5.8 | 製品の生涯総収益100万米ドル超の部分に5% | PC・コンソール・スマホ |
| Godot | GDScript・C#・C++ | 4.7.2 | MITライセンスで無料 | PC・スマホ・Web(C#はWeb不可) |
| Phaser | JavaScript・TypeScript | 4.2.1 | MITライセンスで無料 | ブラウザ |
Godotが扱う言語はGodotの公式ドキュメント「Scripting languages」にある通り、GDScript、C#、GDExtension経由のCとC++の4つです。Unreal Engineの費用はUnreal Engineのライセンスページ、GodotはGodotのライセンスページで確認できます。Phaserの最新版はPhaserのGitHubリポジトリのリリース欄で、2026年7月9日公開のv4.2.1です。
エンジンを使わずC++やPython・Rustで書く選択肢と向く用途
エンジンを使わず、ライブラリを組み合わせて書く方法もあります。用途は学習、試作、特定の表現への特化に分かれます。
- C++とDXライブラリ:Windows向けの2Dを、描画と入力の関数だけで組めます。入門書が多く、DXライブラリの導入と使い方で手順をまとめています。
- Pythonとpygame-ce:数十行で画面に絵を出せるため、授業や企画の試作に向きます。版と移行の判断はpygame-ceとpygameの違いを参照してください。
- RustとBevy:ECS(エンティティ・コンポーネント・システム)で書く設計を、エンジン側が前提にしています。仕組みはBevy ECSの書き方を0.20で検証した記事にあります。
どれもエディタ、アセット管理、各ストア向けの書き出しといった周辺の仕組みを自分で用意する必要があります。製品として出す前提なら、先に確かめるべきなのは、この手間を払う理由があるかです。理由が「言語に慣れているから」だけなら、エンジンを使う方が早く出せます。
同じ移動処理を3言語で比較:Unity C#・Godot GDScript・Phaser
言語の違いは、同じ処理を書き比べると分かります。ここでは「左右の矢印キーで物体を横に動かす」処理を、Unity、Godot、Phaserの3つで書きます。どれもフレームごとに入力を読み、経過時間を掛けて位置を動かす同じ構造です。
Unity 6.3 LTSのC#スクリプトで矢印キー移動を作る手順
Unityでは、MonoBehaviourを継承したクラスを作り、GameObjectに付けます。Unity 6の新規プロジェクトではInput Systemパッケージが入っているため、キーボードはKeyboard.currentから読みます。
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerMover : MonoBehaviour
{
[SerializeField] float speed = 5f;
void Update()
{
var kb = Keyboard.current;
if (kb == null) return;
float h = (kb.rightArrowKey.isPressed ? 1f : 0f)
- (kb.leftArrowKey.isPressed ? 1f : 0f);
transform.Translate(h * speed * Time.deltaTime, 0f, 0f);
}
}
ファイル名とクラス名をPlayerMoverでそろえ、Cubeなどに付けて再生すると動きます。[SerializeField]を付けたspeedはインスペクターから変えられるので、調整のたびにコードを書き換えずに済むのが利点です。6.3 LTSのサポート期限と変更点はUnity 6.3 LTSの新機能と変更点で整理しています。
Godot 4.7のGDScriptで同じ処理を書いたときの記述量の差
Godotでは、ノードにスクリプトを付けます。ui_leftとui_rightは既定で用意された入力アクションなので、キーの設定をせずに使えます。
extends Node2D
@export var speed: float = 300.0
func _process(delta: float) -> void:
var h := Input.get_axis("ui_left", "ui_right")
position.x += h * speed * delta
C#版の約半分の行数です。Input.get_axisが左右2つのアクションを-1から1の値にまとめて返すため、条件式が要りません。GDScriptはPythonに近いインデントの文法で、エディタに組み込まれているので保存して再生するまでの待ちがほとんどありません。導入手順はGodotのインストール方法(4.7.2対応)を参照してください。
Phaser 4のJavaScriptでブラウザ上に同じ動きを作るコード
Phaserでは、Phaser.Sceneを継承したクラスのupdateに毎フレームの処理を書きます。HTMLからPhaserを読み込んだうえで、次のコードを実行します。
class Main extends Phaser.Scene {
create() {
this.box = this.add.rectangle(400, 300, 40, 40, 0x44aaff);
this.cursors = this.input.keyboard.createCursorKeys();
}
update(time, delta) {
const h = (this.cursors.right.isDown ? 1 : 0)
- (this.cursors.left.isDown ? 1 : 0);
this.box.x += h * 0.3 * delta;
}
}
new Phaser.Game({ type: Phaser.AUTO, width: 800, height: 600, scene: Main });
PhaserはJavaScriptのまま書けるうえ、型定義が付属するのでTypeScriptでも書けます。deltaはミリ秒なので、速度の指定は1ミリ秒あたりの移動量(ここでは0.3ピクセル)です。シーンや物理エンジンの使い方はPhaser.jsの使い方(Phaser 4対応)にまとめています。
Godotの書き出しをコマンドラインで自動化するexport-releaseの使い方
エンジンを決めたら、ビルドをコマンドで再現できるかも確かめます。Godotは公式のコマンドラインのチュートリアルにある--export-releaseで、エディタを開かずに書き出せます。
# 書き出しテンプレートを導入し、エディタで「Web」という名前のプリセットを作っておく
godot --headless --path ./my_game --export-release "Web" build/web/index.html
プリセット名はexport_presets.cfgに書かれた名前と一致させます。--headlessは画面を出さずに動かすオプションで、GitHub ActionsのようなCI上でも同じコマンドで動かせるのが利点です。手作業の書き出しは担当者の環境によって結果が変わるため、配信先が2つ以上あるならこの形にそろえておきます。
言語選びで詰まる箇所:ビルド先・実行方式・ライセンスの制約を確認
言語とエンジンを決めた後で、配信先に出せない、審査や移植で作り直しになる、といった問題が見つかることがあります。選定の段階で確かめておくべき制約を4つ挙げます。
GodotのC#はWebに書き出せない:ブラウザ配信ならGDScript
最も見落とされやすい制約です。Godotの公式ドキュメント「C# basics」は、Godot 4のC#プロジェクトはWebプラットフォームに書き出せないと明記しています。AndroidとiOSは4.2から対応したものの、どちらも実験的な扱いです。
C#を使うには、標準版ではなく.NET版のエディタが必要です。公式ドキュメントの記載では、Godot 4.5は.NET 8以降、Androidへの書き出しには.NET 9以降が必要です。ブラウザで遊ばせる可能性が少しでもあるなら、C#に慣れたチームでもGDScriptで書きます。後からWeb版を出すことになると、スクリプトを全部書き直すことになるためです。
UnityのMonoとIL2CPPの違いとiOS・コンソールでIL2CPPが必須な理由
UnityのC#は、ビルド先によって実行方式が変わります。Unityのスクリプトバックエンドの解説によると、Monoは実行時にコンパイルするJIT方式、IL2CPPはC#をIL、C++の順に変換してからネイティブコードにするAOT方式です。
IL2CPPは全プラットフォームに対応し、iOSと大半のコンソールでは必須です。Monoが使える範囲はWindows・macOS・Linuxの一部とAndroid Armv7だけです。開発中のエディタはMonoで動くため、実行時に型を作るリフレクションのようなコードが、iOS版のビルドで初めて動かないと分かることがあります。iOSに出すなら、早い段階からIL2CPPで実機ビルドを回します。
UnrealのC++とBlueprintの分担とコンパイル待ちの負担
Unreal Engineは、C++とBlueprintを併用する前提のエンジンです。EpicのBlueprintの解説は、Blueprintをノードをつなぐ形のゲームプレイ用スクリプトと説明しています。C++側で基盤となる仕組みを作り、デザイナーがBlueprintで拡張する分担です。
実務での負担はC++側に集まります。EpicのC++プログラミングの解説にある通り、C++のコードはVisual StudioかXcodeでコンパイルしてからエディタに反映されます。全部をC++で書くと、調整のたびにコンパイルを待つことになり、作業が止まりがちです。性能が要る処理と共通の仕組みだけをC++にし、ゲームの流れや演出はBlueprintに任せるのが標準の進め方です。
Unreal Engine:5%使用料・Unity Personal:20万ドル上限
エンジンの費用は、言語の選定と一緒に決まります。Unreal Engineは、ゲームのようにエンジンのコードを含めて配る製品について、製品の生涯総収益のうち100万米ドルを超えた部分に5%のロイヤリティがかかります。最初の100万米ドルまでは不要です。
UnityはUnity Personalのページにある通り、過去12か月の収益と調達額の合計が20万米ドル未満なら無料のPersonalを使えます。これを超えるとProなどの有料プランが必要です。2023年に発表された、インストール数に応じたRuntime Feeは、Unityの2024年9月の発表でゲーム向けには取り消されています。GodotとPhaserはMITライセンスで、売上による費用は発生しません。
ゲーム開発の言語を決める判断基準:配信先・チームの経験・売上規模
ここまでの制約を踏まえて、どの言語を選ぶかを決めます。判断の順番は、配信先、チームの経験、売上規模です。
配信先と表現から選ぶ:スマホ・PC・コンソール・ブラウザ別の結論
配信先ごとの結論は次のとおりです。
- スマホ(iOS・Android)の2D・3D:UnityのC#を選びます。両OSに同じコードで出せ、IL2CPPでiOSの要件も満たせます。
- PC・コンソールの高精細な3D:Unreal EngineのC++とBlueprintを選びます。売上が100万米ドルを超えたときの5%を、事業計画に入れておきます。
- ブラウザで遊ばせるゲーム、キャンペーンや広告用のミニゲーム:PhaserとTypeScriptを選びます。ストアの審査が無く、URLを開くだけで遊べます。
- 小規模の2Dで、ライセンス費用を将来も払いたくない:GodotのGDScriptを選びます。
Unityでもブラウザ向けに書き出せますが、読み込むデータが大きくなりやすく、広告からの流入で最初の画面までに時間がかかります。手順と注意点はWebGLの仕組みとUnity WebGLビルドの手順で解説しています。ブラウザが主な配信先なら、最初からPhaserで作る方が軽く仕上がるため有利です。
既存エンジニアの経験から選ぶ:Web系はTypeScript、業務系はC#
配信先で候補が2つ残ったら、チームの経験で決めます。Webのフロントエンドを書いてきたチームならTypeScriptとPhaser、.NETで業務システムを書いてきたチームならC#とUnityです。言語の文法を学び直す期間がほぼ要らず、テストやコードレビューの習慣もそのまま持ち込めます。
ゲームではないアプリと言語を共有したい場合は、アプリ側の言語も同時に決める対象です。iOS・Android・クロスプラットフォームの言語の分け方はアプリ開発の言語選定(Swift・Kotlin・Dart)で整理しています。C++の経験者が社内にいない場合、Unreal EngineのC++を新しく覚えて製品を出すのは負担が大きく、Blueprint中心で始めるか、Unityを選び直します。
採用しない場面:自作エンジンのC++とPythonでの製品リリース
次の2つは、学習や試作でない限り選びません。
1つ目はエンジンを使わずC++で一から作ることです。描画、音、入力、各ストア向けの書き出しを自前で作ることになり、ゲームの中身を作る前に何か月もかかります。既存のエンジンで実現できない表現や、特定の機器に合わせた性能が要件にある場合だけ検討します。その場合でも、GodotのGDExtensionのように、エンジンの一部だけをC++で書く方法が先の候補です。
2つ目はPythonで製品版を出すことです。pygame-ceは試作には速い反面、スマホのストアへ出す仕組みや、コンソールへの移植の経路がエンジンほど整っていません。Pythonはゲーム本体ではなく、レベルデータの変換やビルドの自動化など、周辺ツールの言語として使うのが向いています。
ゲーム開発を外注するときに発注側が決めておく言語とエンジンの範囲
外注する場合も、配信先と保守の担い手は発注側で決めておきます。リリース後に社内で改修するならチームが読める言語とエンジン、運用まで外注するなら開発会社の得意なエンジンを優先する、という分け方です。言語やエンジンを決めずに見積もりを取ると、会社ごとに前提が違い、金額を比べられません。
一創のゲームアプリ開発では、配信先と予算からエンジンを選ぶ段階から相談を受けています。開発会社の選び方、費用相場、内製と外注の分け方は、発注者向けのゲーム開発会社の選び方と費用相場にまとめました。
ゲーム開発の言語に関するよくある質問:初心者・スマホ・Python
ゲーム開発の言語について、よく寄せられる質問に答えます。
ゲーム開発の初心者はどの言語から始めればよいですか?
作りたいゲームの配信先で決めます。スマホやPCのゲームを作りたいならUnityのC#、まず短い期間で1本作り切りたいならGodotのGDScriptです。Godotの公式ドキュメントも、初心者にはGDScriptから始めるよう勧めています。ブラウザで動くゲームを作りたい人や、Webサイトを作った経験がある人はPhaserのJavaScriptから始めると、開発環境の準備がほとんど要りません。
C#とC++はどちらがゲーム開発に向いていますか?
使うエンジンで決まるため、言語同士を比べる意味は大きくありません。UnityならC#、Unreal EngineならC++です。C#はメモリの解放をランタイムに任せられるため、書き始めの負担が軽い言語です。C++はメモリを自分で管理する分だけ性能を引き出しやすく、Unreal Engineやコンソール向けの大規模タイトルで使われます。1人や少人数で最初の1本を作るならC#を選びます。
Pythonでゲームは作れますか?
作れます。pygame-ceを使えば、2Dのゲームを数十行から書けます。ただし、スマホのストアやコンソールに出す製品には向きません。書き出しの仕組みがエンジンほど整っていないためです。Pythonは、試作や授業、ゲーム開発の周辺ツール(データの変換やビルドの自動化)に使い、製品はUnityやGodotで作る分け方を勧めます。
スマホゲームの開発にはどの言語を使いますか?
多くはUnityのC#です。iOSとAndroidに同じコードで出せ、iOSで必須のIL2CPPにも対応しています。3Dの表現を重視するならUnreal EngineのC++、2Dで費用を抑えたいならGodotのGDScriptも候補です。GodotのC#はAndroid・iOS向けが実験的な扱いのため、スマホ向けにGodotを使うならGDScriptで書きます。
ブラウザゲームはどの言語で作りますか?
JavaScriptかTypeScriptで作るのが基本です。フレームワークはPhaserが代表的で、v4.2.1の公開は2026年7月です。UnityやGodotのGDScriptでもWeb向けに書き出せますが、読み込むデータが大きくなりやすい点に注意します。GodotのC#はWebに書き出せないため、ブラウザ向けの候補から外します。
関連記事
- ゲーム開発会社の選び方は?費用相場と内製・外注の判断基準を発注者視点で解説:言語とエンジンを決めた後、開発会社をどう選ぶかを発注者の立場で整理しています。
- アプリ開発の言語選定|Swift・Kotlin・Dartの分岐条件を実装視点で解説:ゲーム以外のアプリの言語を選ぶときの分岐条件です。
- Unity 6.3 LTS(6000.3)の新機能と変更点:Unityを選んだ場合に使う版とサポート期限を確認できます。
- Godotのインストール方法|Windows・Mac・Linux別の手順と日本語化・動作要件【4.7.2対応】:Godotを試すときの導入手順です。
- Phaser.jsとは?使い方・入門をPhaser 4対応で解説:ブラウザゲームをPhaserで作る場合の入門です。