Scratch(スクラッチ)でキャラクターを動かしたり、得点が増える仕組みを考えたりしてゲーム制作をした経験は、Godotでゲームをつくるときにも大切な土台になります。画面の中で何が起きるのかを順番に考え、動かして確かめ、思いどおりにならない部分を直していく力は、使う道具が変わっても活かせます。
Godotは、Scratchの代わりになるものというよりも、Scratchで身に付けたゲームづくりの考え方をさらに広げたいときの選択肢です。文字でプログラムを書くことや、ノードを組み合わせてつくるスタイルを経験し、自分で考えたルールや遊びをより細かく形にしていけます。
Scratchの次にGodotを選ぶ意味
Scratchは、ブロックをつなぐだけでプログラムを組めるため、初めてゲームづくりに触れるのにとても適した環境です。スプライトや背景もすぐに使えるので、思い付いたアイデアを短い時間で動かして試せます。(微妙な画像は多いですが・・・)
プログラミング教室で子どもたちを見ていると、Scratchで「動かせた」「ゲームになった」という成功を重ねたあとに、「自分でコードを書いてみたい」「もっと本格的なゲームをつくりたい」と感じる時期がやってきます。その次の段階では、ビジュアルプログラミングからテキストプログラミングへ進み、「ゲームもつくれる環境」から「本格的なゲームエンジン」へ触れていくことになります。
Godotは、Scratchで身に付けたゲームの考え方を生かしながら、GDScriptでプログラムを自分の手で書き、ノードやシーンを組み合わせてゲームの仕組みを組み立てられる環境です。キャラクターごとの処理、当たり判定、画像や音、画面の切り替えを整理しながら、完成した作品をWebブラウザ向けにも公開できます。Scratchの次に、ゲーム制作とプログラミングの両方を一歩深く学びたい人にとって、Godotはとても相性のよい選択肢です。
もちろん、ScratchからGodotへ進むことだけが正解ではありません。そもそもタイピングがまだまだ苦手な子もいますし、Scratchで作品をつくり続けることにも大きな価値があります。そのうえで、より本格的なゲーム制作やテキストでのプログラミングに興味が出てきた人には、Godotがよい次の一歩になると考えています。
Scratchで学んだことはGodotでも生かせる
Godotを初めて開くと、真っ黒な画面でハードルが高く見えますし、Scratchとはかなり違っています。しかし、ゲームを動かすための基本的な考え方には共通する部分があります。
- キーを押したらキャラクターを動かす
- 座標を変えて画面の中を移動させる
- 何かに触れたら得点を増やす、またはゲームオーバーにする
- 条件によって処理を分け、変数で状態を覚えておく
- 同じような敵やアイテムを複数出現させる
Scratchではブロックで表していた考え方を、Godotではノード、シーン、GDScriptというプログラムで表します。最初は新しい書き方を覚える必要がありますが、ゲームのしくみを考えてつくり上げる部分は、すでにScratchで経験しています。
スプライトからノードとシーンへ
Scratchでは、画面に置くキャラクターやアイテムをスプライトとして扱います。コスチュームを切り替えて見た目を変えたり、スクリプトを付けて動かしたりした経験がある人も多いでしょう。
Godotでは、画像を表示するためにSprite2D、アニメーションする画像にはAnimatedSprite2Dなどのノードを使います。ただし、ScratchのスプライトとGodotのノードは完全に同じものではありません。Godotでは、画像表示、移動、当たり判定、音などの役割をノードごとに分け、それらをまとめて一つのシーンにします。
たとえばプレイヤーなら、見た目を表示するノード、移動を担当するノード、当たり判定の形を持つノードを組み合わせます。役割が分かれているため、最初は少し複雑に見えますが、ゲームが大きくなっても直したい場所を見つけやすいのが特徴です。Scratchで学んだスプライトの考え方は、Godotのノードとシーンを理解する土台になります。

「10歩動かす」から座標を使った移動へ
Scratchの「10歩動かす」や「x座標を○ずつ変える」ブロックは、キャラクターの位置を変える処理です。Godotでも、2Dのゲームでは画面上の位置をx座標とy座標で表します。
Godotでは、2Dのノードが持つpositionを変えることで位置を動かせます。右へ進ませたいならxの値を増やし、上へ進ませたいならyの値を減らす、といった考え方です。キーボードの入力を調べて、押されている方向へ座標を変える処理を書くことで、Scratchでつくった移動の仕組みをより細かく調整できます。

当たり判定を見た目とは別に調整できる
Scratchでは「○○に触れた」や「色に触れた」といったブロックを使って、当たり判定をつくれます。すぐに試せる便利な方法ですが、キャラクターの絵の形に合わせて判定を細かく調整したいときには、少し工夫が必要です。
Godotでは、見た目の画像とは別に、当たり判定専用の形を置けます。四角形や円などを使い、敵や足場に合わせて大きさを変えられるため、「見た目は当たっていないのにゲームオーバーになる」といった遊びにくさを調整しやすくなります。当たり判定はゲームの難しさや気持ちよさにも関わるため、ゲームエンジンならではの便利な仕組みです。

メッセージはシグナルへ、クローンはシーンのインスタンス化へ
Scratchの「メッセージを送る」は、別のスプライトに出来事(イベント)を知らせるための仕組みです。Godotでは、似た目的でシグナルを使えます。たとえばボタンが押された、敵を倒した、HPがなくなったといった出来事を、必要な場所へ伝えられます。
また、Scratchのクローンは、同じ敵やアイテムを何個も出したいときに便利です。Godotでは、あらかじめ用意した敵やアイテムのシーンを必要な数だけインスタンス化します。インスタンス化とは、元になるシーンをもとにして、ゲームの実行中に新しい敵やアイテムを画面へ出現させることです。
たとえば敵のシーンを一つ用意しておけば、その敵を何体でもインスタンス化できます。元になるシーンを直せば、そこから出現する敵にも同じ仕組みを使えるため、敵が増えるゲームでも整理しやすくなります。Scratchのクローンやメッセージを使った経験があれば、Godotのシグナルやシーンのインスタンス化を理解しやすいと思います。
ブロック定義から関数へ
Scratchでは、よく使う処理をカスタムブロックとしてまとめられます。GodotのGDScriptでは、funcを使って関数をつくります。たとえば「ダメージを受ける」「得点を増やす」「ゲーム開始時の初期設定」といった処理を関数にまとめておくと、必要な場面から呼び出せます。
関数に名前を付け、処理を整理する習慣は、ゲームが大きく複雑になるほど役に立ちます。Scratchで自分用のブロックをつくったことがある人なら、「同じ処理を何度も書かないためのまとまり」という感覚から始められます。

Godotで新しく挑戦すること
Godotでは、ブロックを並べる代わりにGDScriptをキーボードで入力します。最初は記号や英単語に戸惑うこともありますが、エラーの内容を読み、少しずつ直していくこともプログラミングの大切な学びです。
また、Scratchには最初から使えるスプライトや背景、いろんな音素材があり、簡易的な描画機能で素材作成も簡単です。一方、Godotでオリジナルの画像を使う場合は、フリー素材を探してくるか、画像編集ソフトなどで素材を作成して読み込みます。ここが大きく異なる部分ですが、その分、自分の絵、音、画面のデザインを使った作品へ広げやすくなります。
最初は小さな2Dゲームから始めよう
ScratchからGodotへ移るときは、せっかくのゲームエンジンですので、いきなり大きな3Dゲームを目指したくなりますが、まずは、キャラクターを動かす、敵やアイテムに触れたら反応する、得点を表示するといった小さな2Dゲームから始めるのがおすすめです。
Scratchでつくったゲームを題材にして、「この仕組みをGodotならどう書くか」を一つずつ試すのもよい方法です。同じアイデアでも、道具が変わると新しい発見があります。動くものを少しずつ増やし、自分の手でゲームらしくしていきましょう。
無料テキストでScratchとの違いを確認する
ゲームプログラミングラボでは、Scratchを経験した人がGodotの考え方へ進むための無料テキストを公開しています。スプライト、座標、当たり判定、メッセージ、クローン、関数の違いを、実際の画面とともに確認できます。
次に読む記事
Godotの部品をどのように組み合わせてゲームをつくるのかを知りたい人は、次にGodot 4のノードとシーンとは?初心者向けに解説を読みましょう。キャラクター、当たり判定、画面などを整理するための基本を紹介します。
Godotを実際に動かしてみたい人へ
ゲームプログラミングラボでは、Scratchで身に付けた考え方も生かしながら、キャラクター移動、敵、当たり判定、スコアを組み合わせた2Dゲーム制作に取り組めます。
