ゲーム制作技術録

主にUnity/Godot4関連の技術ブログです

【Godot4】キーコンセプトとエディタの基本

Godotにおけるキーコンセプトと、エディタ画面について調べたのでまとめます。

Godot 4.1.1

はじめに

大前提として、これはGodot初心者向けの記事ではなくGodot初心者が書く記事です。

Unity経験者が迷いながらGodotを学習していくスタイルです。

なので結局分からない部分があったり、Unityと似通っている部分は説明を省いたりすると思います。

よろしくお願いします。

Godotのキーコンセプト

いきなりGodotエディタを触りたいところですが、まずはGodotがどんなエディタ運用を想定しているのかを知るところから始めます。

これを調べればいい感じにGodotの使い方が分かりそうな気がしなくもないです。

エディタの構成というか、制作における舵の取り方を把握したいと思います。

公式ドキュメントにはこう書いてあります。

(一部抜粋)

Godotでは、ゲームは シーン のなかにグループ化されている ノード の ツリー で表されます。これらのノード同士はつなぐことができ、シグナル を使ってお互いに交信できます。

とのことです。

ノードというものをグループ化してシーンというものとして扱い、ノード同士はシグナルで交信できる……と。

なるほど分からん。

ですが大事な要素として

  • ノード
  • シーン
  • シーンツリー
  • シグナル

がドキュメントに挙げられています。

ということで、これらを中心に調べて得た見解を自分なりにまとめていきます。

ノード

これはゲームを構成する最小単位のようです。

ノード=Unityでいうコンポーネント

のイメージが一番近いかもしれません。

UnityだとRigidbodyやCollider、Spriteなどのコンポーネントはゲームオブジェクトにアタッチして使用していましたが、Godotだとノード単体で各機能をこなすようです。

なので1ノード1機能ということですね。

そのノード自体を複数生成して、合体させて使っていくみたいです。

 

メインノードの中にサブノードを作成して作ったプレイヤーキャラクターのノードはこんな感じになるらしいです。

(画像はドキュメントから拝借&トリミング)

合体させたノードたち

シーン

ドキュメント引用(一部抜粋)

Godotでは、あなたのゲームを再利用可能なシーンに分解します。シーンは、キャラクターにも、武器にも、ユーザーインターフェースのメニューにも、個々の建物にも、地形全体にも、あるいは考慮しうる何にでもなりえます。Godotのシーンはフレキシブルであり、他のゲームエンジンでいうプレハブとシーン両方の役割を満たせます。

なんというかすごい独特な日本語になっていますが、要はノードを集めて小さい「シーン」と呼ばれる単位で管理して、それらを別シーンに配置して使いますということだと思います。

プレファブ(プレハブ)とシーンの両方の役割を満たす、というのが微妙なニュアンスですが、シーンは入れ子にできるとのことなので、つまるところシーンの中にシーンをプレファブ的に配置して入れ子のように構成していくってことであってるんですかね?

たぶんあってます、おそらく。

あと一応触れておくとシーン化したノードとしての「シーン」を表すアイコンはこれです。

シーンツリー

ドキュメント引用(一部抜粋)

ゲームシーンは、1つの シーンツリー (文字通りシーンの木構造)に収められます。シーンがノードのツリーで出来ているように、シーンツリーもノードのツリーで出来ています。シーンはゲームの中で、キャラクタ・武器・ドア・UIを表す事ができるもの、と考えるとわかりやすいでしょう。

とのことです。

簡単に言えば、最上層のノードがあり、その子にノードまたはシーンが存在するということだと思われます。

ドキュメントから拝借

上の画像の場合だと、最上層ノード「Level01」があり、その子にノードやらシーンやらが格納されているのが見て取れます。

この構造をシーンツリーと呼んでいるんだと思います。

シグナル

ノードはなにかイベントが発生すると、シグナルを発信します。この仕組みはノード同士がコードで密結合することなく、やり取りすることを可能にし、シーンの構築に柔軟さをもたらします。

シグナルというのは日本語で信号とかいう意味なので、つまりあるノードがイベントを検知した場合に別のノードへ通知する(シグナルを発信する)システムということですね。

例えば、Rigidbody2Dノード+CollisionShape2Dノードで衝突イベントを検知したら、予め紐づけしておいた別のノードへそのイベントを通知する(シグナルを発信する)といったことができるわけです。

この仕組みをシグナルと呼ぶんだと思います。

エディタ画面

一通り把握したので実際にエディタを触ってみたいと思います。

上端

上端にはメニュー、ワークスペース、テストプレイボタン等が配置されています。

メニューにはプロジェクト設定や環境設定、ビルドメニューなどがあり、ワークスペースはビューポート(後述)のモードを切り替えるようなものでした。

テストプレイボタンなどはそのまま意味で、ゲームが実際にランされます。

ビューポート

画面中央にドンと表示されている領域ですね。

ワークスペースの切り替えでこのビューポートの表示が変わります。

2D、3Dはシーン内のオブジェクトを動かしたりして作業します。

ScriptはコードエディタAssetLibはアセットストア的な何かです。

ファイルシステムドック

スクリプトや画像、サウンドなどのプロジェクトファイルがリスト表示されています。

シーンドック

シーン(ノードも?)がツリー表示されます。

インスペクタドック

Unityにもありますね。

選択されているノードやシーンのプロパティや詳細が表示されます。

値を変更したりなんやかんやできます。

下端

デバッグコンソール、アニメーションエディタ、オーディオミキサーなどが折りたたまれています。

今回は説明を割愛しますがクリックすると各要素の作業用パネルが展開されます。

おわりに

今回は調べて学習しただけの記事でした。

自分用も兼ねていたので書きましたが、次回からは本格的に技術やプログラムミングの話ができるかもしれません。

参考