Godotとは

Godotの公式ドキュメントの紹介や使用感をお伝えします。

作成日: 2024-01-16

Godot記事一覧

目次

Godotとは

公式ドキュメントでは次のように紹介されています。

Godotエンジンは機能豊富な、クロスプラットフォームのゲームエンジンであり、2D・3Dゲームを単一のインターフェイスで製作することができます。基本的なツールは一通り用意され、ユーザーはプログラムの再発明をすることなくゲーム製作に集中できます。製作したゲームは主要なデスクトップ環境(Linux, MacOS, Windows)や、モバイル(Android, iOS)、Webベース(HTML5)環境にワンクリックで書き出せます。 Godot はMITライセンスの下、完全に自由でオープンソースです。利用に関して特に制限はありませんし、利用料を請求することもありません。エンジンのコードの最後の一行まで、ゲームは製作したユーザーのものです。Godot は自主的なコミュニティによって開発されており、エンジンを期待にかなうものにするため、ユーザーの方々も自由に参加できます。Godot は非営利団体 Software Freedom Conservancy によって支援されております。

Godot4.x 公式ドキュメントより

その他、エディターや対応プラットフォームなど、こちらの公式のよくある質問に掲載されています。

Godotを選ぶ理由

  1. オープンソースなので、プレイヤーの個人情報を集めなくて済む
  2. 互換性重視なので、古くて性能が低い環境でも動く

特に1点目だと感じています。

UnityやUnreal Engineと比べると開発規模が小さいので機能面での優位性は感じられません。特にデフォルトで使えるレンダリングの多彩さやスクリプトエディターの機能には相当な差があります。

UnityとUEに共通するのは運営への不安です。ランタイムフィーのように強制的にプレイヤーの個人情報を収集しようとしたり、一方的に将来の方針を決められたり、大手の配信サイトと訴訟合戦してみたり、制御できないところで発生するリスクがあります。営利目的で開発されているゲームエンジンではこのようなリスクは避けられません。

オープンソースであるGodotの価値はそこにあります。気に入らないことがあれば自力救済が可能です。UnityやUEへの完全な依存は怖い。かといってフルスクラッチで自作ゲームエンジンを作るのは面倒。という場合、Godotはよい選択肢になります。

とっつき難易度

UnityやUnreal Engineに比べると初手で必要とされる知識がやや多いです。率直に言えばとっつきはやや難しいです。

Godotのコンセプトはノードを組み合わせるというだけのとてもシンプルなものです。しかしシンプルすぎて必要な手間が多いという面があります。例えば3Dの球体を作成して物理シミュレーションで落下させる手順を考えます。

Unityなら以下の3手です。

  1. 新規ゲームオブジェクトをSphereで作成
  2. 作成したSphereを丁度よく見える場所へ移動
  3. Rigidbodyをアタッチ

同じことをGodotでやろうとすると以下のようになります。

  1. シーンをまとめるルートノードをNodeなどで作成
  2. ルートノードの子にRigidBody3Dノードを作成
  3. RigidBody3Dの子供にMeshInstance3Dノードを作成
  4. メッシュとしてSphereMeshを作成
  5. RigidBody3Dの子供にCollisionShape3Dノードを作成
  6. 当たり判定の形状としてSphereShape3Dを作成
  7. ルートノードの子にCamera3Dを作成
  8. 球体が丁度よく見える場所へ移動

Unityではよく使う構成が予め用意されているので、作ったらすぐ動かすことができます。後でそれを理解するのに苦労はするのですが、とりあえずすぐ動きます。またシーン、ゲームオブジェクト、コンポーネント、プレハブというように要素が分かりやすく整理されています。よく整理されていてサービスもよい海外の大手PCメーカーのオーダーサービスのような印象です。

Godotは細かいパーツがずらっと用意されていて、自由度が高くて無駄なく作ることができます。しかし目的を達成するための構造を自分で組み立てる必要があります。すべてを指示する必要があるので何かと手間が掛かる、という印象があります。「材料や道具は全部ある。あとはおまえが好きに作れ」的なアキバのパーツショップのような印象です。

個人的にはGodotのスタイルは嫌いではありません。しかしとっつきがよいか?となると、やや難しいです・・・という印象です。

開発言語

開発言語はいくつか選択肢がありますが、GDScriptという独自言語が推奨されています。インデントでコードのブロックを表すなどPythonに雰囲気が似ています。

C#の対応が進んでいますが、正式にエクスポートできるプラットフォームは4.2の時点ではデスクトップPCのみです。iOSやAndroidは実験的な対応で、HTML5は未対応です。既知の不具合もあれこれあって、現段階ではGDScriptの方が安心して使えます。

GDScriptはGodotエンジンへ手早くアクセスできるのでスクリプトが簡潔になるのがメリットです。また実行をしながらスクリプトの変更を反映できるホットリロードも大きな武器です。しかしダックタイピングが大きなデメリットです。実行しないとタイプミスを発見できないのでテストの負担が激増します。エディターやツールではダックタイピングの柔軟性は有用ですが、実行環境では厄介者です。オートコンプリートや一括リネーム、参照先の検索などの機能も弱くなります。

何らかのプログラミング言語を習得済みであれば、学習コストはそれほどかからないのでGDScriptでよいと思います。しかし、はじめてプログラミング言語を学ぶならC#をおススメします。最初に学ぶのがコンピューター言語の母国語になりますので、はじめての言語は広く採用されている筋がよい言語を学ぶことをおススメします。今は不具合がありますが、習得している間に改善が進むでしょう。

つまり、初学者は素直にUnityでいいんじゃないのか・・・というのが今のところの身も蓋もない感想です^^;

人気

参考までに、2023年のグローバルゲームジャムではUnity、Unreal Engineに次ぐ3番目に利用されたゲームエンジンだったそうです。

Juan Linietsky. Guess which game engine is the fastest growing in the Global Game Jam 2023? (Hint: It isn’t a sponsor.)

2023/9/12のUnityのランタイムフィー騒動の影響で次回のGGJでのシェアはかなり変動するかも知れません。が、Godotを試してみたもののUnityに回帰した開発者がかなり多いという噂も聞いているので、あまり変わらないかも知れません。仲間が増えるのを願っています。

まとめ

歯切れが悪い紹介でした。使うほどにUnityの優秀さを実感しているのは事実です。他の人、特に初学者におススメできるかというと微妙、と言うのが正直なところです。

個人的にはマニュアル車を操るような楽しさがあって気に入ってます。今後の自主製作はGodotを中心に進める予定です。

ビジネスシーンで利用するというよりは、趣味の延長で日曜大工的に楽しめそうなゲームエンジンだと感じています。

参考URL

Godot記事一覧