マルチプレイヤーについて
マルチプレイヤーの体験を使用する際の要件をご紹介します。
マルチプレイヤー機能を利用するとオブジェクトの位置や状態、環境をコントロール及び変更することができるビヘイビア やコンポーネントとのより高度な同期が可能になります。
マルチプレイヤーの機能を使うとオブジェクトが移動したり環境の変化が起こった際にすべてのプレイヤーがその変化を同時に見ることができます。
まずはDoor(ドア)のビヘイビア を例に挙げて解説します。
このビヘイビアを持ったActor(アクター)はすべてのプレイヤーが使用することができ、Collision(コリジョン)もすべてのプレイヤーに対して変更することできます。つまりドアが開くとすべてのプレイヤーのドアが開き、ドアが閉まるとすべてのプレイヤーのドアが閉まるという状況を作り出すことができます。
次にBasic Platform(ベーシックプラットフォーム)のビヘイビア を例に挙げて解説します。
このビヘイビアを持ったアクターが1つの場所から他の場所へと移動するとその動きはすべてのプレイヤー間で同期されます。
すべてのプレイヤー間で同期可能で移動するプラットフォームやドアを使用することで体験内にクリアしにくい部分を設定したり、異なるエリアへのアクセスを可能にします。
シングルプレイヤーとマルチプレイヤー
マルチプレイヤー機能は体験を作っていく際に楽しい部分でもありますが、同時に複雑な機能を重ねて作成していく細かい作業が必要な部分でもあります。
参加者が増えるにしたがってプレイヤーたちがどのように交流するのか、そのやり取りから何を生み出すかなどを考えながらより「深み」のある構造を作りだしていけるように作成していきましょう。
Synchronized(同期可能)ビヘイビア やコンポーネントは同期ができないビヘイビアやコンポーネントとはメッセージの送受信ができないため注意が必要です。
すべてのビヘイビアやコンポーネント、ツールが同期機能を持っているわけではありませんのでご注意ください。
例えばRules(ルール)のタブで作成されたクエストは同期されていないのでClient Only(クライアントオンリー)のメッセージによってのみトリガーされ、それぞれのプレイヤーは「ローカル」でクリアすることになります。
0.8 のアップデートではClient only[SP:シングルプレイヤー]とSynchronized[MP:マルチプレイヤー]でそれぞれ異なるビヘイビアとコンポーネントが新たに導入されました。
Client Only[SP:シングルプレイヤー]:ビヘイビアとコンポーネント は「ローカル」で機能するため、Client Only のビヘイビア やコンポーネントの間でのみメッセージの送受信を行うことができます。クエストの進捗状況などのメッセージや変更はマルチプレイヤーの体験内でプレイしていたとしてもそれぞれ個人のプレイヤーしか見ることができません。
Synchronized[MP:マルチプレイヤー]:ビヘイビア とコンポーネント は「グローバル」に適用されるためプレイヤーとの間で交換された1つ1つのメッセージはすべてのプレイヤーに適用され、メッセージの結果として生じる変化はすべてのプレイヤーに適用されます。
Collectible(収集品)のコンポーネントを例に挙げて解説します。
このコンポーネントは Client Only でも Synchronized でも選択することが可能です。
[SP] Collectible のコンポーネントを持つオブジェクトを拾った場合、オブジェクトは個人のプレイヤーの体験からは消えてしまいますが、他のプレイヤーがまだ拾えるように体験内には残ります。これはアクターの状態の変化が個人のプレイヤーにしか適用されないからです。
[MP] Collectible のコンポーネント を持つオブジェクトを拾った場合、オブジェクトはすべてのプレイヤーの体験から消え、一人のプレイヤーしか拾うことができないという状況が生まれます。これはアクターの状態の変化がすべてのプレイヤーに適用されるからです。
ビヘイビアとコンポーネントのリスト
SP とMP で使用可能な機能を分けたことによってビヘイビア やコンポーネントに関連する選択肢がおよそ倍に増えたことになります。
以下のチャートでは変更になったビヘイビアとコンポーネントと使用可能な環境をチャートにわかりやすくまとめてご紹介しています。
上記のリストにあるグレーで色付けされている従来のビヘイビアやコンポーネントはMPの体験とは互換性がありません。(MP COMPATIBLE のタブにNO と表示されています。) これらの機能はマルチプレイヤーでは使用できませんのでご注意ください。
ポートされていないClient only のビヘイビア やコンポーネントをマルチプレイヤーの体験で使用するとプレイヤー間での同期が適切に処理されないことがあります。
上記のアイテムの中にはSynchronized のカテゴリーでは使用可能でもClient only では使用不可となっているものも含まれています。
これはビヘイビアとコンポーネントがシングルプレイヤーの環境で使用できないという意味ではなく、それぞれのプレイヤーが体験内で各自の目的に合わせて使用できる仕様になっていないということを意味しています。
例えばBasic Platform はClient only では使用できず、ビヘイビアのウィンドウのSynchronized のフィルタからしかアクセスできない仕様になっています。この機能はシングルプレイヤーの体験で使用することはできますが、マルチプレイヤーではコリジョンと動きを全てのユーザー間で非同期にすることはできません。
マルチプレイヤーの体験でも使用できるシングルプレイヤーの機能には以下も含みます。
Asker のビヘイビア との会話 Speaker とIndicator のコンポーネント に関わる通知 Animated Decoration のビヘイビア を使用したアクションに対する反応 Message Broadcaster のようなビヘイビア によって起動するクエスト目標
ビヘイビアとコンポーネントの選択(シングルプレイヤーとマルチプレイヤー)
ビヘイビアとコンポーネントを適用するには、まずはじめにアクターを選択し、次にプロパティパネルからビヘイビアとコンポーネントの欄をクリックします。
ポップアップウィンドウが表示され、デフォルトの画面では緑色の文字でアイテムの名前の前に[SP] と表記されているClient Only の選択肢が表示されます。
デフォルトの画面でグレーの文字で表示されるビヘイビアやコンポーネントはマルチプレイヤーの体験とは互換性がありません。シングルプレイヤーの体験のみで使用してください。
ビヘイビアとコンポーネントのSynchronized を選択するにはポップアップ画面右上にType(タイプ)と書かれたドロップダウンより切り替えを行ってください。Synchronized を選択すると画面が更新され、黄色の文字でアイテムの名前の前に [MP] と表記されている選択肢が表示されます。
使用環境に合わせて使いたいアイテムが見つかったら、そのアイテムをクリックするだけで簡単に追加することができます。
[MP] と [SP]のビヘイビアとコンポーネント の色の識別は今後のアップデートでマルチプレイヤーとの互換性が確立された時点で削除される予定になっています。
シーンではオブジェクト がClient Only か Synchronized かどうかの表示はされませんのでご注意ください。
[MP] と[SP] のビヘイビア とコンポーネント を同じアクターに使用することはできません。
例:[MP] のAsker のビヘイビアを持っているものに[SP]のIndicator のコンポーネント を設定することはできません。
タイプの異なる選択肢のビヘイビア やコンポーネントを設定しようとすると以下のメッセージが表示されます。
「BLOCKED BY Network policy incompatible with another Behaviour/component assigned to the actor/s」(アクターに割り当てられたビヘイビア やコンポーネントと互換性がないためネットワークポリシーに則りブロックされました。)
それぞれのバージョンが使用環境に合わせて設計されているため、上記のような使用環境が異なる機能を同時に使用すると重大な問題が発生してしまいますのでご注意ください。
マルチプレイヤーの設定に関して
システムエラーや重大な問題等を引き起こす可能性を減らすためにアクターのType(タイプ)が常に同じであることを確認してください。
1つのアクターのすべてのビヘイビアとコンポーネントが必ずClient Only か Synchronized のどちらかになるように統一してください。
1️⃣ Type(タイプ)
特定のType のビヘイビアやコンポーネントがアクターに追加されている場合、反対の設定に自動的にアクセス制限がかかり、ビヘイビアやコンポーネントのウィンドウでは選択されていない方の項目は選択できなくなります。
2️⃣ メッセージ
Client Only に設定されているアクターはSynchronized に設定されているアクターにメッセージを送ることができないため(反対の設定も同様)、アクターのコミュニケーションを設定する際にはタイプの一貫性を保つように注意してください。
3️⃣ Hierarchy(ヒエラルキー)
アクターがClient Only に設定されている場合はSynchronized に設定されているアクターの親や子に設定することはできないため(反対の設定も同様)、アクターの親子関係を設定する際には統一性を保つように注意してください。
4️⃣ スポーンに関連するビヘイビア やコンポーネント
Asset Spawner(アセットスポナー)のビヘイビア やReplace Asset(アセットの交換)のビヘイビア、Drop(ドロップ)のコンポーネント を使用して、体験内でスポーンされたアクターには必ずスポナーと同じType を選択してください。
Synchronized のビヘイビアはClient Only のアクターをスポーンすることはできません。(反対も同様)
Last updated