LEFログ:学習記録ノート

leflog: 学習の記録をどんどんアップしていきます

Godotチュートリアル2Dを完走した感想

サムネイル

サムネ画像

結論

とても良かったです(小並感)

実際のプレイ動画

youtu.be

完成したリポジトリ

チュートリアルで詰まった方はぜひ参考にしてください!*1

github.com

Godotチュートリアル2Dとは?

感想

率直な感想としては、Web開発に近いところがたくさんあるな〜と思いました。

というのも例えばフロントエンド開発において、画面上にアニメーションを表示させるIssueに取り組んだことがあったのですが、その際はD3.jsを使って描画をコントロールしました。timer.teamでは<canvas>: グラフィックキャンバス要素を用いた場面もありました。つまり、ブラウザの画面の動きを制御するというというのがWebフロントエンドの基本的な開発です。

今回のGodotを使った開発も、結局のところ「どうやってゲーム画面を動かすか」というのが大事で、それらが連関して一つの作品が生まれます。画面をクリックしたり、キーボード操作したり、プレイヤー(ユーザー)のアクションに併せて挙動を変えるのが本質です。

大事なポイントとして、(もしアクションゲームを作るならば)物理をしっかり思い出す必要があります。重力、加速度、角速度、ベクトル、ラジアン、当たり判定……とはいえこれらは高校物理の範囲なのでたぶん簡単です。複雑なことをしようとしたら難しくなりそうですが……。

また、チュートリアルを進めるうえで面白かったのが、「シグナル」という概念をGodotでは扱っていることです。特定のイベントが発生したとき、ノードが他のノードにメッセージを発信できる仕組みがシグナルです。この機能によってノード同士の連携(関数呼び出し)が容易になっています。

この概念は、現在進行系で読んでいる『なるほどUnixプロセス』の「第16章 プロセスはシグナルを受信できる」にかなり近似していました。Unixにおけるプロセスが別のプロセスのシグナルを受信できるように、Godotにおいてはノードが別のノードのシグナルを受信できます。

そう考えるとGodotによるゲーム開発は、Unix的な考え方を持っていると言えるかもしれません。

まとめ

Godotを用いたゲーム開発はとても楽しいです。何が一番嬉しいかというと、ゲームエンジンがサクサク動いてストレスが無いのが嬉しい!*2 あとmacOSLinuxでも完全に動くのが嬉しい!*3

Gitとの連携が簡単なのも良いです。また、実はGDScript*4C#を同時に使うこともできちゃいます。すごいですね。

また別の機会に3Dのチュートリアルもやってみようと思います。

*1:キャラクターをゾウのアイコンに変えたものはPull Requestで分けています。

*2:かなり驚異的な軽さです。VSCode並の軽さかも?

*3:UI/UXを細かく調整できるのが助かります。とあるゲームエンジンではmacOSだと文字の大きさを変えられず、かなりストレスが溜まりました

*4:PythonJavaScriptを組み合わた独自言語。VSCodeをエディタにすればDebuggerもFormatterもLSPもCopilotも動きます。