■サンプルファイルのダウンロードについて
本書掲載のサンプルファイルは、下記 URL からダウンロードできます。

https://-----------------------------------------------

・本書の内容についてのご意見、ご質問は、お名前、ご連絡先を明記のうえ、小社出版部宛文書（郵送または E-mail）でお送りください。
・電話によるお問い合わせはお受けできません。
・本書の解説範囲を越える内容のご質問や、本書の内容と無関係なご質問にはお答えできません。
・匿名のフリーメールアドレスからのお問い合わせには返信しかねます。
本書で取り上げられているシステム名／製品名は、一般に開発各社の登録商標／商品名です。本書では、™ および ® マークは明記していません。本書に掲載されている団体／商品に対して、その商標権を侵害する意図は一切ありません。本書で紹介している URL や各サイトの内容は変更される場合があります。

はしがき
※1

本書では Godot（ゴトー）というゲームエンジンを用いて、GUI 操作・プログラミングを体験する。
Godot は以下のような特徴がある。
●

シーンとノードによるプログラミング。シーンにノードを配置してゲーム全体を作り上げる。

●

3D データに関してはオープンソースの 3D モデル形式である glTF を扱える。これを Godot
側でインポートして 3 次元形状のノードを構成できる。アニメーションやボーンは Blenderなどの 3DCG ソフトで定義して出力する。glTF については章を改めて詳しく扱う。

●

OpenGLES に準拠したシェーダによるリアルタイム 3DCG 表現が可能である。

●

エンジン開発はオープンソースで進められている（Windows、MacOS、Linux で動作する）。

●

SDK の別インストールなどが条件となるが、モバイルの環境に出力可能である。モバイルの開発には開発者の証明書のインストール・セッティングが不可欠であり、本書の範疇を超えてしまった。
※2●

VR に関しても、AndroidSDK を経由して出力する。

●

本体と Windows 出力パッケージで 1GB 位と軽い。各環境によって容量は様々である。モバ
イルなどはそれぞれの SDK が必要である（概ね数 GB 程度）。

このように Godot はモバイルも含めた多くの環境への出力が可能なことからも大きな可能性を秘めたゲームエンジンである。また Godot の最も大きな特徴として、GDScript という Python 言語に近いスクリプトでプログラミングができる。Python 言語は学びやすく簡潔であるため、高等学校のコンピュータ教育の言語として試用されている [1]。また C# でのプログラミングも準備されている。併せて UnrealEngine のブループリントのようなノード接続によるビジュアルプログラ
ミングもできる。
ネットワークリソースを含んで基本的なことは網羅されているが、ゲームエンジンの基本を押さえたコンセプトであり、高度なことはプログラミングで補う必要がある。少なめであるがサンプルやアセットも準備されている。
プログラミングで一番大事なことは成果物が作れることや、どんな環境にも対応できる能力を身につけることである。本書では Godot でのチュートリアルを通じて 2D・3D のプログラミングを一通り学べるよう心がけたつもりである。公式のチュートリアルになじめなかった読者も気軽※1※2「Godot ドキュメント」https://docs.godotengine.org/ja/stable/index.html「Developing for Oculus Quest」https://docs.godotengine.org/ja/stable/tutorials/vr/
oculus_mobile/developing_for_oculus_quest.html

iii

に手に取って欲しい。本格的なゲームエンジンに取り組む前に、このようなサブセット的な軽い環境を学習し、基本を押さえて学びをすすめてもらいたい。
また本書は、神奈川工科大学の情報学部情報メディア学科の 2021 年度ゲームプログラミング
科目の提示資料を改稿したものである。この科目を受講した全ての学生諸君がいなければ、本書は完成していない。
また講義をすすめるにあたって、質問が多く寄せられたことも本書の礎となっている。また本書で扱っているサンプルデータは神奈川工科大学情報学部情報メディア学科の酒井研究室の有志「書籍データを作るのだチーム」から厚意で提供して頂いたものである。この場を借りて御礼を申し
上げる。
対象読者
●

ゲームエンジンを理解したい高校生、専門学校生、大学生。

●

プログラミングに関しては初心者でも構わないが、スクリプト言語を含めて何らかのコン
ピュータ言語の体験があると望ましい。Python 言語をおすすめする。

●

チュートリアルを通じて学ぶ方式が、自分に合っていると感じる読者。

●

Blender などの 3DCG を一通り（例：簡単な操作をマスターしてモデリングできる）操作できることが望ましい。

また Godot は MIT ライセンスであり、かなり自由度は高い。詳細は https://godotengine.org/

license を参照して欲しい。

Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.
Copyright (c) 2014-2021 Godot Engine contributors.

Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whom the Software isfurnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

iv

AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

-- Godot Engine <https://godotengine.org>

またGodot3.4ブランチのドキュメントのライセンスは以下のようになっている。本書も時折参照する。

Copyright(c) 2014-2022, Juan Linietsky, Ariel Manzur and the Godot community(CC-BY 3.0). Revision 17842f5c.

第 4 章、第 5 章、第 6 章、第 7 章、サンプルの忍者ゲームのデータのデータに関しては、Yuka
SHIMIZU によって、第 8 章のデータに関しては、Masahiro SAKAI によって、第 9 章、第 10 章、第 11 章のデータに関しては、Akika TAKADA によって CC0（クリエイティブコモンズ）によりラ
イセンスされている。
また、Godot のバージョンは、3.4.2 を本書を通して使用する。

v

目

次

目 次
はしがき.............................................................................................................................................. iii

第1章

ゲームエンジンを学ぶ目的：得点類型の実装 …… 1

1.1

ゲームプログラミングとは................................................................................................ 2

1.2

読者のみなさんは……......................................................................................................... 3

1.3

スキルの第一歩はなにか.................................................................................................... 4

第2章

Godot のインストールとデプロイ …… 7

2.1

ダウンロードとインストール........................................................................................... 8

2.2

サンプルプロジェクトのダウンロードと起動........................................................ 11

2.3

サンプルプロジェクトのテストプレイ...................................................................... 14

2.4............. 15
サンプルプロジェクトのエクスポート（実行形式出力、デプロイ）

第3章
3.1

vi

Godot のサンプルを通じた Python 言語に似た GDScript の
最低限のあらまし …… 21
GodotIDE の見方. ............................................................................................................... 22

3.1.1

全体の考え方..............................................................................................................22

3.1.2

ディレクトリのファイル構成..............................................................................24

3.1.3

シーンとノードの構成とインスペクタ............................................................25

3.2

スクリプトエディタの解説............................................................................................. 27

3.3

GDScript 早わかり. ............................................................................................................ 29

3.3.1

全体として：順接.....................................................................................................29

3.3.2

選択、繰り返し..........................................................................................................32

3.3.3

ゲームの改良で理解する.......................................................................................33

第4章

イチから 2D 衝突検出（コリジョン）サンプルを作る …… 35

4.1

Godot の挙動を復習しよう............................................................................................ 36

4.2

Godot の設計思想.............................................................................................................. 37

4.3

設計思想に準じていない Godot サンプルの考え方.............................................. 38

4.4

必要なリソースの入手...................................................................................................... 39

4.4.1

フォントの入手..........................................................................................................39

4.4.2

グラフィックスの入手............................................................................................40

4.5

プロジェクトの新規作成と設定. .................................................................................. 41

4.5.1

必要なデータのマージ............................................................................................44

4.5.2

Main シーンの設定と実行.....................................................................................45

4.6 「ノード」の追加。Player と Mob（敵）.................................................................... 49
4.6.1

Player と Mob のキャラクタ設定とコリジョン設定..................................51

4.6.2

衝突関係・コリジョン関係の明示と設定.......................................................54

4.6.3

Player の GDScript による制御............................................................................56

4.6.4

Mob の GDScript による制御................................................................................60

4.6.5

コリジョン発生の自己診断...................................................................................61

4.7

ゲームの開始と終了.......................................................................................................... 63

4.7.1

ノードの非表示..........................................................................................................63

4.7.2

日本語表示を可能にしたスタートボタンの配置..........................................64

4.7.3

他のノードのプロパティの取得..........................................................................68

4.7.4

初期化メソッドからの括り出し..........................................................................68

4.7.5

スタートボタンの挙動とその中身.....................................................................69

4.7.6

コリジョンの発生の Main での利用（ゲームの終了）...............................72

4.8

シグナルのまとめ............................................................................................................... 73

第5章
5.1

タイルマップと物理ノード …… 77
タイルマップ........................................................................................................................ 79

5.1.1

タイルマップの生成................................................................................................79

5.1.2

タイルの配置..............................................................................................................83

5.2

物理をサポートしたノード............................................................................................. 85

5.3

キー取得の 2 つの方法..................................................................................................... 87

5.3.1

公式のキーマップを使う方法..............................................................................87

5.3.2

直接的なキーイベントを使う方法.....................................................................88

5.4

物理演算ノードのプロセス............................................................................................. 90

vii

第6章
6.1

プロジェクトの設計、フォルダとデータのセットアップ. ................................ 94

6.2

シーン設計とプロジェクトの全体設計について.................................................... 95

6.3

Main シーンの設計............................................................................................................ 97

6.4

Main と SceneA の切替.................................................................................................... 98

6.5

Player の追加...................................................................................................................... 100

6.6

knai シーンの追加............................................................................................................ 101

6.7

Player の配置と knai の動的配置............................................................................... 103

6.8

Mob（敵）の追加............................................................................................................ 106

6.9

Mob の動的配置................................................................................................................ 107

第7章

3D ゲームの基礎：3D ノードのコリジョン …… 113

7.1

GodotIDE の 3D モードの操作留意点....................................................................... 115

7.2

Main シーンの設定.......................................................................................................... 116

7.3

Player シーンの設定........................................................................................................ 120

7.4

Mob シーンの設定........................................................................................................... 127

7.5

Player、Mob のコリジョンレイヤの設定............................................................... 128

7.6

Mob のスクリプト........................................................................................................... 129

7.7

Player と Mob のシグナル............................................................................................ 131

第8章

viii

動的なシーンの設計手法 …… 93

Godot における 3DCG のファイル形式と Blender からのエクスポート …… 137

8.1

glTF とは.............................................................................................................................. 138

8.2

glTF の詳細.......................................................................................................................... 139

8.3

glTF の留意点..................................................................................................................... 142

8.4

glTF の Blender でのエクスポート............................................................................ 143

8.5

自作 3DCG の Godot へのインポートとハンドリング....................................... 146

第9章

アニメーションが複数含まれるデータのコントロール …… 153

9.1

Godot へのインポート................................................................................................... 154

9.2

UI キーの設定と呼び出し.............................................................................................. 158

9.3

アニメーションの制御コード...................................................................................... 159

第 10 章背景としての 3D モデル …… 161

10.1

インポートテスト用プロジェクトの準備............................................................. 162

10.2

glTF のプロジェクトへの登録と地面データのコリジョン生成................... 163

10.3

仮の Player の定義と設定........................................................................................... 167

10.4

効果の確認........................................................................................................................ 170

10.5

キャラクタと地形データを合成したプロジェクトの作成............................. 171

第 11 章3D の Gridmap …… 175

11.1

Gridmap テスト用のプロジェクトの設定............................................................ 176

11.2

MeshLibrary の作成と 3D データのインポート................................................. 177

11.3

GridMap の生成と 3D データの配置...................................................................... 181

11.4

GridMap への Player の配置...................................................................................... 184

第 12 章技法のまとめと本書で扱えなかったこと …… 187

12.1

シーンのプロジェクトへの連結............................................................................... 188

12.2

スプライトアニメーション........................................................................................ 189

12.3

3D：レンダリングやシェーダ.................................................................................. 190

12.4

サウンド............................................................................................................................ 193

12.5

Godot の今後................................................................................................................... 193

あとがき.......................................................................................................................................... 195
参考文献.......................................................................................................................................... 196

ix

付 録

…… 197

付録 A

GDScript まとめ......................................................................................................... 198

付録 B

プロジェクト検索キーワード............................................................................... 200

付録 C

2D ノード...................................................................................................................... 201

付録 D

3D ノード..................................................................................................................... 203

付録 E

ライセンス：フリーデータを扱う際に気をつけること.............................. 204

索 引................................................................................................................................................. 207

x

1
ゲームエンジンを学ぶ目的：
得点類型の実装

1

ゲームエンジンを学ぶ目的：得点類型の実装

1.1 ゲームプログラミングとは
1.1 ゲームプログラミングとはとても乱暴かもしれないが、ビデオゲーム、もしくは電子ゲームとは「ハードウエア、もしくはソフトウエアでプレーヤが得点する様々な方法を提供する」こととしてみよう。
もちろんビデオゲームのジャンルは非常に多く、そのジャンルの中で大まかなプレーヤの得点
方法の「類型」があって、それを踏襲してゲームデザインが決まってくる。例えばジャンルの一つに「Platformer」がある。今となってはとても簡単なシステムである。
横スクロール型のステージがあり、プレーヤをジャンプさせつつ、穴などに落ちないようにして、迫ってくる敵を倒して得点し、ステージをクリアしていく。この部分が得点の「類型」にあたる。得点のベースにはキャラクタの接触（コリジョン）がある。プレーヤが敵を踏みつけるコ
リジョンは敵の消滅と得点を生む。敵に正面から当たれば、プレーヤは死んでしまう。この見慣れたタイプの得点システムは、一つの「類型」として、プレーヤに受け入れられ、応用デザインが生まれてきた。よくゲームのプログラミングにはこの platformer が例題で出てくる。本書も同様である。またゲームには、直接得点に結びつかなくても、条件達成によるレベルのアップや、ガチャによるアイテムの獲得などもある。これも大きく俯瞰して考えれば「得点類型の拡張」と考えることができるだろう。
ゲームはそもそも「マニュアルレス」なものである。筆者の記憶では 1990 年代初めには、ゲームは開始直後から 1 タームは「チュートリアル」が実施されるようになった。その中でゲームの操作方法をはじめとする「システム」を理解させる必要がある。その際に「バトル」等の「得点の方法」を理解させた上で、ユーザを引きつける必要がある。この場合の「引きつける」をもう少し細かく説明すると、そのチュートリアルの中で「ストーリ」や「ミッション」を伝え、得点を重ねることでレベルが上がりミッションを達成するという経験を通じてゲーム継続の「興味」を抱かせることにある。であれば、短いチュートリアルの中で重要なことは、できるだけプレー
ヤのゲーム体験「得点類型」に寄り添って「攻略の展望」を認識させることでもある。
当然この得点類型には難度も含まれる。ゲームバランスは得点類型と難度のバランスである。
得点の方法が理解できても、スピードが速くなればクリアができない。敵がうじゃうじゃ出てき
てよけきれないようではクリアはできない。難度が高くてもクリアできるポイントが作ってあれ
ば「無理ゲー」にはならない（人生もクリアできるポイントが作ってあってそれが見えればいいのに）。その点でみると「クソゲー」の定義もはっきりする。いわゆるクソゲーとは突然難度を厳しくし、クリアしにくくして、ゲームバランスの逸脱が明らかに見えてしまうと、ユーザは流石にやる気をなくしてしまう。この点はクソゲーの一要素でしかないが、その点がゲームづくりのポイントとも言えるだろう。

2

1.2

読者のみなさんは……

いささか脱線気味になったが、ゲームエンジンとは「得点類型」を設計し実装するためにある

1とは言える。操作性のテストも、その得点類型をいかにスムーズにストレスなく体験させるかに重点を置くべきであろう。

23

1.2 読者のみなさんは……

4

1.2 読者のみなさんは……

5

読者のみなさんは非常に多くのゲームを体験してきて「得点類型」の経験を多く積んでいるはずである。ゲームを作ってみたいという動機は、自分なりの得点システムをこしらえてみたいと
多少なりとも思っているはずである。でなければゲームをプログラミングすることを目的とし6たこの本を手に取るはずがない。みなさんは小さな時から「デジタルネイティブ」（英語圏ではGen-Z：Z 世代）であり、非常に高度で完成されたコンテンツを消費し目が肥えている。また、み7

なさんはゲームを由来とするいくつもの愛でるべき物語があって、その世界を楽しんでいるはずである。
単純な「得点類型」の体験であったはずなのに、高度なコンテンツを大量かつ長時間消費しゲー

8

ムの経験が蓄積されることで、みなさんの体験は考え方を変えるまでになっているはずである。
詳細で美麗なゲームグラフィックスやモチベーションを高めるゲームサウンドの効果も相まって、

9

内的なゲームの経験は好みの「世界観」と名を変えてしまっているかもしれない。その世界観はなかなか親の世代や筆者のような大学教員には理解されないことが多い。みなさんはきっと、あ10る程度の年齢がはなれたその世界に嗜みのない人たちには、理解できないと思っているだろうし、
おそらくそれは正しい（なぜならその人達はみなさんと同じようなゲームの体験がないからであ
る）
。

11

ちょっと、みなさんが考えているその世界を図にしてみた（図 1.1）
。

12
13

付録

3

1

ゲームエンジンを学ぶ目的：得点類型の実装

やりこみ：時間、思い入れ
ゲームの経験

好みのデザイン
得点類型

ゲームに対しての見方

和ゲー
洋ゲー・ローカライズ

デザインテイスト
世界観

既存のコンテンツへのスピンアウト：ラノベ・アニメ

図1.1●ゲームによる世界観の生成

この図では、みなさんは既にゲームコンテンツ（得点類型）の消費を通じて、世界観に関しては非常に深い知識と経験を積んでいる点を描いている。みなさんの経験は「世界観」に昇華してしまっている。例を示せば、みなさんは古いコンテンツ（アニメや映画）からのゲームのフィードバック（移植）や、ゲームコンテンツから他のメディアへのエクスポート（例：ドラマ化・ア
ニメ化・映画化）もよく知っていると思うし、その世界観もゲーム企画に活かせるだけの知識や、ひょっとしたらコンテンツの保有会社にプレゼンできる知識と熱量を持っているかもしれない。

1.3 スキルの第一歩はなにか
1.3 スキルの第一歩はなにか
この図から考えると、みなさんのゲームへの情熱は既に大きな概念に昇華してしまっている。
しかし出発点は「得点類型の体験」であったはずで、みなさんが立ち返って身につけるべきスキ
ルは、沢山の得点類型のデザインとその実装方法であるはずだ（デザインやサウンドは本書の範疇から外れるので取り扱えない）。とすればプログラマ（が第一志望のみなさん）が、まず目指す
べきスキルは得点類型の実装である。そのための道具を得て、実験をしてプロトタイプを作り、それがプレーヤに受け入れられるか試し続けなくてはならない。つまり、みなさんがゲームエンジンを学ぶ目的はどんなエンジンであれ「得点類型実装」の練習をし続ける道具を得ることだ。
もう一つ言及をしなければならないことは、IT の世界の代謝が非常に早いということだ。2008
年頃に世界的にモバイルの普及が開始されて、十数年経つがほぼ毎年 OS はリプレスされてきた。
そのたびに機能は増え、古くからある機能も大きく改まり複雑化して、API の学び直しが必要に

4

1.3

スキルの第一歩はなにかなった。つまりゲーム分野に限らずプログラマを続ける限り「勉強のやり直し」は起きて、その1

情報は実装方法に限定すると、教科書であることは少なくほぼネットにある（学問では違うことは起きるが、IT の実装はググる→ Qiita※1などをあたるはずだ）。そこで正しい道を選ぶのは自分

2で、それをミスすると膨大な時間を無駄にする。この正しい道の鑑識眼の獲得は慣れと訓練が必要である。何度も繰り返し作品を作って慣れていってもらいたい。
また、沢山の試作や作品を作ることは就職活動には有利である。大学生の就職活動にはいつの3頃からか、経験者の転職の際に求められる「職務経歴書」にあたる「ポートフォリオ」があると活動に有利になるとされてきた。Godot がみなさんの経験を支えて、試作をストックし「作品帳：4

ポートフォリオ」を整備する手助けになれば幸いに思う。

5
6
7
8
9
10
11
12
13

付録

※1

「Qiita」https://qiita.com/（エンジニアに関する知識を記録・共有するためのサービス）

5

第2章

Godot のインストールとデプロイ

2Godot のインストールとデプロイ
この章で学べること●

Godot のダウンロードとインストール●

Godot で作成したゲームのデプロイ

2Godot のインストールとデプロイ

2.1 ダウンロードとインストール
2.1 ダウンロードとインストール
Godot のインストールは特別な ID 管理も無く簡単である。ブラウザは日本語翻訳機能が標準化されている、Google Chrome を推奨する。まず Google で検索をする（図 2.1）。

図2.1●Godotの検索

Godot のホームページがわかったら、そこにジャンプする（図 2.2）。

図2.2●Godotの結果

8

2.1

ダウンロードとインストール

Godot の公式ホームページを図 2.3 に示す。Godot のアプリケーションダウンロード先は

1「download」で示されている。

2345
図2.3●Godot公式ホームページ

6

ダウンロード先で自分の環境にあったものを選択しよう（図 2.4）
。本書では WindowsOS 向けの Godot について解説する。

7
8
9
10
11

図2.4●ダウンロードの選択

ダウンロードフォルダに Godot が入れられる（図 2.5）
。

12
13

図2.5●ダウンロード中
付録

9

2

Godot のインストールとデプロイ

ダウンロードファイルは zip ファイルである。このファイルをダブルクリックで開き、本体を確（図 2.6）。
認する。本体は Godot-v3.x.x-stable-win64.exe（環境やバージョンによって異なる）

図2.6●ダウンロードファイル

exe 本体をデスクトップにファイルをドラッグアンドドロップする（図 2.7）
。セキュリティを強化している場合などは、インストールができないなどのエラーが出るかもしれない。そのような場合はセキュリティを調整して対処しよう。

図2.7●ファイルの移動

インストールは以上である。アプリケーションは Windows は 10、11 いずれでも動作する。

10