Godot ゲーム開発入門:ノード、シーン、最初の 2D ミニゲームまで

Godot ゲーム開発の初心者向けガイド。ノード、シーン、スクリプト、入力、物理、リソース整理を説明し、最初の 2D ミニゲームで移動、衝突、UI、音、エクスポートまでを理解します。

Godot はオープンソースのゲームエンジンで、2D ゲーム、インディーゲームのプロトタイプ、中規模 3D プロジェクトに向いています。

軽量で起動が速く、ノードとシーンの仕組みが分かりやすいのが特徴です。初心者には Unity より入りやすく、個人開発者にも扱いやすいエンジンです。

まず結論

Godot 入門では、最初から全機能を学ぼうとしないことが大切です。

おすすめの順序は次の通りです。

  1. まず 2D から始める。
  2. ノードとシーンを理解する。
  3. 最初は GDScript を使う。
  4. 開始、失敗、リスタートがある小さなゲームを作る。
  5. その後でアニメーション、音、UI、ステージ、エクスポートを足す。

小さなゲームを 1 本完成させる方が、断片的なチュートリアルを大量に見るより効果的です。

Godot に向いている人

Godot は、ゲーム開発をゼロから学びたい人、2D インディーゲームを作りたい人、すばやくプロトタイプを作りたい人、大きな商用エンジンの複雑なワークフローを避けたい人に向いています。

大型商用パイプライン、豊富なアセットストア、モバイル広告 SDK、高品質 3D 表現が必要なら Unity や Unreal の方が成熟しています。ただし学習と個人制作には Godot で十分です。

インストールとプロジェクト作成

Godot は公式サイトからダウンロードし、解凍して実行するだけです。

最初のプロジェクトでは、デフォルト renderer、英語名、シンプルなパス、Git 管理をおすすめします。

1
first-godot-game

エディタでは Scene、FileSystem、Inspector、Script、2D / 3D ビューをまず覚えます。

ノードとシーン

Godot の中心概念はノードとシーンです。

代表的なノード:

  • Node2D:2D オブジェクトの基礎。
  • Sprite2D:画像表示。
  • CollisionShape2D:衝突形状。
  • CharacterBody2D:操作可能なキャラクター。
  • Camera2D:2D カメラ。
  • AudioStreamPlayer:音声再生。
  • Label:文字表示。

シーンはノードの組み合わせです。プレイヤー、敵、ステージをそれぞれシーンにできます。

1
2
3
4
Player (CharacterBody2D)
├── Sprite2D
├── CollisionShape2D
└── Camera2D

最初に作るゲーム

最初から RPG、オープンワールド、オンラインゲームを作らない方がよいです。

おすすめは 2D 回避ゲームです。

  • プレイヤーが上下左右に動く。
  • 敵が画面端から出る。
  • 敵に触れると失敗。
  • 生存時間がスコア。
  • 開始画面、ゲームオーバー、リスタートがある。

これだけで入力、移動、衝突、生成、UI、Timer、音、シーン再読み込みを学べます。

プレイヤー移動

プレイヤーには CharacterBody2D を使います。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
extends CharacterBody2D

@export var speed := 300.0

func _physics_process(delta):
    var direction := Vector2.ZERO

    direction.x = Input.get_axis("move_left", "move_right")
    direction.y = Input.get_axis("move_up", "move_down")
    direction = direction.normalized()

    velocity = direction * speed
    move_and_slide()

入力 action:

1
2
3
4
move_left  -> A / Left
move_right -> D / Right
move_up    -> W / Up
move_down  -> S / Down

キーコードを直接書かず、action を使うとゲームパッドやキー変更に対応しやすくなります。

衝突と物理

よく使うノード:

  • CollisionShape2D:衝突範囲。
  • Area2D:重なり検出。
  • CharacterBody2D:操作キャラクター。
  • RigidBody2D:物理で動く物体。
  • StaticBody2D:壁や地面。

自分で移動を制御するなら CharacterBody2D、接触検出だけなら Area2D が分かりやすいです。

1
2
3
func _on_body_entered(body):
    if body.name == "Player":
        get_tree().reload_current_scene()

敵の生成

シーンは prefab のように実体化できます。

1
2
3
4
5
6
@export var enemy_scene: PackedScene

func spawn_enemy():
    var enemy = enemy_scene.instantiate()
    enemy.position = Vector2(800, randf_range(50, 550))
    add_child(enemy)

Timer と組み合わせれば、一定間隔で敵を生成できます。

UI、スコア、音

UI は Control 系ノードを使います。CanvasLayerLabelButtonPanel がよく使われます。

スコア例:

1
2
3
4
5
var score := 0.0

func _process(delta):
    score += delta
    $CanvasLayer/ScoreLabel.text = str(int(score))

音は AudioStreamPlayer

1
$HitSound.play()

ゲームは機能だけでなく、音、点滅、揺れ、ボタン状態などの反応で気持ちよくなります。

プロジェクト構成

最初から整理しておくと楽です。

1
2
3
4
5
res://
├── scenes/
├── scripts/
├── assets/
└── ui/

シーン、スクリプト、画像・音声、UI を分けておきます。

よくある失敗

  • ノード種類を間違える。
  • CollisionShape2D を忘れる。
  • キーを直接書く。
  • すべてを Main.gd に詰め込む。
  • 最初のゲームを大きくしすぎる。

小さくても完成したゲームの方が、途中で止まった大作より価値があります。

学習順序

  1. エディタ基本操作。
  2. ノードとシーン。
  3. GDScript。
  4. 入力 action。
  5. 2D 移動。
  6. 衝突と Area2D
  7. Timer と生成。
  8. UI とスコア。
  9. 音とアニメーション。
  10. デスクトップまたは Web へのエクスポート。

まとめ

Godot 入門の鍵は、全機能を覚えることではなく、ゲームの組み立て方を理解することです。ノードがシーンを作り、シーンがゲームを作り、スクリプトが動作を与え、シグナルがイベントをつなぎます。

まずは 2D ミニゲームを完成させましょう。移動、衝突、UI、音、リスタートまでできれば、次に TileMap、セーブ、状態機械、3D、Shader、エクスポート最適化へ進めます。

记录并分享
Hugo で構築されています。
テーマ StackJimmy によって設計されています。