Seminar Land
Godot(ゲームを作る無料のソフト)を使って、自分だけのステージを作ってみましょう! プログラミングが初めての人でも大丈夫です。順番に進めていきましょう。
✅ 対応バージョン:このゲームは Godot 4.6 で動作確認しています。
ステージ=ゲームの「面(ステージ)」のことです。このチュートリアルでは 「レベル」ではなく「ステージ」と呼びます。
このゲームは、難しいコードを書かなくても、用意された部品を並べるだけで 自分のステージが作れるように設計されています。さらに、少しコードを書けば、 見本を参考に自分だけの部品(アイテム)を作ることもできます。Godot の言語は Python によく似ているので、プログラミングに挑戦したい人にもぴったりです。 自信がある人は、ゲームを好きなだけ拡張していけます。安心してどんどん試して ください。
ℹ️ このチュートリアルについて これは、すべてを一から十まで説明する完全な手引きではありません。授業の 補助教材として、また授業が終わったあとも自分で作り続けられるように 用意したものです。細かい部分でつまずいたら、先生に聞いたり、AI (コーディング支援)に手伝ってもらったりしながら進めてください。
このチュートリアルは、実際の基礎セミナーの中の 90分×4回を使って学生と一緒に Godot に取り組んだ経験をもとに、担当教員が用意したものです。授業では、部品(アイテム)を自作 したり、その絵を Microsoft ペイントで描いたりもしました(絵の描き方自体は このチュートリアルでは扱っていません)。
🎮 まずは体験してみよう
実際に遊んでいる様子は、下のデモ動画で見られます。 インストールしなくても、ブラウザですぐに遊べる体験版も用意してあります。
▶ ブラウザ版で遊んでみる(別のタブで開きます。ダウンロード不要)
もくじ
- Godot をインストールする
- プロジェクトを開いて遊んでみる
- 自分のステージを作る(コピーする)
- ステージを一覧に登録する
- アイテムやタイルで組み立てる
- (応用)簡単なアイテムを自作する
- フォルダ地図(どこに何があるか)
- 困ったときは
- AI(コーディング支援)について
1. Godot をインストールする
- 公式サイトを開きます → https://godotengine.org/download
- Godot(Standard 版でOK)を、自分のパソコン用にダウンロードします。
- ダウンロードしたファイルを解凍して、出てきたアプリを起動します。 インストール作業はなく、そのまま起動できます。
💡 ページ上部の対応バージョンに合わせてください。バージョンが大きく 違うと、うまく開けないことがあります。
2. プロジェクトを開いて遊んでみる
- Godot を起動すると「プロジェクトマネージャー」が開きます。
- 右上の 「インポート(Import)」 を押します。
- このゲームのフォルダの中にある
project.godotを選びます。 - 一覧に「Seminar Land」が出てくるので、ダブルクリックで開きます。
- エディタが開いたら、右上の ▶(実行)ボタン か F5 キーを押します。
操作方法:
| キー | 動き |
|---|---|
| ← → | 左右に移動 |
| スペース | ジャンプ |
| Esc | メニューにもどる |
旗(🚩)に触るとステージクリアです。まずはお手本のステージで遊んでみましょう。
3. 自分のステージを作る(コピーする)
新しいステージは、空っぽのテンプレート level_empty.tscn をコピーして
作ります。これにはもう プレイヤーと旗(ゴール)が入っているので、すぐに
遊べる形になっています。
- 画面左下の 「FileSystem(ファイルシステム)」 パネルを見ます。
level_empty.tscnを 右クリック → 複製(Duplicate)。- 名前を、たとえば
level_mystage.tscnのように付けます。 (半角の英数字で、level_から始めると分かりやすいです。) - できた
level_mystage.tscnを ダブルクリックして開きます。
これであなたのステージが1つできました! 中には最初から
- player(プレイヤー)
- flag(ゴールの旗)
- tilemap(地面を描くための下じき)
が入っています。
💡 旗は「ステージクリア」の合図を出す大事な部品です。ステージには必ず 1つ置いておきましょう(テンプレートには最初から入っています)。
4. ステージを一覧に登録する

作ったステージを、ゲームのステージ一覧に登録しないと、遊ぶ画面に出てきません。
登録は world.tscn の levels(ステージ一覧) に追加するだけです。
エンジンのコードを書き変える必要はありません。
- FileSystem で
world.tscnをダブルクリックして開きます。 - 左の「Scene(シーン)」パネルで、一番上の
Worldノードをクリック。 - 右の 「Inspector(インスペクター)」 に
Levelsという項目があります。 これがステージの一覧です。 - ステージを一覧に追加するには、次の2つのやり方があります。どちらでもOKです。
- ①ドラッグ&ドロップ:FileSystem から自分の
level_mystage.tscnを、Levelsの一覧に直接ドラッグして落とすと、新しい枠が増えてそこに入ります。 - ②ボタンで追加:
Levelsの下の 「+ 要素を追加」 ボタンを押すと空っぽの枠が 増えます。その枠にステージを入れる方法は2通りです。- FileSystem から
level_mystage.tscnを、その枠にドラッグして入れる。 - 枠に出てくるフォルダのアイコンをクリックし、開いたメニューの
「クイックロード」/「読み込み」 から
level_mystage.tscnを選ぶ。
- FileSystem から
- ①ドラッグ&ドロップ:FileSystem から自分の
- ③削除:いらなくなったステージは、その行の右にあるゴミ箱ボタンで一覧から 外せます。一覧から外れるだけで、ステージのファイル自体は消えません。
- ④順番の入れ替え:一覧の上から順番に遊ぶことになります。各行の左にある ≡(並べ替えハンドル) を上下にドラッグすると、順番を入れ替えられます。
- Ctrl+S で保存し、F5 で実行して確認しましょう。
💡
Exclude From Level Select(ステージ選択から隠す)に入れると、 順番に遊ぶときには出てくるけれど「ステージ選択」画面には出ない、 という隠しステージにできます。フィナーレ用のlevel_endがその例です。
💡
Tutorial Levels(チュートリアル)は、普通のLevelsとは別の一覧です。 ここにステージを入れると、メインメニューに 「チュートリアル」 ボタンが自動で 出てきます(1つも入れなければ出ません)。その画面では「順番にプレイ」で全部 続けて遊ぶことも、一覧から1つずつ選ぶこともできます。Levelsとは別なので、 「スタート」の連続プレイには含まれません。
5. アイテムやタイルで組み立てる
ステージの中身は、完成品のアイテムとタイル(地面)を置いて作ります。
タイル(地面)を描く
- ステージのシーンの中の
tilemapノードをクリックします。 - 画面下に TileMap の編集パネルが出ます。タイルを選んで、キャンバス上を クリック/ドラッグすると地面が描けます。
- 消したいときは右クリック(または消しゴム)で消せます。
地面のタイルの絵は tilemap_imgs/ に入っています(普通の地面、石、緑など)。
💡 溶岩(ラバ)について:ステージの一番下(下に落ちる場所)は、いつも 溶岩になっていて、落ちるとミスになります。これは変えられません。ステージの 上のほうにも溶岩を置きたいときは、専用の溶岩タイルマップ
tilemaps_henrik/lava_tilemap.tscnを使います。普通の地面タイルとは別で、 アニメーションつき、触れるとミスになる特別なタイルです。ステージにドラッグ& ドロップで置いてから、上と同じ手順で描けます。
完成品のアイテムを置く
items_henrik/ フォルダには、すぐ使えるアイテムがそろっています。
名前をクリックすると、詳しい使い方のページが開きます。
| 見た目 | ファイル | どんなアイテム? |
|---|---|---|
| spring.tscn | ばね。乗ると高くジャンプ。 | |
| cannon.tscn | 大砲。プレイヤーを発射! | |
| bee.tscn | ハチ(うごく敵)。 | |
| fireball.tscn | 火の玉。 | |
| garigari.tscn | 回るノコギリ(危険)。 | |
| key.tscn | カギ。集めるしかけに使えます。 | |
| platform.tscn | 足場(スクリプトなし)。 | |
| gravity_flip.tscn | 重力逆転。 | |
| timeout.tscn | 時間制限。 | |
| 🏷️ | stage_title.tscn | ステージ名の表示(開始時にふわっと出る)。 |
→ アイテム図鑑(一覧ページ) で、絵つきの一覧を見られます。
置き方:
- FileSystem で使いたい
.tscn(例:spring.tscn)を選びます。 - それを、開いている自分のステージの キャンバスにドラッグ&ドロップします。
- 置いた部品は、ドラッグで動かしたり、Inspector で設定を変えたりできます。
💡 ステージ名を出したいときは
stage_title.tscnを1つ置いて、Inspector のStage Titleに好きな名前を入れましょう。この名前はステージ選択の ラベルにも使われます。
6.(応用)簡単なアイテムを自作する
もう少しやってみたい人は、自分でアイテムを作るのに挑戦してみましょう。
お手本が items/ フォルダにあります。
items/item_speed.gd… 触ると速くなるアイテムitems/gravity_flip.gd… 触ると重力が逆転するアイテム
アイテムの仕組み(「アドイン」方式)
このゲームのアイテムは、すべて独立した Area2Dです。プレイヤーが範囲に
入ると _on_body_entered(body) という関数が呼ばれます。この body が
プレイヤーです。プレイヤーの公開された変数とシグナルだけを通して
性能を変えるので、player.gd も world.gd も書き変えません。
触れるもの:
| 名前 | 意味 |
|---|---|
body.SPEED |
走る速さ |
body.JUMP_VELOCITY |
ジャンプの強さ(マイナスが上向き) |
body.GRAVITY_SCALE |
重力の強さ(1.0 が標準) |
body.scale |
プレイヤーの大きさ |
body.died(シグナル) |
ミスにする合図 |
body.level_complete(シグナル) |
クリアにする合図 |
一番簡単な例
extends Area2D
# 触ると速くなるアイテム
@export var SPEED_BONUS = 150.0 # 足す速さ
func _on_body_entered(body: Node2D) -> void:
body.SPEED += SPEED_BONUS # プレイヤーを速くする
queue_free() # アイテムを消す(使い切り)
ほぼコードなしの改造アイデア
SPEED_BONUSの数字を変える → 速くなる量が変わるbody.SPEED += SPEED_BONUSをbody.JUMP_VELOCITY -= SPEED_BONUSにする → ジャンプ力アップ(JUMP_VELOCITYはマイナスが上向きなので、引くほど高く跳ぶ)body.GRAVITY_SCALEを変える → 軽い/重いアイテムbody.scaleを変える → 小さく/大きくなるアイテム
自作したアイテムも、items_henrik/ の完成品と同じように、ステージへ
ドラッグ&ドロップで置けます。
📘 もっと詳しく作りたい人へ:シーンの作り方、当たり判定(コリジョン)の しくみ、
@exportの使い方、トラップやふうせんなどの例までを、 アイテムを一から自作する のページでステップごとに 説明しています。
💡 ルール:アイテムは
player.gdやworld.gdを書き変えません。 かならず「公開変数」と「シグナル」だけを通してプレイヤーに触れましょう。 こうすると、みんなのアイテムがぶつからずに動きます。
7. フォルダ地図(どこに何があるか)
| フォルダ/ファイル | 中身 |
|---|---|
world.gd / world.tscn |
ゲーム本体(メニュー・ステージ一覧・ボタン)。普通は触りません。 |
player/ |
プレイヤー(player.gd、絵)。 |
goal/ |
ゴールの旗(flag.tscn)。 |
level_empty.tscn |
ステージのテンプレート(コピー元)。プレイヤーと旗つき。 |
example_levels/ |
お手本のステージ集(level_cannon.tscn ほか)。 |
items/ |
自作アイテムのお手本(簡単な例)。 |
items_henrik/ |
完成品のアイテム集(ばね・大砲・ハチ・カギ…)。 |
tilemap_imgs/ |
地面を描くタイルの絵(普通の地面・石・緑など)。 |
tilemaps_henrik/ |
専用の溶岩タイルマップ(lava_tilemap.tscn)。触れるとミスになる特別なタイル。 |
menus/ / global/ / other/ |
補助的な部品(メニューや演出)。 |
8. 困ったときは
- ステージが一覧に出てこない →
world.tscnのLevelsに追加して保存したか 確認しましょう(4章)。 - ゴールできない → ステージに旗(
flag)が1つ入っているか確認しましょう。 - 旗(ゴール)が見えない・通れない → カギを置いていませんか? カギを1つでも 置くと、旗はカギを全部集めるまでかくれます(カギ)。
- アイテムが反応しない →
Area2Dのbody_enteredシグナルが、関数_on_body_enteredにつながっているか確認しましょう。 - 開けない/エラーが出る → Godot のバージョンがページ上部の対応バージョンに 合っているか確認しましょう。
楽しいステージができたら、ぜひ友だちに遊んでもらいましょう!🎮
9. AI(コーディング支援)について
このゲームの設計・仕組み・アートは作者によるものです。作者自身がゲームのコード
(バネ・大砲・ハチ・のこぎり・カギ・重力反転などの完成品アイテムを含む)を書き、
すべてのコードをレビューして動作を確認しています。コードの一部は、AIコーディング
支援ツール(Anthropic の Claude/Claude Code)の助けを借りて書きました。
作者が骨組みを用意して方針を決め、world.gd の細かい実装の多く、画面上のタッチ
キーボード、日英併記のコード内ドキュメントの多くを、このツールが担当しました。
コードが書ける・読めることは今も大切です。骨組みを設計し、AIに指示を出し、 出てきたコードを見極めて直せるのは、その力があるからこそです。AIは道具であって、 「理解していること」の代わりにはなりません。