GDScriptさわってみた

メリット

Godotのデフォルトエディタの利点を享受できる

たとえば特定ノードへのリンクがD&Dでできたり、特定ファイルの読み込みがD&Dでできたり、あとはシグナルの接続ができたり。


記法がPythonっぽい

C#のレガシーで面倒な書き方はしなくていいね!

慣れてる人は喜びそう


検索して出てくる情報は大体GDScipt

逆にいうとこれはC#でのデメリットといえるかも


デメリット

動的型付け

部分的に静的型付けっぽく振る舞うこともできるが、ベースはあくまで動的型付けなので随所で苦しむことになる。

ダックタイピングを謳っているが、適切に継承関係をつくったポリモーフィズムと比べるとあまり嬉しくない。

呼び出せたら呼び出したい、みたいな関数呼び出しが実行時エラーにしてくるのでTell, don't askが実現できず困る。

しばしば型がわかりきっているものをstringで指定させてきたりするのでこれも恐怖。

また、シンボル名で拘束したりとかもしずらい原理上リネームなどのリファクタリングが効かなそうで怖すぎる。

とにかく、実行時エラーになるのが罪深い。

ユニットテストもあるようだが、静的型付けにすれば書かなくても勝手にテストできるよ、という場面が多すぎる……!

デフォのエディタが使いづらい

F12が定義に飛ぶになってないし、ショートカットキーを変えようとしてもカスタマイズ不可の「実行の再開」と衝突するのでうーん

候補についても的外れなものが多い(静的型付けでないのである程度は仕方ないが……)

進む・戻るボタンが右上についている

マウスオーバーによる注釈などが出ない

シーンタブ切り替えで開いているスクリプトが勝手に切り替わる(使いこなせば嬉しいのかもだけど……)

"""での囲い込み、(の入力などで補完や自動削除がかえって操作を妨害してくる場合がある

まあこれはVS系とかJetBrains製品などと比べているので酷な話ではあるのだが、これらに慣れきっているユーザー目線だとどうしても大きなデメリットになる。

コードとの連携機能が不完全

signalとのconnectをNodeビュー上で行うとそれに対応する関数が自動生成される……

が、これを削除すると止めはしないタイプの実行時エラーがログに出続ける。

NodeビューからDisconnectしなければならないが、エラーメッセージからそれはかなり読み取りづらい。

エディタとの連携はあくまで補助であり、自動生成されたコードの文字列にはもはやstring以上の情報は残っていない。

この点を過信すると中途半端なもどかしさに苛まれることだろう。


まとめ

動的型付けベースなのとエディタの未成熟が理由でまだ実用に耐えるものではないと感じた。

とはいえGodotEngine自体の魅力がこれで失われるものではなく、C#でも書けるっぽいので今度はそれに挑戦していこうと思う。


将来への期待

GodotEngineのためだけのスクリプトで、GodotEngineのためだけのエディタとなるとやりたい放題できそうなのでそういった点に期待だ。

例えばスクリプトのほうからショートカットをパパンと叩いたらそれに対応したノード構造が生成できるとか。

ブループリントっぽいGUIでぱぱっと編集したやつをD&Dしたらコードが一気に生成されて連動するとか。


一方で動的型付けであることが本当に本当に最後まで足を引っ張りそうなので、

「Godot5.xで全部静的型付けを強制しまーす☆」

「型とかメンドイっしょ! 小さめのゲームでプログラミング初心者だけはこっちオススメ☆」

に方針転換してしまってほしいな。

いや初心者であろうと静的型付けのほうが優しいと思うのだが。