This document is about: QUANTUM 3
SWITCH TO

3 - シーンのセットアップ

概要

ここでは、基本的なシーンのセットアップと、Quantumのエンティティの作成方法を紹介します。

ゲームシーンを開く

Quantum SDKには、開発を始めるのに役立つファイルが付いています。

QuantumUser/Scenesフォルダー内にはQuantumGameSceneシーンがあります。このシーンが、Quantumチュートリアルの開始地点になります。QuantumGameSceneシーンを開き、UnityのメニューFile > Save Asでシーンのコピーを作成して、Assets/ScenesフォルダーのAsteroidsGameplayで保存してください。

The QuantumSampleGame Scene
AsteroidsGameplayシーン

シーンには、いくつかの重要なゲームオブジェクトがあります。

  • QuantumMap:Qunatumのシーン作成ワークフローは、Unityのシングルプレイヤーゲームのシーン作成とほぼ同じです。マップデータコンポーネントは、シーン上のエンティティ・静的コライダー・ナビメッシュデータをベイクして、決定論的Quantumエンジンで使用できるようにします。
  • QuantumEntityViewUpdater:実行時にゲームプレイコードから作成されるエンティティの、ビューを表現するゲームオブジェクトの生成/破棄を担当します。
  • QuantumDebugInput:Unityの入力を決定論的Quantumエンジンへ渡す方法を例示するDebug Inputスクリプトです。後ほど、このチュートリアルで拡張します。
  • QuantumStatsGameエディターウインドウの左側に統計ウインドウを表示します。Quantumシミュレーションに関する多くの便利な統計情報が表示されます。

MapDataアセットオブジェクト

Quantumのアセットは、ゲームプレイシミュレーションの設定に使用されるイミュータブルなデータコンテナです。Unityの各シーンは、シーンに対応するQuantumのマップアセットが紐付けられます。このアセットはシーンに関する決定論的な情報を含み、シーン上のオブジェクトやコライダーなどがアセットにベイクされています。

新しいResourcesフォルダーを作成して、右クリックからCreate > Quantum > Assetを選択し、ポップアップしたリストからMapを選択します。アセットはAsteroidsMapと名付けてください。

Create the Map Asset
Mapアセットの作成

備考: 、Quantumがアセットをロードできるようにするため、Resourcesフォルダーが使用されます。すべてのQuantumアセットは、Resourcesフォルダーに含めるか、Addressableである必要があります。

シーンのQuantumMapオブジェクトをクリックしてください。ここではまだ既存のQuantumMapアセットがシーンに紐付けられています。新しいAsteroidsMapアセットをインスペクターのassetフィールドにドロップして置き換え、シーンを保存します。保存時に、新しいAsteroidsMap_meshアセットがResourcesフォルダーに生成されます。このアセットは、マップの物理コライダーに関する情報を保持します。

Replace the Map Asset
Mapアセットを置き換える

カメラとライティング

Main Cameraの位置を(0, 10, 0)、回転を(90, 0, 0)に設定します。背景色は黒にして、Orthographic Projection Size20に調整します。

Camera Setup
カメラの設定

次に、シーンにやわらかい黄色のDirectional Lightを追加します。

Directional Light
Directional Lightを追加

エンティティの作成

新しい2D Circle Entityを作成します。(ヒエラルキーウインドウを右クリックして、Quantum > 2D > Circle Entityを選択)

Create a new 2d circle entity. (right-click on the hierarchy window and chose Quantum > 2D > Circle Entity)

Create Circle Entity
Circle Entityの作成

作成されたゲームオブジェクトの名前をAsteroidLargeに変更します。Mesh FilterMesh Rendererコンポーネントは削除してください。そして、QuantumEntityPrototypePhysicsCollider2DRadiusを1.1に調整します。最後にPhysicsBody2Dにチェックを入れて、エンティティをRigidbodyを持つ物理ベースのエンティティにします。

Adjust the Asteroid

AsteroidLargeゲームオブジェクトを右クリックしてCreate > 3D Object > Cubeを選択し、アステロイドの子オブジェクトにCubeを作成します。これがアステロイドのビジュアルモデルを保持することになるので、名前をModelに変更しましょう。

ビジュアルを子オブジェクトに分けることは必須ではありませんが、より簡単にコンポーネントを整理できます。

オブジェクトからBox Colliderを削除、スケールを1.5に設定し、いい感じのビジュアルになるように回転させてください(ここでは(25, 17, -53)にしています)。

Create the Asteroid Model
アステロイドのモデル作成

ゲームを再生すると、重力によってアステロイドのエンティティがゆっくり降下するのが確認できます。(重力は後ほど無効にして、手動でアステロイドに力を加えていきます)

gif of Asteroid Dropping

Quantumのエンティティ

Quantumのすべてのゲームプレイは、エンティティ・システム・静的コライダー情報などを含む静的なデータアセットによって動作します。Quantumのシミュレーションコードは一切のレンダリングを処理せず、UnityではEntityViewUpdaterが各エンティティについてEntityPrototypeEntityViewを持つゲームオブジェクトを生成します。このビューのゲームオブジェクトが、エンティティのビジュアル表現として機能します。ビューのゲームオブジェクトのtransformも、EntityViewUpdaterによってエンティティごとに自動的に同期されます。

各エンティティは、複数のコンポーネントを持ちます。このコンポーネントは、UnityのMonoBehaviourとは異なり、EntityPrototypeEntity Componentリストやコードから追加されます。いくつかのコンポーネントは、CubeエンティティのPhysicsBody2Dコンポーネントのように、EntityPrototypeのチェックボックスをチェックすることで追加されます。

QuantumはState Inspectorによって、実行時にエンティティコンポーネントの状態を表示できます。UnityのメニューバーからWindow > Quantum > State Inspectorをクリックすると、State Inspectorが開きます。ゲームを再生すると、State InspectorウインドウのLOCALDEBUGEntitiesが展開します。アステロイドのエンティティがEntity 1に並んでいて、これをクリックすると、エンティティのすべてのコンポーネントと、その現在の状態が表示されます。

The asteroid entity in the state inspector
State Inspector内のアステロイドのエンティティ

プレハブの作成

Quantumのエンティティは、通常のUnityのプレハブに変換できます。AsteroidLargeゲームオブジェクトをResourcesフォルダーにドロップしてプレハブを作成し、シーンのものは削除してください。自動的に作成されるAsteroidLargeEntityPrototypeアセットは、エンティティのベイクデータを保持し、Quantumのシミュレーションで使用されます。

Turn Asteroid into Prefab
アステロイドをプレハブにする
Back to top