Godot Engineを使うメリット・デメリット

この記事では、Godot Engineでゲーム開発を行うメリット・デメリットについて、ネット上の意見や個人的な利点などを踏まえて解説したいと思います

メリット・デメリットの要点

要点だけ先に書いておくと、メリットは以下のとおりです

  1. 動作が軽いので性能の低いPCやノートPCなどで快適に動く
  2. 2Dゲームに向いている(特に2Dプラットフォーマー)
  3. 後発だけあって、設計がシンプルで洗練されている

デメリットは以下の通りです

  1. いくつかの機能(特に3D周りなど)がUnityや Unreal と比べるとまだまだ発展途上
  2. ゲームで使用できるアセットやチュートリアルの絶対数が少ない
  3. 新しめのゲームエンジンなので、本当に知りたい情報がまだまだ少ない
  4. コンソールゲーム機をサポートしていない (※)

※ 2022.8.10 に「W4 Games」というGodot開発者による公式の会社が設立されました。これにより、おそらく有料ですが公式にコンソール向けの出力がサポートされることになります。

メリット

1. 低スペックPCでも動作する

ゲーム開発する人は、たいていそれなりのスペックのPCを使っているので、このメリットの恩恵を受けられるかどうかわかりませんが、動作が軽いと開発を気軽に始められるメリットがあります。サイズが小さいので、開発環境のインストールも爆速です。

個人的には低スペックなノートPCで開発しているので、低スペックPCでも快適に動かせるのはありがたいです。それと、エディタのすべての機能が1画面に収まるのが良いですね。

1画面で完結する

もちろん、お気に入りのスクリプトエディタ(VS Codeなど)があれば、外部エディタとして使用することもできます。

2. 2Dゲームに向いている

Godotでは、ピクセルベース(ドット絵)のゲームを作る場合、XY軸のピクセル単位であるため座標処理が扱いやすく、またタイルマップエディタが内包されていて、タイルベースの2Dゲームが圧倒的に作りやすいです。

タイルエディタが内包されていて
コリジョンの設定も簡単。
クォータビューのゲームも作りやすい

Unityで2Dゲームを作る場合、頑張って自作したり、別途アセットを購入しないと開発効率が良くなかったりするので、このあたりデフォルト機能でできる Godot がやや有利です。

また、2Dゲーム用の便利なコリジョン判定関数(KinematicBody2Dのmove_and_slide() など)が色々用意されていて、ちょっとしたテストプロジェクトを作って、実験するのにも都合が良いです。

3. シンプルな設計。洗練されたノードシステム

Godotの機能は、ノードを組み合わせることで実現できます。Unityのコンポーネント指向と比べて、ノードの階層で全体を見渡せるので、個人的にはわかりやすいシステムと考えています(このあたりは好みの問題もありそうですが)

その他、プロジェクトに関連する設定ファイルが基本的にテキストファイルで可読性があり、バージョン管理しやすいのがお気に入りです。

以下、プロジェクトファイルをテキストエディタで開いたものです

config_version=4

[application]

config/name="Test"
config/icon="res://icon.png"

[physics]

common/enable_pause_aware_picking=true

[rendering]

environment/default_environment="res://default_env.tres"

Godotの設定ファイルは INIファイル形式に近く、非常に読みやすいです。(最近の傾向だと設定ファイルは XMLやJsonなどで記述されることが多く可読性が低いです)

このあたりはエンジニア目線ではありますが、なにか問題があったときに、テキストエディタで差分を比較して原因を特定しやすいのは、とても良いですね。

それと、Godotの設計哲学に、基本的にエンジン内で可能な完結する「オールインワン・パッケージ」の思想があります。

Godotは最も一般的なニーズに答えるために、備えているツールを提供しようとします。専用のスクリプトワークスペース、アニメーションエディタ、タイルマップエディタ、シェーダエディタ、デバッガ、プロファイラ、ローカルおよびリモートデバイス上でのホットリロードなどが可能です。

Godotの設計哲学 – オールインワン・パッケージ

タイルマップやスクリプトエディタ、シェーダーエディタなどがエンジン内で扱えるのもこのあたりの思想によるものです。

あと、シェーダーコードの変更がリアルタイムで確認できるのも、Godotのメリットと言えます。

シェーダーは見た目の調整で時間がかかるので、このあたり非常にありがたいですね

デメリット

1. いくつかの機能が Unity や Unreal などと比べると発展途上

UnityやUnrealは普通に商用ゲームのツールとして長年使われていますし、開発規模や年数、ユーザー数などに大きな差があるので、比較するのは酷……ではありますが、どうしても一部の性能に大きく差があります。

例えば、3D機能。個人的には3D機能は使わないのであまり詳しくないですが、ネット上の意見を見る限り、3Dデータのインポートの互換性や3Dレンダリング性能に不満を持っているユーザーは少なくない印象です。ただ、バージョン4.0以降でそのあたり大きく改善されるようなので、Godot Engineで3Dゲームを作ろうと考えている人は、バージョン4.0のリリースまで待ってみても良いかもしれません。

それと、個人的には別のツールとの連携の弱さを感じています。例えば 2Dアニメーションツールである Spine については、長らく対応が保留されており、ようやく公式(esoteric software)の対応が進み始めました。

SpineがGodotに対応するかもしれない

その他、日本では多く使われているツール、Live2D や CRI なども公式では現状対応されていません。非公式な機能を使用する場合、多くがエンジンのビルドを必要とするため、なかなか敷居が高いので、注意が必要です。

それ以外にも、Steam SDKの組み込みや、スマホゲーム向けにアプリ内課金を実装するときなど、現状はエンジンビルドが必要なので、他のゲームエンジンに比べて難易度が高い気がしています。(ただ、バージョン4.0からそのあたり改善される可能性があります)

2. アセットストアが充実していない。チュートリアルが少ない

これも Unity や Unreal との比較となりますが、アセットストアの質・量ともに大きく見劣りしています

個人的には素材は自作する(したい)派なので、デメリットと思いませんが、Unreal Engine や Unity のようにゲームを作る選択肢や素材として多くのコンテンツがあるのは魅力的です。

またチュートリアルも比較的少ないです。ただ、公式のチュートリアルチュートリアルまとめYoutube (GDQuest) などそれなりの数のチュートリアルがアップされているので、結局は頑張り次第……と言いたいのですが、それでも日本語情報は少ないので初心者にはやや厳しいかもしれません

個人的にもう少しシンプルなチュートリアルがあるといいかな……と考えて書いたのが以下の記事となります。

【Godot】2Dクリックゲームチュートリアル (1/3)

これからもGodotに関する記事を書いていこうと思っていますが、最近Godotユーザーも増えつつあるので、今後チュートリアルの記事がより充実したら良いなぁ…と期待しています。

3. 本当に知りたい情報はやはり少ない

個人的にはエディタ拡張や、Androidへのビルドを試そうとしたとき、情報が少なくて結構悩みました。

Unityを使っていたときも、どうしてもわからないときは結局は英語のドキュメントを調べましたが、Godotの場合は英語でも見つからないこと(自分の環境でしか発生しない不具合の原因が特定しにくいなど)もあるので、なかなか難易度が高いような気がします。

個人的な意見ですが、Godotは、別の言語のプログラム経験がある、またはUnity など何らかのゲームエンジンに慣れている……といったキャリアがないと、こういった不具合に対処できなくて大変なのかもしれません。

4. コンソールゲーム機をサポートしていない

コンソールゲーム機で動作するゲームを作るためには、それぞれのプラットフォームの会社とNDA(機密保持契約)を結ぶ必要があります。

秘密保持契約(NDA)とは、ある取引を行う際などに人の間で締結する、営業秘密や個人情報など業務に関して知った秘密を第三者に開示しないとする契約。機密保持契約、守秘義務契約ともいう

Wikipedia – 秘密保持契約

これによりゲーム開発であれば、開発に関する情報(SDKなど)を一般公開してはいけないので、オープンソースである Godot Engine に、ゲーム機に関するコードを記述することはできません

そのため、ゲーム機に対応したゲームを作るには、ポーティングを行ってくれる専門の会社に依頼する必要があり、ひと手間かかることになります(頑張れば自力でポーティングできますが、コストに見合わなそう)

なお完全に余談ですが、なぜコンソールゲーム機がSDKを非公開にしているのかというと、SDKなどの情報をもとにゲーム機を解析・クラックされて不正コピーのゲームが出回らないようにするためです。(他にも特許など法務的な問題もあります)

2022.8.10 追記: コンソールゲーム機向けのサポートが行われる “W4 Game” という会社が設立された

Hello everyone! We are pleased to announce the formation of W4 Games, a new company created by Godot Engine veterans Juan Linietsky, Rémi Verschelde and Fabio Alessandrelli, and veteran entrepreneur Nicola Farronato.

W4 Games was formed to strengthen the Godot ecosystem by providing both enterprise and independent developers with a complementary suite of commercial products and services to successfully develop and publish video games to all existing platforms in the market.

皆さん、こんにちは!Godot EngineのベテランJuan Linietsky、Rémi Verschelde、Fabio Alessandrelli、ベテラン起業家のNicola Farronatoによって作成された新しい会社であるW4 Gamesの設立を発表できることを嬉しく思います。

W4 Gamesは、市場のすべての既存のプラットフォームにビデオゲームを正常に開発および公開するための商用製品とサービスの補完的なスイートをエンタープライズ開発者と独立開発者に提供することにより、Godotエコシステムを強化するために設立されました。

Hello World: W4 Games formed to strengthen Godot ecosystem

コア開発者「Juan Linietsky氏」らによって、公式のサポート会社が作られたようで、今まで不透明だったコンソールゲーム機へのサポートが明確になりそうです。

2022.8.23 追記: VisualScript の標準機能としてのサポートが終了 (v4.0〜)

My code is like this

ノードをつないでゲームの動作を記述できる VisualScript が v4.0 からは廃止になることがほぼ決定しました。

Godot’s visual scripting language, VisualScript, was introduced in Godot 3.0, almost five years ago. Despite our continuous effort, it never gained traction and the path to improve it was never clear. Because of this, for Godot 4.0, we decided to accept that the approach we took from the start was simply not the right one and decided to remove it from the engine. If enough volunteer interest exists, it may be moved to an extension.

Godotのビジュアルスクリプト言語であるVisualScriptは、ほぼ5年前にGodot 3.0で導入されました。私たちの継続的な努力にもかかわらず、それは牽引力を得ることはなく、それを改善するための道は決して明確ではありませんでした。このため、Godot 4.0の場合、最初から取ったアプローチは単に正しいものではないことを受け入れることに決め、エンジンから取り外すことにしました。十分なボランティアの関心が存在する場合、それは延長に移動される可能性があります。

Godot 4.0 will discontinue VisualScript

ネット上の肯定的な意見としては、

  • GDScriptがプログラム初心者でもわかりやすく、簡単に記述できるので、なくても問題ない
  • VisualScriptのサポートは大変だと思うので、他によく使われる機能の開発を優先できるならそれで良い

ただ、VisualScriptの廃止について「将来的な新規ユーザー取り込みの可能性を潰す」という批判もあるようです。

個人的な意見としては、Unity や Unreal Engine みたいな潤沢な開発費があるゲームエンジンであればサポートし続けても良い気がしますが、オープンソースでまだ安定していない Godot Engine では、注力すべき機能に開発を集中させた方が良いのではないか…という気がしています。

また、VisualScript のような開発環境を望むのであれば、ゲーム開発初心者向けの「RPGツクール」「GDevelop」「GameSalad」「Construct 3」「GameMaker」など優れた環境がすでにあるので、Godot Engine が得意な分野で勝負するのが良いはずです。そしてこれらの簡易にゲームを作れる環境よりもステップアップしたくなった場合に Godot Engine が選択肢として存在する、というポジショニングでも良いのかな、と思っています。

個人的なメリット

こちらは個人的に感じるメリットです。これらをメリットと感じるかは、その人次第……

macOSでちゃんと動く

macOSで動きます。他の環境だとmacOSで動作してもパフォーマンスが低かったり、macOSでしか発生しない謎の不具合が長年放置されたりするのですが、Godotくんはしっかり動いてくれます。これは素晴らしい!

GDScriptが楽しい。ホットリロードできる

Pythonは仕事でもよく使うので、書いていて楽しいです。GDScript最高!

Pythonで実験コードを書いて、それをほぼコピペで動いてくれることもあるので、実験コードが書きやすいです

あと実行中にスクリプトを書き換えても、ファイル追加などの大きな変更でなければ、ビルドしなくてもすぐに反映されて動いてくれます。コンパイルして再起動、という手間が不要で確認作業がやりやすくて便利過ぎます

2D機能が充実している

基本2Dゲームしか作らないので、2D機能が充実していて良いです。2Dライティングやノーマルマップによる2.5Dも簡単にできます

【Godot】2Dライティングの実装方法 【Godot】法線マップを使用した2Dライティングの実装方法

Godotを使うのが向いていそうな人

まとめとして、Godotを使うのに向いていそうな人です。

  • 2Dゲーム(特に2D Platformer (プラットフォーマー) )を作りたい人
  • Pythonライクなスクリプト言語 GDScript に抵抗がない (※)
  • 何かしらのプログラム言語の経験がある。ゲームエンジンを使ったことがある
  • 新しいゲームエンジンを使って刺激を得たい
  • 何か問題があっても自分で調べて対応できる(英語情報でも問題なく調べられる)

※ C#やRustなど好きな言語を使うこともできますが、全体的にGDScriptのサンプルが多いです公式のアンケートでも GDScript の使用率は 80%でした。

逆に向いていないと思う人です

  • ゲーム開発初心者。プログラム経験が少ない
  • お手軽に3Dゲームを作りたい。またはハイクオリティの3Dゲームを作りたい人
  • 技術的な問題で悩む時間を減らしたい

個人的には、Godot Engineはシンプルな設計で扱いやすいのですが、それでもゲーム開発初心者向きかというとそうでもない……という印象です。

なので、もしゲーム開発に慣れていなければ、RPGツクールや、GDevelopGameSaladConstruct3GameMakerUnityあたりで経験を積むのが良いのでは……と思っています。

参考

以下、今回の記事を書くにあたって参考にした記事です