最近、ゲームエンジンのライセンスやプランの話が活発です。そこで今回はMITライセンスで提供されており、Windows/macOS/Linuxなどで動き、様々なプラットフォームのゲームを生成可能なゲームエンジン「Godot Engine 」について紹介しましょう。
図1 少しチュートリアルを実施するだけで、ランダムに登場する敵からひたすら逃げるだけのゲームが作れる
ゲームエンジンとGodot
昨今のゲームの大半は、なにがしかの「ゲームエンジン」を利用して作られています。これはゲーム開発において、共用できるような処理や仕組み・リソースなどを活用することで、できるだけ開発を効率化することが主な目的です。今では初心者が何かゲームを作りたい場合も、いずれかのゲームエンジンの導入がファーストステップとなっています。
現在マルチプラットフォームに対応し、PC向けにも広く使われているゲームエンジンとしては、Ubuntuの文脈でその名前を出すといろいろ混乱が生じてしまう「Unity 」や、親会社がなんかいろいろ訴訟している印象の「Unreal Engine 」などが有名でしょう[1] 。これらはゲームの進化に応じて、ゲームエンジン側も高度に進化し、高機能化・複雑化しています。結果的にゲームエンジンの開発そのものも、大きなお金が必要になる作業になっているのです。
とは言うものの、ゲームエンジンもまた「使われてなんぼ」の世界です。よって比較的安価に(ほぼ無料に近い状態で)使い始めることは可能です。実はUnityもUnreal Engineも、Ubuntuを含むLinuxでの開発をサポートしていたりします。
「みんなが使っているもの」「 インターネット上に解説が多いもの」を使って開発することは、特に初心者にとっては重要な行為です。よって、「 趣味でゲームを作ってみたい」と思うのであればUnityやUnreal Engineを使うことを否定するわけではありません。むしろ積極的に推奨したいところです。
という建前は置いておいて、本連載を読んでくれるような酔狂な読者(注:褒め言葉)であれば、もちろん「FLOSS(Free/Libre and Open Source Software)である」こともまた、重要な要素となりうることは理解してもらえるでしょう。仕事ならともかく、趣味でやるなら道具から本気でこだわりたいですよね。
さて、Godot Engineの話に戻ります[2] 。これはLinuxやWindows、macOSで開発でき、2D/3Dをサポートし、Linux・Windows・macOS・Android・iOS・Web向けのゲームを作成できるゲームエンジンです[3] 。MITライセンスで提供されている、正真正銘の「オープンソース」であり、.NETベースで開発されています[4] 。
[2] 正式名称はおそらく「Godot Engine」です。ただしドキュメントには「Godot」もよく出てきており、どのように使い分けているのかはわかりませんでした。大抵の場合は「Godot」で済ませることが多いようです。ちなみに名前の由来は「ゴドーを待ちながら」とのこと なので、日本だと「ごどー」との発音が一般的だと思います。
公式のドキュメント やその日本語版 も充実しており、初めて触るならとりあえずこのドキュメントの入門やチュートリアルを一通り読んでおけば十分なほどです。なお、今年リリースされたGodot 4.x系はその前のGodot 3.x系に比べて変更箇所が多いため、ドキュメントを読む場合は注意してください。特に日本語版は今のところ3.2が最新版となっています。Weblateでの翻訳を行っているようなので、まずはドキュメントの翻訳から貢献してみるのも良いかもしれません。
Godotは公式の開発言語としてはPythonに似た独自のGDScript、C#、C++から選択可能です。初心者向けにはGDScriptがおすすめとなっています。ただしGDScriptはあくまでプロトタイピング用途だという点には注意が必要です。また、コミュニティでは各種言語のバインディングも開発されており、好きな言語を使って開発することも原理的には可能です。たとえばRustを使いたいのであれば、godot-rust を使うことになります。
Godotでどんなゲームが作れるかは、公式ブログでGodot製のゲームを紹介している「showcaseカテゴリの記事 」を読むと良いでしょう。
Godotのインストール
Godotのインストール方法は複数存在します。
SteamないしFlathubを使っているなら、そこからインストールするのが簡単です。Ubuntu上でどちらも使っていないのであれば、非公式のSnapパッケージを使うという手もあります。これはCanonicalのKen VanDineが作成しているパッケージ で、単に公式のリリースページにあるバイナリを展開して依存関係を解決しただけのものです[5] 。
[5] Godot公式のsnapパッケージもあるのですが、3.1で止まっています。Issueを見る限り 、Canonicalの人以外がSnapパッケージを公開する際の不自由さがそのまま、誰も手を出せない状況を導き出した感じです。
今回は一番手っ取り早いSnapパッケージで試してみましょう。他のフォーマット、インストール方法が異なるだけなので、そこから先はすべて同じ手順となります。
$ sudo snap install godot-4
なおsnap版でインストールされるのは、2023年9月時点でまだ4.0です。4.1を試したければ「--edge
」オプションをつけてインストールしましょう。これでインストールは完了です。Dashで「godot」を検索してアプリを立ち上げてみてください。
図2 初回起動時はアセットライブラリを開くかどうか質問される
プロジェクトが何も登録されていないと、「 アセットライブラリ」からGodotのバージョンに応じたサンプルプログラムをダウンロードするかを質問されます。今回はキャンセルで問題ありません。ちなみにあとからダウンロード画面に遷移したい場合は「アセットライブラリのプロジェクト」タブを開いてください。
図3 「 新規プロジェクト」ボタンを押した場合のプロジェクト作成画面
保存場所はsnap用のディレクトリになっていますが、ホームディレクトリの任意の場所に変更することも可能です。「 レンダラー」は生成するソフトウェアの種別だと思っておけば良いでしょう。「 Forward+」はデスクトップ向けの3D機能をしっかり活用するソフトウェア、「 モバイル」はデスクトップとモバイルの両方に対応し3Dも利用可能なソフトウェア、「 互換性」は複数のプラットフォームの互換性を重視したモードになります。レンダラーに関しては後からでも変更可能です。
図4 プロジェクト作成後の画面
プロジェクト作成後は広大な3D空間が眼の前に広がります。初心者はこの状態にいきなり放り込まれて、頭を抱えるわけです。でも、Godotなら大丈夫。初心者でもステップバイステップでゲームを作成できるチュートリアル(2D向け(英語) と2D向け(日本語) 、3D向け(英語) と3D向け(日本語) が存在します[6] 。安心してください。
[6] ちなみに筆者は、チュートリアルの結構な場所で躓きました。チュートリアルでは一度説明した手順はできる限り簡略化して説明する体裁で書いていること、変更を説明しているUIの位置がわかりにくかったりすることが主な理由です。ただしこの手のチュートリアルとしては、かなり丁寧に書かれている部類です。世に名だたるプロの初心者の皆様におかれましては、じっくりと読めば問題なく完走するはずです。参照するドキュメントは日本語でも大丈夫ですが、4.x系だと書き方が異なる部分がちょくちょく出てきます。4.x系の日本語ドキュメントが完成するまでは、地の文は日本語版を参照しつつコードやスクリーンショットは英語版を見る、みたいな方法も良いかもしれません。
Godotのエディターは日本語に対応しています。ただし残念ながらsnap版のGodotは中華系のフォントを使ってしまうため、すごく読みづらくなっています。メイン画面の「エディター」の「エディター設定」から、表示言語かメインのフォントを変更すると良いでしょう。
フォントファイルは「~/snap/godot-4/common/
」以下に配置しておくと選択しやすくて便利です。同じ方法でコードのフォントも設定できるため、好みのフォントを使いましょう。
Godotのサンプルコードのインストール
「チュートリアルなんてやってられない、とりあえずサンプルを試させろ」という愛すべきずぼらなあなたのためにサンプルコードのリポジトリ が存在します。これをインポートしてしまえば、面倒なコーディングをしなくても一発で動かせるのです。さっそくダウンロードしてみましょう。
まずはホームディレクトリ以下の適当な場所にコードをクローンします。
$ mkdir -p ~/temp/godot
$ cd ~/temp/godot/
$ git clone https://github.com/godotengine/godot-demo-projects.git
$ cd godot-demo-projects/
$ git checkout 4.0
サンプルコードはバージョンごとにブランチが切られています。Godot 4.0を使うなら上記のように「4.0」ブランチを、4.1を使うなら「4.1」ブランチを指定してください。
次にGodotを起動して「インポート」ボタンを選択してください。すでに起動済みなら「プロジェクト」メニューの「終了してプロジェクト一覧を開く」を選択すれば自動的に再起動してくれます。インポートのダイアログが開いたら「参照」ボタンを押して、プロジェクトのディレクトリを探します。
図5 Godotの場合、拡張子が「godot」のファイルがプロジェクトファイルとなる
2D版のチュートリアルのゲームだと、先ほどのディレクトリの下の「2d/dodge_the_creeps/project.godot
」がそれに該当します。それを選択して「開く」ボタンを押し、さらに「インポートして編集」を押しましょう。
図6 すべてのリソースと各種設定が完了した状態の画面が表示される
図7 画面上の「Script」を選択すると、GDScriptによる実装も完了済みであることがわかる
すぐにプレイすることも可能です。画面右上にある再生ボタン(プロジェクトを実行)を押すか、F5 キーを押してください。これでゲームが開始します。
理由もわからず、ただひたすら敵を避けていくだけのゲーム。おそらくこの目玉のようなものは大事な積荷か重要人物を載せた宇宙船かなにかで、帝国の捜索部隊から必死に逃げているのだと思われる。ちなみに動画は映像だけだが、実際にプレイした場合に流れるBGMのタイトルは「House In A Forest」。
スペースキーでゲームを開始できます。あとはカーソルキーでひたすら敵を避けてください。敵にかすったらゲーム終了です。当たり判定は初心者には厳し目です。というか3種類存在する敵のうち1種類の形状だけを元に、全種類で同じ当たり判定が設定されているため、足が長くて泳いでいる敵に対しては、ギリギリで避けれたとしてもアウトです。
最後にこのゲームの実行ファイルを生成しましょう。まず「プロジェクト」メニューのエクスポートを選択して、エクスポートダイアログを表示します。「 追加」ボタンからエクスポート先を選択します。
図8 エクスポートダイアログからは各種プラットフォーム向けを選択できる
図9 Linux/X11を選択するものの、エラーが表示される
実際にエクスポートするためには必要なツールとテンプレートファイルが必要です。上記のメッセージが表示されたら「エクスポートの管理」を選択しましょう。
図10 テンプレートマネージャーで「ダウンロードしてインストール」を選択すれば公式が提供するテンプレートを導入できる
図11 テンプレート導入後は、「 エクスポート先のパス」を指定した上でエクスポートすれば実行ファイルの生成完了
「プロジェクトのエクスポート」で、実行形式のファイルを生成できます。Godotがない環境でもプレイできるようになりました。
なお、3D版のデモは4.0ブランチには存在しません。masterブランチの内容でもGodot 4.0で動作するので、試してみたいならmasterブランチに切り替えた上で「3d/squash_the_creeps/project.godot
」を開くと良いでしょう。
図12 3D版は、見た目としてはキャラクターが3D化されて、心なしか見下ろし視点になっただけ
Godotは個人がちょっとしたゲームを作るなら十分な機能と品質を備えています。他のゲームエンジンと同じように学習コストは高いのですが、ある程度慣れてしまえばあとはデザインとセンスと根気と体力と時間と運だけの問題です。ぜひ、Ubuntuでも楽しめるゲームを、この世界にもたらしてください。そんな世界が来るのを待っています。ゴドーを待つ二人のように。