UnityとGodot。とりわけUnity C#とGodot GDScriptまたはC++

こんばんわ、ゲームプログラマー3年生のrokujyouhitomaです。リアルタイムレンダリング周りは未修と言っていいほどなのが大きな課題です。

Godot調査二日目で気になる点があったので、ざっくりした考察だけど、一度脳内から忘れたいので書き出しちゃいます。

UnityとGodot

Godotプロジェクトが、同じゲームエンジンであるUnityと機能を比較しつつ、Godotの機能を紹介しているドキュメントがあります。

目を通して思うところを書き残すなど。

シーンシステム

Unityでもシーンの合成を行うけどなぁと思いました。まさにドキュメントで述べられてるGodotの使い方の通りに。
具体的には、SceneManager.LoadScene APIを使って。

SceneManager.LoadScene

スクリプティング

スクリプト数について

  • Godotだと、1Nodeに1Scriptしかアタッチできない
  • Unityだと、1Nodeに複数Scriptをアタッチできる

これは決め事なので、Godotでは、ドキュメントでもある通り、1Nodeに子ノードぶら下げてスクリプトアタッチすればいいかなー。と思った。

スクリプト言語について

  • UnityはUnity C#(それ以外にもJavaScriptPython likeなのはあるが...)
  • GodotはGDScript、C++

Unity C#

Godot GDScriptはまだ触れていないが、Unity C#について先に語るとすると、

  • Unity C#MonoDevelopのサポート受けれる。それ以上にVisualStudioのサポートを受けれて、強力。
  • Unity C#は.NET使えて、既存のライブラリを使えて、強力。

Godot GDScript

一方、Godot GDCScriptを語ると、

  • Godot GDCScriptは、Pythonライクと言っているが、Pythonとは異なる言語
  • Godot GDCScriptは、エディタサポート絶望的
  • Godot GDCScriptは、既存ライブラリ?そんなものはない。辛い。

という...。

Godot C++

GodotではC++で書くこともできるそうなので、C++がGodotスクリプトよりましか?(どこで拡張するんだろか、ランタイムの実装言語はC++なのはわかってるけど、差し込みやすいようになっているのか??

自分で組み込む?

個人的な感想だが、C++は慣れてなく、難しい言語なのでできるだけ使いたくないところ。できるだけ軽量な言語、例えばLua, Ruby(mruby), Python(micropython?CPython??、あれCythonでも行けるかしら?!)あたりを自前で組み込むか。

おっと、公式ドキュメントに過去にLuaPythonが組み込まれててたけど、自前でハンドリングしたいから、独自言語にたどり着いたって記載があった。うーむ。

Unityの.meta相当

Unityには.metaというアセットファイルとついになるメタ情報のテキストファイルがある。
あれ、結構便利で、テキストなので、ある程度git diffとかで読める。慣れてくると読めるし、ツールで活用するケースがある。

要確認事項では有るが、Godotは全部シリアライズされてバイナリデータになってるようなので、困る点がありそう。

Godotは一応ドキュメント上は、

but Godot approach is simpler, with a single configuration file, minimalist text format, and no metadata.

と述べている以上は、テキストファイルで必要十分であると、信じている。