Godotエンジンを触ってみた

Godotエンジンを触ってみた:数週間使ってみた第一印象

最近、Godotというゲームエンジンをいろいろ試しています。ゲーム開発に少しでも関わったことがある人なら分かると思いますが、この分野は基本的に Unity と Unreal Engine の2強状態です。  

Unrealは長い歴史を持つ非常にプロフェッショナルなエンジンで、主に大規模チームやAAAタイトル向けという印象が強く、個人開発者にとっては少し敷居が高い存在です。

一方のUnityは、これまでインディーや趣味開発者の間で広く使われてきました。私自身も、2週間のゲームジャムや個人の小さなプロジェクト、さらには仕事でのプロトタイプ制作などでUnityを使った経験があります。  

なので、この記事では主に Unityと比較しながら Godotを使ってみた感想を書いていきます。

余談ですが、Unreal Engineはまだ本格的には触っていません。調べた限りではスタジオ向け色が強く、プロジェクトごとの初期セットアップも大変そうだと感じたためです。ただし、試すだけなら無料ではあります。

Unityの信頼問題とGodotが注目を集めた理由

Unityは今でも人気があります。無料の情報やチュートリアルが非常に豊富で、インディー向けゲームエンジンとしての地位を長年築いてきたからです。  

ただ、数年前に新しい経営体制のもとで発表された料金体系の変更が、開発者からの信頼を大きく損なう結果になりました。

最終的には大きな反発を受けて撤回されましたが、「一度失った信頼」は簡単には戻りません。その結果、Unityから離れる開発者が多く出ました。

そこで恩恵を受けたのがGodotです。Godotは完全に無料でオープンソース(FOSS)のエンジンで、コミュニティの利用と貢献によって成長しています。Unityから移行してくる開発者が増えることは、Godotのエコシステムをさらに強くする要因になっています。

言語の選択:C#かGDScriptか

Godotを使い始めて、今でだいたい2〜3週間ほどになります。最初は、Unityで慣れ親しんだC#を捨てることにかなり抵抗がありました。  

GodotでもMono経由でC#は使えますが、私の場合、特にmacOSでのMono体験があまり良くありませんでした。

言語サーバーの不具合、エディタ連携の不安定さ、リコンパイルの遅さなどが重なり、UnityでのC#開発はだんだん辛くなっていきました。  

しかも、Unity特有の言語サーバーの問題で、Visual Studio CodeやNeovimではうまく動かず、Visual Studio(フル版)を使わざるを得ない状況でした。

全体的に、最近のUnityは「重く」感じます。ちょっとしたコード変更でも長い再コンパイルが走り、プロジェクトの読み込みも昔より明らかに遅くなりました。  

Unrealに対抗しようとしてAAA向け機能をどんどん盛り込んでいる印象があり、趣味開発や低スペック向けプロジェクトとは方向性が合わなくなってきた気がします。

そこで試してみたのがGDScriptです。  

GDScriptはPythonに似た文法を持つ言語で、正直に言うと、私は昔からPythonの文法にあまり好みを持っていませんでした。波括弧 `{}` よりもインデントで構造を表す書き方が個人的に苦手だったからです。

ただ、実際に使ってみると、GDScriptは思った以上に快適でした。  

しかも、完全な弱い型付けだと思い込んでいましたが、型指定もできて、しっかりとした型システムの恩恵も受けられます。

Godotの内蔵エディタもよく出来ています:

– ドキュメント参照が非常に優秀な統合コードエディタ
– インスペクタからコードへのドラッグ&ドロップ参照
– 外部IDE不要でも十分なエディタ機能
– 最低限ながらVim操作プラグインも存在

全体として、かなり軽量で集中しやすい開発体験だと感じています。

(そして今度Python自体も見直すかもしれません。)

Godotで夫婦の二人で開発された「Dome Keeper」が$100万の売り上げでした。

想定ユーザーとエンジンの思想

趣味開発者として、私はAAAレベルのレンダリング機能を必要としていません。  

普段作るのは2Dや疑似3D、ドット絵、ローポリといった表現が中心です。限られた時間の中で、超高精細アセットを作るのは現実的ではありません。

そういう開発スタイルにおいて、Godotは非常に相性が良く、「無駄に重い」と感じることがありません。

便利だと感じた組み込み機能

Godotを使っていて、特に「これは便利だな」と感じた機能がいくつかあります。

– RichTextLabelが最初からBBCode形式(色・サイズ・フォントなど)に対応
– `visible_characters` を使った タイプライター演出が簡単に実装できる
– ゼルダなどのRPG風な 文字送りSEのサポートが標準で用意されている
– Tween機能がエンジンに最初から組み込まれている(UnityだとLeanTween等が必要)
– 強力なアニメーション・タイムライン機能

Unityでは、これらの多くがアセットストア頼み、もしくは自前実装になりがちです。

UIとレイアウトシステム

GodotのUIシステムは、正直なところ直感的とは言えません。ただ、これはGodot特有の問題ではありません。  

UIレイアウトは、Unity UI、WebのCSS、Android Composeなど、どのフレームワークでも基本的に難しいものです。

GodotのUIも最初は戸惑いますが、複数の画面サイズやプラットフォームに対応できる柔軟性はあります。  

学習コストが少し高いだけで、「欠陥」というよりは慣れの問題だと思います。

ノードシステムとUnityのGameObjectの違い

もう一つ大きな違いがノードシステムです。  

Unityでは、GameObjectに複数のコンポーネントを付けて機能を構成します。一方Godotでは、基本的に 1ノード=1スクリプトという考え方で、振る舞いは子ノードとして構成していきます。

ノードは必ずしもTransform(つまり3D空間の位置)を持つわけではなく、純粋にロジックや整理目的のものもあります。  

この仕組みは軽量で柔軟ですが、Unity出身者には少し発想の切り替えが必要です。

Godotでは、ノード構成やシーン構造について開発者にかなりの自由が与えられています。  

また、UnityのPrefabに相当する仕組みも少し違います。UnityではPrefabとSceneは別物ですが、Godotではノードの集合体はすべて「シーン」と呼ばれ、キャラクター1体であってもシーンとして保存できます。

最初は違和感を感じますが、UnityからGodotへ移行する人向けのチュートリアルが豊富にあるのは助かります。

### シグナルとアーキテクチャ

Godotにはシグナルという仕組みがあります。これはObserverパターンに近く、UnityのUnityEventやC#のActionに似ています。

オブジェクト同士を直接参照させず、イベントに反応させる形で設計できるため、疎結合な構造を作りやすいです。  

Godotのノードベース設計とも相性が良く、自然に使える印象です。

 Godotで開発されら「Buckshot Roulette」が少し前流行でした。

プラットフォームの制約

Godotの大きな弱点としてよく挙げられるのがコンソール対応です。  

PlayStation、Xbox、Nintendo Switchなどへの公式エクスポートは提供されていません。これは、Godotがオープンソースであり、クローズドなコンソール環境に直接アクセスできないためです。

趣味開発者にとっては大きな問題ではありませんが、コンソール向けに商用リリースを狙う小規模スタジオにとっては致命的になる可能性があります。  

一応サードパーティの解決策はありますが、コストは高めです。

それでも、実際にGodot製のコンソール対応ゲームは存在します:  

[https://godotengine.org/showcase/](https://godotengine.org/showcase/)

もう一つ、よく聞く話として「Godot製ゲームはリバースエンジニアリングしやすい」という点があります。私は実際に試したことはありませんが、そういう情報は見かけます。  

シングルプレイヤーゲームでは大きな問題にならないでしょうが、対戦型オンラインゲームではチート対策が難しくなる可能性があります。とはいえ、これも主に大規模プロジェクト向けの話で、個人開発者の範囲を超えた話題です。

ツール周り、サイズ感、Blender連携

Godotはとにかく軽量で、Unity Hubのような常駐サービスもありません。エディタは軽快で反応も速いです。

Blenderとの連携も非常に優秀で、`.blend` ファイルをそのままプロジェクトに置くだけで使えます。ファイル構成を変えても、マテリアルやテクスチャのリンクが保たれるのはかなり便利です。  

lk無料・オープンソース同士のツールがうまく噛み合っている感じがあります。

BlenderチームがGodotを使って制作した「Dog Walk」という小さなゲームも良い例です。シンプルですが、とても可愛いアートスタイルの作品です。  

Steam(無料):[https://store.steampowered.com/app/3775050/DOGWALK/](https://store.steampowered.com/app/3775050/DOGWALK/)

itch.io(無料):[https://blenderstudio.itch.io/dogwalk](https://blenderstudio.itch.io/dogwalk)

GodotエンジンとBlenderや他のフリーツールで開発されたフリーゲーム「Dog Walk」

まとめ

数週間Godotを使ってみた総合的な感想は、かなり好印象です。

– 軽量で高速
– 組み込みツールが充実
– ドキュメントとコミュニティが強い
– 余計なボイラープレートを減らしてくれる設計
– 趣味・インディー開発にとても向いている

コンソール展開を狙うスタジオには向かない部分もありますが、学習用、実験、個人プロジェクトには非常に楽しいエンジンだと思います。

お問い合わせ

お問い合わせいただきありがとうございます。以下のフォームにご記入いただくか、お電話にてお問い合わせください。営業日においては、お問い合わせいただいた内容について、24時間以内に回答いたします。