Godotのシーン、ノードのまとめて整理しよう
2024年12月18日
はじめに
ゲーム開発をしていると、Godotの場合はシーンにノードがたくさん並び、複雑化し、どこをどういじっていいか分からず、一つの変更も、いろんなところを操作しないと行けなくなってしまったりします。
そんなことを防ぐために、ノードをまとめて、再利用や、後の編集をしやすいようにしましょう。
Godotでは、ノードをまとめたものがSceneことシーンです。
そのため、一般的な、シーンである画面、とは意味合いが異なります。
タイトルシーン、戦闘シーン、リザルトシーン、ダンジョンシーン、会話シーンなどありますよね。
こうした、区分けも可能です。ただ、もっと細かいパーツの分割をするのがGodotのシーンです。
2Dアクションゲームのプレーヤーキャラクターも、一つのシーンとして、まとめることができます。それがGodotのシーンです。
Unityであれば、Prefabと呼ばれます。
具体的な利点を少し、そして方法について
再利用、構造の見易さ、編集のしやすさ、が主なメリットです。
具体的に、前回作った物理エンジンのプレーヤーに複数の壁、複数のコインを配置したものを比較してみましょう。
左側は、一つのシーンだけのもの、右側は、プレーヤー、壁、コインはシーンにまとめました。
右側はすっきりしていて、ゲームステージの作成に集中できる、そんな雰囲気があります。
では、左側の状態から、どのようにしたらいいか、残っているPlayerで説明してみましょう。
Playerのノードを右クリックし、ブランチをシーンとして保存、を選択します。
そして、ウィンドウが開くので、名前をPlayer.tscnとして、保存します。
すると、Playerが一つのシーンとしてまとまり、メインのシーンでは細かく表示されなくなりすっきりしました。
シーンの中を見たり編集したいときは、空いた箱のアイコンをクリックします。
もとのシーンに戻ったりしたい場合は、タブとして開かれているこちらで移動できます。
利点の詳細
シーンをこのようにまとめるといろいろ利点があります。
まず、大きい管理をしたいときには、その管理に集中できます。反対に、壁について、コインについて細かい部分を集中したいなら、そこだけに意識を向けられます。
これが、シーンをまとめていないと、大きい管理をしているのに、間違って細かいコインの画像をちょこっと触ってしまうことだってあります。
さらに、シーンにまとめているので、コインの画像を一律で、別の画像に差し替えたい、と思ったら、一か所変えるだけですんでしまいます。もし、これがシーンにまとめておらず、バラバラだったら、個別に設定しなければなりません。コインが八枚なら八か所、設定を変えなければいけません。
そんな状態では、ついつい、変更しそこねたりとミスをしてしまったりもします。
といって、几帳面に細かくまとめすぎるのも考えものだったりします。まずは、プレーヤー、敵、コイン、壁、くらいはまとめたらいいんだ、ととらえておくとよいかと思います。
さらにシーンを構造化、ステージ毎にシーンを作る
戦闘の敵の編成、アクションのステージ毎にシーンを作ります。
アクションゲームだと、1-1の森のステージ、1-2の海のステージ、1-3の洞窟のステージと、敵や、コイン、壁などの配置がそれぞれ違うけれど、プレーヤーや、HPの表示などのユーザーインターフェース(UI)は共通ということがあります。
そういう場合、1-1の森ステージだと、Playerシーン、UIシーン、1-1の森のステージ構成シーン、の三つのシーンで構成するといいでしょう。
そして、1-2の海のステージであれば、ステージの部分だけを差し替えたシーンにすれば、洗練された作りになります。
このようにすることで、もう一段、深い構造化をすることができます。
おわりに
さて、今回はシーンにまとめる話と、ステージ毎にシーンをつくることを説明しました。
これは、最初はいらないように思えるでしょう。必要性を理解するために、あえて、やらずに、しんどい経験をしてみるのも一つの選択です。お任せします。
次回は、ざっくりと、タイトルシーン、各ステージシーンをつなげて、ゲームの骨組みを作っていきましょう。