インスタンス化(続き)

要約

インスタンス化には便利な使い方がたくさんあります。インスタンス化を使用すると、次のようになります:

  • シーンを細分化し、管理を容易にする機能。
  • 複数のノードインスタンスを一度に管理および編集するためのツール。
  • 複雑なゲームフローやUIを整理して埋め込む方法 (Godotでは、UI要素もノードです)。

デザイン言語

しかし、シーンのインスタンス化の最大の利点は、優れた設計言語として機能することです。これは、Godotと他のすべてのエンジンとの違いです。 Godotは、この概念に基づいて設計されました。

Godotでゲームを作る場合、推奨されるアプローチは、MVCやエンティティ-関係図のような最も一般的なデザインパターンを無視し、代わりにあなたのシーンをより自然な方法で考えることです。ゲームの中で目に見える要素、つまりプログラマーだけでなく誰もが命名できる要素を想像することから始めましょう。

たとえば、単純なシューティングゲームを想像する方法を次に示します:

../../_images/shooter_instancing.png

どんな種類のゲームでも、このような図を作成できます。視覚化できるゲームの部分を書いて、矢印を追加して、あるコンポーネントが別のコンポーネントの所有権を表すようにします。

このような図を作成したら、図にリストされている各要素に対してシーンを作成することをお勧めします。所有関係にはインスタンス化(コードで、またはエディタで直接)を使用します。

ゲーム(またはソフトウェア全般)のプログラミングに費やされる時間の多くは、アーキテクチャの設計とそのアーキテクチャへゲームコンポーネントを合わせることに使われます。シーンに基づいた設計はそのアプローチに代わるものであり、開発をより迅速かつ簡単に行えるため、ゲームロジック自体に集中できます。ほとんどのゲームコンポーネントはシーンに直接配置されるため、シーンのインスタンス化に基づくデザインを使用すると、他のアーキテクチャコードはほとんど必要ありません。

アセットとネストされた要素が多いオープンワールド型ゲームの例をもう1つ見てみましょう:

../../_images/openworld_instancing.png

部屋の要素を見てみましょう。そこから始めたとしましょう。家具(シーンも)の配置が異なる複数の異なる部屋のシーンを作成できます。後で、部屋を接続して内部を構成する家のシーンを作成できます。

その後、我々は多くのインスタンス化された家から作られた要塞のシーンを作ることができました。その後、世界地図の地形に取り組み始め、要塞を追加しました。

後で、衛兵(及び他のNPC)を表すシーンを作成し、要塞に追加することもできます。その結果、ゲームの世界全体に間接的に追加されます。

Godotなら、シーンの作成・インスタンス化を繰り返す事で簡単に上記の事が出来ます。 さらに、エディタのUIは、プログラマーにとっても非プログラマーにとっても使いやすいように設計されています。 典型的なチーム開発プロセスには、2Dまたは3Dアーティスト、レベルデザイナー、ゲームデザイナー、アニメーターが関与します。これらはすべてエディタインターフェイスで作業できます。

情報が多すぎますね!

たくさんの高度な情報が一度に出てきましたね。 ただし、このチュートリアルの重要な部分は、実際のプロジェクトでシーンとインスタンス化がどのように使用されているかを認識することです。

ゲームを作成し、これらの概念を実践し始めると、ここで説明したことにすぐに慣れます。なので今のところ、あまり心配する必要はありません。次のチュートリアルに進んでください!