ゲーム開発時の代表的なゲームエンジンとして、UnityやUnreal Engineがありますが、近年は無料で利用可能な「Godot」も注目されています。
商用利用でも費用がかからず、動作も軽いため、個人でも手軽にゲーム開発を始められるのが大きなメリットです。
Godotとは
Godotとは何か
Godot(ゴドー)とは、2D・3Dゲームの開発に対応したオープンソースのゲームエンジンです。
ゲーム開発に必要な描画機能や物理演算、アニメーション、サウンド、ユーザーインターフェースなどの機能が備わっており、これらを組み合わせることで様々なゲームを制作できます。
2014年にオープンソースとして公開されて以降、世界中の開発者コミュニティによって開発が続けられており、2026年11月時点の最新版はGodot 4.7.2です。
最新版のダウンロードや更新情報は、Godotの公式サイトで確認できます。
Godotでは、標準のスクリプト言語として「GDScript」が用意されています。
また、C#による開発にも対応しており、用途や開発者の経験に応じて使用するプログラミング言語を選択できます。
GDScriptの文法は、公式ドキュメントの「GDScriptリファレンス」で確認できます。
Godotは、Windows・macOS・Linux環境で使用可能で、開発したゲームはデスクトップやモバイル、Webなど、複数のプラットフォーム向けに書き出せます。
Godotでできること
Godotでは、主に以下のようなゲームを開発できます。
- 2Dゲーム:アクションゲーム、パズルゲーム、シューティングゲームなど
- 3Dゲーム:RPG、アドベンチャーゲーム、シミュレーションゲームなど
- UIを中心としたアプリケーション:メニュー画面や操作パネルなどを備えたアプリケーション
特に2Dゲームの開発機能が充実しており、キャラクターの移動や衝突判定、スプライトのアニメーションなどを比較的簡単に実装できます。
また、物理演算やパーティクル、シェーダーなどにも対応しているため、シンプルなゲームだけでなく、演出にこだわった作品も制作可能です。
Godotを使うメリット
Godotには、主に次のようなメリットがあります。
- 完全無料:商用利用でも利用料やロイヤリティがかからない
- 動作が軽い:インストール不要で、ZIPを展開するだけで起動できる
- 部品を再利用しやすい:作成したシーンを別のシーンに何度でも配置できる
- 2Dゲームに強い:2D専用の描画の仕組みやタイルマップエディターを備えている
- 学びやすい:GDScriptはPythonに似たシンプルな文法で書ける
特に、費用をかけずに手元のPCですぐに始められる点は、初めてゲームエンジンに触れる人にとって大きな魅力です。
Godotのデメリット・注意点
一方で、Godotを使う際には次の点に注意が必要です。
- 日本語の情報が少ない:解説記事や書籍、アセットはUnityより限られる
- 高度な3Dは他エンジンが有利:フォトリアルな大規模3DゲームはUnreal Engineなどが向いている
- ゲーム機向けは別途対応が必要:メーカーとの契約や外部企業の移植サービスを利用する
特に、日本語の情報が少ない点は初心者がつまずきやすいため、困ったときは日本語訳も用意されている公式ドキュメントを参照しましょう。
UnityやUnreal Engineとの違い
Godotと同じく、ゲーム開発に利用される代表的なエンジンとして、UnityやUnreal Engineがあります。
それぞれ特徴が異なるため、開発したいゲームや用途に合わせて選択することが重要です。
| 項目 | Godot | Unity | Unreal Engine |
|---|---|---|---|
| 主な用途 | 2D・3Dゲーム | 2D・3Dゲーム | 高品質な3Dゲーム |
| 主な言語 | GDScript、C# | C# | C++、Blueprint |
| ライセンス | MIT | 独自ライセンス | 独自ライセンス |
| 料金 | 無料 | 年間の収益・資金調達額が20万ドル以下なら無料 | 製品の総収益が100万ドルを超えると5%のロイヤリティ |
| 特徴 | 軽量でシンプル | 汎用性が高い | 高度な3D表現 |
UnityとUnreal Engineの料金条件は、2026年11月時点のUnity公式サイトとUnreal Engine公式サイトの情報をもとにしています。
Godotの特徴は、比較的軽量で、シンプルな構成になっていることです。
エディター自体の動作も軽く、個人開発や小規模なゲーム制作にも適しています。
Unityは、豊富なアセットや開発情報が公開されており、幅広いジャンルのゲーム制作に利用されています。
C#を使った開発環境が整っている点も特徴です。
Unreal Engineは、高品質なグラフィックス表現に強みがあります。
高度な3Dゲームや映像制作など、大規模なプロジェクトにも利用されています。
Godotを無料で使い始める
無料で使える範囲とライセンス
GodotはMITライセンスで公開されているオープンソースソフトウェアです。
そのため、個人利用・非営利利用だけでなく、商用ゲームの開発にも無料で利用できます。
また、Godot自体を改変したり、再配布したりすることも認められています。
ただし、Godotを再配布する場合は、著作権表示とライセンス文を含める必要があります。
また、ゲーム内で使用する画像や音楽などの素材については、それぞれの素材に適用されるライセンスを確認しましょう。
Mac版をダウンロードする
Godotは、公式サイトのダウンロードページから入手できます。
一般的なインストーラーは使用せず、ダウンロードしたZIPファイルを展開することで、アプリケーションをそのまま実行できる仕組みになっています。
また、Godotには通常版と.NET版の2通りのアプリケーションがあります。
通常版はGDScriptを利用した開発に対応しており、.NET版はC#による開発にも対応しているため、使用する言語に合わせて必要な方をダウンロードしてください。
Godotを起動する
ダウンロードしたGodotアプリケーションを起動すると、最初にプロジェクトマネージャーが表示されます。
プロジェクトマネージャーでは、以下の操作が可能です。
- 新しいプロジェクトの作成
- 既存プロジェクトの読み込み
- 最近使用したプロジェクトの管理
エディターを日本語で表示する
Godotは、エディターの表示言語を変更することができます。
(使用している環境によっては、自動で日本語表示に設定されている場合もあります)
設定を変更する場合は、画面右上の「Settings」をクリックしてメニューを開き、「Language」の項目から言語を選択しましょう。
プロジェクトを作成して画面を確認する
新しいプロジェクトを作成する
Godotでゲームを制作する際は、最初にプロジェクトを作成します。
プロジェクトマネージャーから「新規プロジェクトを作成」を選択し、以下の項目を設定します。
設定が完了したら「作成」をクリックしましょう。
しばらくするとGodotのエディターが起動します。
エディターの基本画面
Godotのエディターは、ゲームを構成する要素を作成・編集するための画面です。
画面には、主に以下のものが表示されています。
- シーン(左上):シーンを構成するノードを、階層構造で表示・編集する
- ファイルシステム(左下):シーンやスクリプト、画像など、プロジェクト内のファイルを表示する
- メイン画面(中央):2D・3Dの編集画面やスクリプトエディターなどを表示する
- インスペクター(右側):選択したノードのプロパティを確認・編集する
- 下部パネル:出力やデバッガーなど、実行結果やエラーの情報を確認する
メイン画面は、上部の「2D」「3D」「スクリプト」などのボタンを押すことで表示内容を切り替えることができます。
シーンとノードの考え方
Godotを使う上で重要になるのが「シーン」と「ノード」という2つの概念です。
ノードとは、ゲームを構成する個々の機能や要素を表すものです。
画像を扱うノードや、物理演算を扱うノード、文字を表示するためのノードといったように、目的に応じて様々なノードを利用できます。
一方、シーンとは、複数のノードを組み合わせて構成したまとまりのことを指します。
作成したシーンをメインのゲーム画面に配置すれば、他のゲーム要素と組み合わせて利用することも可能です。
このように、Godotではゲームを構成する要素をノードとして作成し、それらをシーンとしてまとめることで、効率的にゲームを開発できる仕組みになっています。
詳しい仕組みは、公式ドキュメントの「ノードとシーン」でも解説されています。
【実践】コインを集める2Dゲームを作る
作るゲームの完成イメージ
ここからは、Godotを使って簡単な2Dゲームを制作してみましょう。
今回は、プレイヤーを操作して画面上に配置されたコインを集めるゲームを作成します。
制作するゲームの仕様は以下のとおりです。
- プレイヤーは上下左右に移動できる
- 画面上に複数のコインが配置されている
- プレイヤーがコインに触れるとコインが消える
- コインを取得するとスコアが1増える
- 取得したスコアは画面上に表示される
プレイヤーのシーンを作る
最初に、ゲームを操作するプレイヤーを作成します。
まず、メイン画面上部の+ボタンを押して、新規シーンを追加します。
タブが表示されたら、シーンパネル内の「ルートノードを生成」、もしくは+ボタンを押して、ルートノードを作成します。
ノードの種類には、「CharacterBody2D」を選択します。
プレイヤーなどの物理的な移動を伴うオブジェクトに利用するノードです。
何のノードであるかを分かりやすくするために、ノード名を「Player」に変更しておきます。
ルートノードの作成が完了したら、ノードを選択した状態で再度+ボタンを押し、子ノードを追加します。
ここでは、「Sprite2D」と「CollisionShape2D」の2つを子ノードとして追加します。
Sprite2Dは、2D画像を表示するためのノードです。
インスペクターのTextureプロパティで、表示する画像を選択することができます。
CollisionShape2Dは、他のオブジェクトとの衝突判定に利用するノードです。
インスペクターの「Shape」から「RectangleShape2D」を選択し、Sizeを画像と同じサイズに調整します。
これにより、画像と同じ大きさの当たり判定が設定されます。
設定が完了したら、最後にシーン名を付けて保存します。
プレイヤーを動かすスクリプトを書く
続いて、プレイヤーを上下左右に移動できるようにします。
Playerノードを選択し、シーンパネル上部のスクリプト追加ボタンを押して新しいスクリプトを作成してください。
作成したスクリプトには、以下のコードを記述します。
extends CharacterBody2D
const SPEED = 300.0
func _physics_process(_delta):
# 入力された方向を取得
var direction = Input.get_vector(
"ui_left",
"ui_right",
"ui_up",
"ui_down"
)
# 移動速度を設定
velocity = direction * SPEED
# プレイヤーを移動
move_and_slide()「Input.get_vector()」で入力された方向を取得、「velocity」プロパティで移動速度を指定し、「move_and_slide()」で物理演算に基づいた移動処理を実行しています。
コインのシーンを作る
次に、プレイヤーが取得するコインを作成します。
プレイヤーと同様に新しいシーンを作成し、ルートノードには「Area2D」を選択します。
Area2Dは、他のオブジェクトが指定した範囲に入ったことを検知するためのノードです。
作成したArea2Dには、以下の子ノードを追加します。
- ColorRect
- CollisionShape2D
ColorRectはコインの見た目、CollisionShape2Dは取得判定に使用します。
ColorRectは、以下の内容で設定します。
- Position:X=-8、Y=-8
- Size:X=16、Y=16
- Color:黄色などの見やすい色
CollisionShape2Dは、Shapeから「CircleShape2D」を選択し、Radiusを12に設定します。
これで、コインの周囲に円形の当たり判定が設定されます。
設定が完了したら、こちらもシーン名を付けて保存しましょう。
コインに触れたら消える処理を作る
続いて、プレイヤーがコインに触れた時に、コインを消す処理を実装します。
Coinノードを選択して新しいスクリプトを作成し、以下のコードを記述します。
extends Area2D
# コイン取得時に発生するシグナル
signal collected
func _ready() -> void:
# 接触を検知するシグナルを接続する
body_entered.connect(_on_body_entered)
func _on_body_entered(body):
# プレイヤーが接触した場合
if body is CharacterBody2D:
collected.emit()
queue_free()このコードでは、Area2Dが持つ「body_entered」というシグナルを利用しています。
シグナルとは、特定のイベントが発生したことを他の処理に通知する仕組みです。
「body_entered」は、Area2Dの当たり判定範囲に物理ボディが入ったときに発生します。
シグナルが発生すると「_on_body_entered()」が実行され、接触したオブジェクトがCharacterBody2Dであるかを確認します。
プレイヤーが接触した場合は「collected.emit()」でコイン取得を通知し、「queue_free()」でコインのノードを削除します。
シグナルの使い方は、公式ドキュメントの「シグナルの使用」でも確認できます。
メインシーンにまとめてスコアを表示する
プレイヤーとコインの作成が完了したら、これらのシーンを組み合わせてゲーム全体を管理するメインシーンを作成します。
まず、新しいシーンを作成し、ルートノードに「Node2D」を選択します。
次に、以下のような構成になるように子ノードを追加していきます。
PlayerとCoinは、ファイルシステムからのドラッグ&ドロップなどで追加することができます。
CoinsはNode2Dを追加して作成し、その子ノードとしてCoinをゲーム画面に配置したい数の分だけ追加します。
追加したプレイヤーとコインは、2D画面上でそれぞれ位置を調整できます。
続いて、スコア表示用のLabelを追加します。
新規ノード作成から「Label」を選択し、インスペクターのTextに「Score: 0」と入力してください。
ラベルの表示位置は、Positionで調整できます。
ゲーム画面の基本構成が完成したら、続いてスコアを管理するスクリプトを作成します。
Mainノードを選択し、新規スクリプトを作成して以下のコードを記述します。
extends Node2D
# スコアの初期値
var score = 0
# スコア表示用のLabel
@onready var score_label = $ScoreLabel
func _ready():
# Coinsの子ノードを取得する
for coin in $Coins.get_children():
# コイン取得時のシグナルを接続する
coin.collected.connect(_on_coin_collected)
func _on_coin_collected():
# スコアを加算する
score += 1
# 画面上のスコア表示を更新する
score_label.text = "Score: %d" % scoreこのスクリプトでは、ゲーム全体のスコア管理を行っています。
「_ready()」は、ノードがシーンに追加され、初期化が完了したときに実行される関数です。
その中で、「$Coins.get_children()」を利用して子ノードであるコインをすべて取得し、各コインの「collected」シグナルを「_on_coin_collected()」に接続しています。
プレイヤーがコインを取得すると、Coin側からシグナルが発生し、Main側の処理が呼び出されます。
「score += 1」でスコアを加算し、「score_label.text」で画面上の表示を更新しています。
ゲームを実行して動作を確認する
ここまでの設定が完了したら、実際にゲームを実行してみましょう。
作成したメインシーンを保存して、エディター右上にある実行ボタンを押してください。
初めてプロジェクトを実行する場合は、メインシーンの選択画面が表示されることがあります。
その場合は、先ほど保存したシーンを選択してください。
ゲーム画面が表示されたら、キーボードの矢印キーを使ってプレイヤーを操作します。
コインに接触するとコインが消え、画面左上のスコアが1ずつ増えていくことを確認できれば成功です。
作ったゲームを保存・書き出す
プロジェクトを保存する
Godotでは、シーンやスクリプトなどのファイルをプロジェクト内に保存します。
「project.godot」は、プロジェクト全体の設定を管理するファイルです。
また、シーンは .tscnファイル、スクリプトは .gdファイルとして保存されます。
Godotでは、これらのファイルをまとめて管理することで、後からプロジェクトを開いて開発を再開できます。
Mac用のアプリに書き出す
Godotでは、制作したゲームを実行可能なアプリケーションとして書き出すことができます。
ゲームを書き出す際は、事前にエクスポートテンプレートをインストールする必要があります。
エクスポートテンプレートとは、制作したプロジェクトを各プラットフォーム向けの実行形式に変換するためのファイルです。
まず、上部メニューの「エディター」から「エクスポートテンプレートの管理」を選択し、エクスポートテンプレートマネージャーを表示します。
画面が開かれたら、インストールしたいテンプレートを選択し、「Install Selected Templates」を押してインストールします。
インストールが完了したら、続いて上部メニューの「プロジェクト」から「エクスポート」を選択し、書き出しの設定を行います。
設定画面が表示されたら、画面左側の「追加」をクリックし、プラットフォーム一覧からOSを選択します。
エクスポート設定では、アプリケーションに関する情報などを指定できます。
今回は、主に以下の項目を確認します。
- Export Path:書き出したアプリケーションの保存先
- Bundle Identifier:アプリケーションを識別するための固有ID
Bundle Identifierは、アプリケーションの識別に使用される固有IDのため、配布する場合は他のアプリと重複しない値を指定してください。
設定が完了したら、「プロジェクトをエクスポート」を選択し、保存先とファイル名を指定して書き出しを実行すると、アプリケーションが生成されます。
macOS向けの書き出しで設定できる項目は、公式ドキュメントの「macOS用にエクスポート」で確認できます。
初心者がつまずきやすいポイント
プレイヤーが動かない
移動処理を実装したにもかかわらず、プレイヤーが動かない場合は、以下の点を確認しましょう。
- 入力アクションが正しく設定されているか
- スクリプトが正しいノードに設定されているか
今回使用した「ui_left」などは、Godotに標準で登録されている入力アクションです。
プロジェクト設定の「インプットマップ」を開き、それぞれのアクションにキーが割り当てられているか確認してください。
また、プレイヤーの移動処理を記述したスクリプトは、Playerノードにアタッチする必要があります。
Playerノードのインスペクターにスクリプトが設定されているか確認しましょう。
コインに触れても消えない
プレイヤーがコインに触れても消えない場合は、当たり判定の設定を確認します。
- CollisionShape2Dが設定されているか
- Area2DのMonitoringが有効になっているか
- シグナルが正しく接続されているか
Area2Dには、他のオブジェクトが当たり判定の範囲に入ったことを検知する機能があります。
Shapeやスクリプトが正しく設定されていても、この機能がオフになっていると当たり判定が検知されません。
インスペクターから「Monitoring」が有効になっているか確認してください。
実行時にメインシーンの選択を求められる
ゲームの実行ボタンを押した際に、メインシーンの選択画面が表示される場合があります。
これは、プロジェクトの開始地点となるメインシーンが設定されていないことが原因です。
初めてプロジェクトを実行する場合に、メインシーンの選択を求められること自体は正常な動作のため、表示された画面から選択すれば問題はありません。
よくある質問
Q. Godotは完全無料で利用できますか?
A. MITライセンスで公開されているオープンソースのゲームエンジンであるため、個人利用や商用利用を問わず無料で利用できます。
Q. プログラミング初心者でもGodotを使えますか?
A. GDScriptは初心者でも比較的理解しやすい言語のため、簡単なゲーム制作からであれば問題ありません。
ただし、複雑なゲームを制作する場合は、プログラミングやゲーム開発に関する知識も相応に必要となります。
Q. Godotで開発したゲームはMac以外でも動かせますか?
A. Godotでは、WindowsやLinux、Android、iOS、Webなど、複数のプラットフォーム向けにゲームを書き出せます。
Q. Godotでは3Dゲームも制作できますか?
A. Godotは2Dだけでなく、3Dゲームの開発にも対応しています。
3Dモデルの表示やライティング、カメラ制御、物理演算など、3Dゲームに必要な機能が用意されています。
まとめ
Godotは比較的軽量で導入しやすく、個人でゲーム開発を始めたい人にも適したゲームエンジンです。
まずは簡単なゲームから制作し、少しずつ機能を追加しながら使い方を覚えていくとよいでしょう。
次のステップとして、公式ドキュメントのチュートリアル「最初の2Dゲーム」に挑戦してみるのもおすすめです。