レベルエディターサンプル
概要
ゲーム内のレベルエディターは非常に貴重なツールで、プレイヤーや開発者がレベルを作成、変更、共有できるようになるほか、ゲームプレイやリプレイの可能性を無限に拡張できます。このサンプルでは、Quantumゲームに独自のレベルエディターを作成するための堅固な基盤を提供します。
ダウンロード
バージョン | リリース日 | ダウンロード | ||
---|---|---|---|---|
2.1.4 | 2023年6月22日 | Quantum Level Editor 2.1.4 Build 259 |
技術情報
このプロジェクトは以下によって開発されました:
- Unity
2021.3.5f1
- Quantum
2.1.4
静的コライダー
物理コライダーを持つ純粋なエンティティはマップオブジェクトを表示する際に便利ですが、動的コライダーは静的コライダーに比べて効率的ではありません。このため、ここでは静的コライダーを使用してランタイム時にMap
アセットを修正します。
コマンド
このサンプルはマップの編集時にコマンドに大きく依存します。これは、編集コマンドが毎フレームは発生しないためです。
コマンド | 説明 |
---|---|
ChangePermissionCommand | プレイヤーの権限を編集します。リーダーのみがこれを実行できます。 |
ChangeStateCommand | エディターをプレイモード、編集モードで切替えます。 |
UndoCommand | 前のユーザーアクションを元に戻します。 |
ResetPlayerCommand | プレイヤーのキャラクターとカメラをマップの中央にリセットします。 |
ClearMapCommand | マップをクリアします。 |
NavMeshMoveCommand | プレイモードで、経路探索エージェントに新たなターゲットを設定します。 |
SpawnObjectCommand | 新たにMapObjectを作成します。 |
DeleteObjectCommand | 指定されたMapObjectを破壊します |
MapObject
このサンプルでのMapObject
アセットは中核となるアセットで、ゲーム内のすべての編集可能なオブジェクトを定義します。
フィールド「 | 説明 |
---|---|
VisualPrototypeRef | ビジュアルエンティティへの`EntityPrototype`アセット参照 |
NavMeshSurface | オブジェクトが経路探索によって移動可能かどうか |
StaticVertices | このオブジェクトの静的メッシュの頂点 |
Triangles | このオブジェクトの静的メッシュの三角形インデックス |
ビジュアルプロトタイプは、作成した静的コライダーを表示するためにスポーンされたエンティティです
メッシュをコライダーにベイキング
マップオブジェクトのメッシュをベイクするには、マップオブジェクト内のUnityインスペクターの'Source'フィールドに入力し、「Bake Mesh」ボタンをクリックします。
ナビゲーション
このサンプルには、ランタイムNavMesh
作成による経路探索も含まれています。navmeshはUnity内で演算され、アセット注入アドオンによって送信されます(アセット注入を参照してください)。
リーダーシステム
レベルエディターの設定では、特定のプレイヤーについてマップの参照は可能だが修正はできないように設定したい場合があります。リーダーシステムを使用すれば、現在のリーダーに対してランタイム時に編集権限の取消や付与をおこなえます。リーダーが退出すると、新たなリーダーがアサインされます。デフォルトでは、リーダーは常にルーム内の最初のクライアントです。
権限
デフォルトではサンプルのため、全てのクライアントに完全な権限が付与されています。完全な権限とは、ユーザーが自由にマップを編集したり、ゲームステートを変更したりできることを意味します(プレイモードの開始や終了など)。
システム
- EditModeMoveSystem
- 編集モードで移動を処理します。
- PlayModeMoveSystem
- プレイモードで移動を処理します。
- LevelEditorStateSystem
- エディターのステートをトラッキングします
- ステートに応じて適切なシステムを無効化/有効化します。
- MapLeaderSystem
- エディターの現在のリーダーをトラッキングします。
- 現在のリーダーが退出した場合、新しいリーダーをアサインします。
- MapSpawningSystem
- レベルエディターの編集コマンドを処理します。
- MapStaticMeshSystem
- ランタイム時のMapのメッシュ生成を処理します。
- PlayerObjectSystem
- プレイヤーのスポーンとデスポーンを処理します。