Godotのキーコンセプトの概要¶
すべてのゲームエンジンは、アプリケーションを作成するための抽象的な概念を軸に構築されています。Godotでは、ゲームは シーン のなかにグループ化されている ノード の ツリー で表されます。これらのノード同士はつなぐことができ、シグナル を使ってお互いに交信できます。
ここで学習できるコンセプトは4つあります。それらを大まかに見ていきながら、エンジンがどのように動くのかの感覚をつかんでいきましょう。入門シリーズでは、実際にそれらを使っていきます。
シーン¶
Godotでは、あなたのゲームを再利用可能なシーンに分解します。シーンは、キャラクターにも、武器にも、ユーザーインターフェースのメニューにも、個々の建物にも、地形全体にも、あるいは考慮しうる何にでもなりえます。Godotのシーンはフレキシブルであり、他のゲームエンジンでいうプレハブとシーン両方の役割を満たせます。
シーンは入れ子にすることもできます。例えば、キャラクターを地形に据え、ドラッグ・アンド・ドロップで子にすることができます。
ノード¶
シーンは一つ以上の ノード で構成されています。ノードはゲームを構成する最小ブロックで、ツリー型に配置することが出来ます。キャラクターのノードはこのようになります。
「キャラクター」と名前がつけられた KinematicBody2D
ノードと、 Sprite2D
、 Camera2D
、 CollisionShape2D
で構成されています。
注釈
ここでは2Dシーンなので、ノードの名前は末尾に「2D」が付きます。3D部分で使用するノードは名前が「3D」で終わります。
ノードとシーンはエディタでは同じように見えることに注意してください。ノードツリーはシーンとして保存されると単体のノードのように見えるようになり、エディタからは内部構造が見えなくなります。
Godotエンジンでは広範囲のタイプの基本ノードを提供しており、組み合わせたり、拡張してよりパワフルなものを作ったりすることが出来ます。2D、3D、UIなど、たいていのものを基本ノードで表現できます。
シーンツリー¶
ゲームシーンは、1つの シーンツリー (文字通りシーンの木構造)に収められます。シーンがノードのツリーで出来ているように、シーンツリーもノードのツリーで出来ています。シーンはゲームの中で、キャラクタ・武器・ドア・UIを表す事ができるもの、と考えるとわかりやすいでしょう。
シグナル¶
ノードはなにかイベントが発生すると、シグナルを発信します。この仕組みはノード同士がコードで密結合することなく、やり取りすることを可能にし、シーンの構築に柔軟さをもたらします。
注釈
オブザーバーパターンの詳細については、以下をご覧ください (英語): http://gameprogrammingpatterns.com/observer.html
例えば、ボタンが押されたとき信号が送出されます。この信号をつなぐことで、このイベントへの反応としてコードを実行させ、ゲームを開始させたりメニューを開いたりのようにできます。
他の組み込み済みのシグナルでは2つのオブジェクトの接触や、キャラクターやモンスターが一定のエリアに侵入したりといったことを通知することが出来ます。あなたのゲームに合わせた独自のシグナルを定義することも出来ます。
概要¶
ノード・シーン・シーンツリー・シグナルの4つは、Godotでは常に操作することになる重要な概念です。
ノードはゲームを構成する最小ブロックです。それらを組み合わせてシーンを作り、シーンツリーの中に入れ子にしていきます。シーンツリーの別の枝葉のノードへイベントに反応させるために、シグナルを使うことが出来ます。
この短い概要を読んだことで、たくさんの疑問が浮かんでいるかもしれません。この「はじめに」シリーズを通して多くの答えが得られると思いますので、もう少しお付き合いください。