Godot 情報 探し方

## 挨拶

皆さん [Godot Engine](https://godotengine.org/) 使ってますか？　この記事を見に来たということは Godot については耳にした事があるかと思いますが、念の為 Godot について説明しましょう。

Godot とは MIT ライセンスで公開されているオープンソースのゲームエンジンです。数年前に Godot 3.0 で 3D に対応して話題になりましたが、そろそろ Godot 4.0 が出るという事でまた盛り上がりを見せています。

最近、日本語でも Godot の記事や感想などを見かけるようになってきてはいますが、その中でよく触れられているのが『日本語の情報が少ない』という事です。確かにその通りなのですが、近年はブラウザの翻訳機能も成長してきているので、それだけを理由に Godot の利用を忌避するのは勿体ないと感じます。

とはいえ、有用な情報はある所にしかありません。自動翻訳を使うにしても、正しい英語の情報を見つける事ができなければ始まりません。という事で今回は、自分が欲しい Godot の情報を正しく探すための方法を僕個人の経験を元に紹介します。

## ケースごとの情報の探し方

### プログラミングのやり方やゲームの作り方が分からない

今までツクール系列やノベルゲーム作成ツールのような物しか触った事のない人は、恐らくここで躓くと思います。残念ながら、そのようなケースについてここでアドバイスするのは中々難しいのですが……とりあえず『何らかのプログラミングのチュートリアル』をこなすのが先決だと思います。

これについては別に Godot を使用する必要はないと考えていますが（ノードエディタとかは除く）、Godot に限定するのであれば以下に挙げる物が有用です。

https://docs.godotengine.org/ja/latest/community/tutorials.html

https://www.gdquest.com/tutorial/

チュートリアルがリッチすぎるという人は『Javascript で九九の表をブラウザに出力する』というような所から初めるのもよいでしょう。

そもそも、ここがクリアできないと何の情報を探せばよいかの判断も不可能に近いので、まずはチュートリアルをこなしたり、既に出来上がっているプログラムを少し書き換えたりして経験を積むのが重要です。色々触っているうちに、Godot の長所や短所を見つけることが出来るようになり、自分が本当に Godot を使うべきなのかどうかも分かってくる筈です。

### どのような関数を使えばいいか分からない

『プログラミングにはそこそこ慣れてきた』あるいは『事務系の社内ツールは開発した事があるがゲームプログラミングの経験はあまりない』といった人がぶつかるのがこの壁でしょう。というのも、ゲームプログラミングには数学が絡む事が多く、求める機能を実現するために、どのような数式・関数が利用できるか把握しておかねばならないのです。

これについては、自分が知っている限りでは以下のサイトが最適解**でした**。

https://hakuhin.jp/as.html

見ての通り Godot のチュートリアルサイトではないのですが、知る限り、ゲームプログラミングについてここまで<INS>逆引きで有用な情報がまとまった</INS>サイトは他にありません。「これの Godot 版があれば良いのに……」みたいな事を Godot Engine 日本コミュニティの Discord サーバーを管理している [Saitos](https://twitter.com/Saitos620) 氏と以前会話したのを覚えています。（余談ですが Saitos 氏も Flash 畑の出身らしく、Action Script と Godot は結構近い所がある……みたいな話で盛り上がりました）

残念ながら Flash のサポートが終わってしまったことで、実際に動くサンプルを見るのが難しくなってはいますが、スクリプト解説などのテキストは残されており、まだまだ有用です。また一応、[Flash Player Emulator](https://chrome.google.com/webstore/detail/flash-player-emulator-202/ecbnojockcgfohpopbphhgefkfbigcej?hl=ja) というブラウザ拡張なんかもあるようなので、あくまで自己責任ということでそれらを利用すれば、サンプルを確認することもできるでしょう。

ある程度どのような数式・関数を利用すればよいか絞り込めれば、Godot Docs や Class Reference でそれを探すだけです。

https://docs.godotengine.org/ja/stable/index.html

https://docs.godotengine.org/ja/stable/classes/index.html

ちなみに、**型の指定さえしていれば Godot のコードエディタ上で `Ctrl + Left Click` により該当の Class Reference を見ることができます**。なので GDScript を利用する場合であっても基本的に型をつける習慣を身に付ける事を僕は推奨しています。

### バグや想定しない動作により実装に詰まってしまった

これは Godot に限らず、ゲームエンジンを利用しているとずっと付きまとう問題になります。そして、問題解決に関する情報というのはユーザー数に比例して増えていくものであって、日本での Godot のシェアの低さが日本語の情報の少なさとして顕著に表れています。

つまり、ここからは基本的に英語の情報を探す必要性が出てきます。

#### バグっぽい場合

まず第一にすべき事は、それがバグかどうかを GitHub の Godot のリポジトリで調べることです。

https://github.com/godotengine/godot/issues?q=


クラス名・関数名・プロパティ名などで検索してみて、それでも見つからなければラベルを辿って問題を探します。

https://github.com/godotengine/godot/labels

この時、<INS>3.x で発生していたけど 4.0 で修正された問題に関しては既に Closed になっている可能性がある</INS>ので、Closed になっている Issue も確認する事が重要です。

Godot のリポジトリで求めている情報が見つからない場合、 Proposal（機能提案用リポジトリ）の方に探している情報があるかもしれないのでそちらも検索してみて下さい。

https://github.com/godotengine/godot-proposals

#### 実装方法が分からない場合

実装方法に悩んでいる場合は以下のような Q&A サイトで情報を探すことになります。

https://www.reddit.com/r/godot/

https://godotengine.org/qa/

ですが、これらのサイトを検索するのであれば Google 検索でも十分です。

#### どうしても目的の情報が見つからなかった場合

上記の手段を用いても目的の情報に辿りつくことができなかった場合、『バグっぽい』もしくは『現在の Godot の実装では自分のユースケースが実現できない』というような状況であれば、Godot のリポジトリに Issue を立てる事をオススメします。

意外とみんな Issue を巡回しているので、それがダブっている Issue であればリンクが貼られて速攻閉じられますし、それは提案にした方がいいというのであれば Proposal の方に Issue を改めて書くように誘導されます。もちろんそれがバグなら修正に取り掛かる事ができるので、Godot ほどの大きな OSS プロジェクトであれば、SNS に文句を書きこむよりは Issue を書くほうがはるかに建設的です。

実装方法に悩んでいる場合は Reddit もしくは Godot Q&A で質問する事になります。ただ、英語が苦手な人にとっては Reddit のような SNS ライクな場所で質問するのは Issue を立てるよりも難しい事だと思いますし、Godot Q&A もそれほど活発ではないので、Godot 日本コミュニティの Discord サーバーなんかで質問するのが一番手軽でしょう。

https://discord.gg/DyFvSJZ

### Godot 4.0 もしくはそれ以降の最新の開発状況が知りたい

Godot の開発者が普段どこで活動しているかというのは人それぞれですが、とりあえず Godot のリポジトリをざっと眺めてるだけでもなんとなく「これは対応中なんだな」とか「これは 4.1 以降とかになりそうだな」という事は分かってきます。

特に最新バージョンで対応中の問題については以下の場所に Roadmap としてまとめられています。

https://github.com/orgs/godotengine/projects/28

そして、より具体的に開発の流れを追いたいのであれば、Godot Contributors Chat で該当分野のチャンネルのログを眺めるのがよいでしょう。

https://chat.godotengine.org/

https://godotengine.org/article/new-communication-platform-godot-contributors

Contributor でなくても参加してログを見ている分には全く問題ありません。ただし、**あくまで Core 開発のためのコミュニケーションツールですので、エンジン自体に関係のないゲームの実装に関する質問や、バグかどうかの判断を仰ぐような事はしないようにして下さい**。

> Finally, we'd like to reiterate that this platform is the communication platform for engine contributors, and not the primary user support community.

特に厳しい罰則なんかはありませんが、それに対する回答が返ってくることはなく「ここはそういう質問をする場所じゃないよ」というように諭されている場面を何度か見かけました。


ちなみに 3D キャラクターモデルの制御や VR のような分野については [V-Sekai](https://v-sekai.org/) という Godot 製の VR プラットフォームの Discord サーバーが一番情報が早いと思っています。一応日本語チャンネルもあるので、Godot で 3D キャラクターモデルを利用したゲームを作ろうかと考えている人は気軽に参加してみましょう。

https://v-sekai.org/

https://github.com/V-Sekai

## 後書き

本音を話すと、特定のプログラミング言語に固執したり、英語を毛嫌いするような人はそもそもプログラマーに向いていないように思っています。それらはあくまで『好き嫌い』や『得意不得意』という範疇におさめておくべきで、とりあえず実際に触ってみて、実装に悩んだり Issue を書いたり、時には激しい議論をして妥協案を見つけるというような行動を起こしていくのが、日々変化する技術についていくプログラマーに求められる姿勢なのではないでしょうか。なので、今回こうして『Godot に限らないゲーム制作に役立つサイト』や『英語での Godot の情報の探し方』を紹介させて貰いました。

この記事が Godot の利用を考えている全ての人の参考になるかどうかは分かりませんが、これを読んで Godot に興味を持ち、実際にゲームを開発したり Godot Engine 自体の開発に参加する人が増えてくれれば幸いです。

https://docs.godotengine.org/ja/stable/community/contributing/ways_to_contribute.html