Companion
概要
Companion は、プレイヤーごとの専用フォロワーを提供します。ペット、ガイド、ドローン、マスコットなど、どこへ行ってもプレイヤーの後ろをついて歩く存在です。コンパニオンはオーナーにだけ見える NPC(または ModelEngine モデル)なので、実際のワールドにエンティティを追加することなく、全プレイヤーがそれぞれ自分のコンパニオンを持てます。
コンパニオンは、TypeWriter で普段使っているエンティティ定義で記述し、オーディエンスに紐づけます。オーディエンスに入ったプレイヤーにはコンパニオンが付き、オーディエンスから出ると消えます。プレイヤーは、エンティティ定義ごとに 1 体ずつ、同時に複数のコンパニオンを持てます。
機能
- 専用コンパニオン — 各コンパニオンはパケットエンティティで、オーナーにだけ表示されます。
- NPC または ModelEngine — 定義には NPC 定義または ModelEngine モデル定義を使えます。
- 追従動作 — コンパニオンはプレイヤーから
minDistance〜maxDistanceブロックの範囲に留まり、小さな段差を乗り越え、地面の上にとどまります。 - 自動キャッチアップ — ワールド移動やテレポートの後、または大きく遅れたときに、プレイヤーのもとへテレポートします。
- 歩行・待機アニメーション — ModelEngine モデルでは、コンパニオンの動きに合わせて待機アニメーションと歩行アニメーションが切り替わります。
- 追従または待機 — アクションで、コンパニオンの追従と静止を切り替えられます。
- クリックトリガー — プレイヤーが自分のコンパニオンを右クリックするとイベントが発火します。
- 同時に複数体 — プレイヤーはエンティティ定義ごとに 1 体のコンパニオンを持てます。同じ定義を再度召喚すると、古いコンパニオンは置き換えられます。
- アクティブ数 — ファクトで、プレイヤーが現在持っているコンパニオンの数がわかります。
インストール
- TypeWriter の拡張機能 Entity、Quest、Basic、RoadNetwork が未インストールの場合は、Web パネルの Extensions タブからインストールします(TypeWriter ドキュメントを参照)。Companion はこれら 4 つの公式拡張機能に対してビルドされています。
- 任意: NPC の代わりに 3D モデルを使いたい場合は、TypeWriter の ModelEngine 拡張機能と ModelEngine プラグインをインストールします。Companion はこれらがなくても動作します。
- Companion の JAR を
plugins/Typewriter/extensions/に置き、サーバーを再起動します。
はじめに
すべてのプレイヤーに追従するコンパニオンを付ける手順です。
- TypeWriter の Web パネルで、コンパニオン用の NPC 定義(または ModelEngine 定義)を作成します。名前、スキンまたはモデルを設定します。
- manifest ページを開き、Companion Invocation エントリを追加します。
definitionに、作成したエンティティ定義を設定します。デフォルトの待機動作を使う場合はactivityを空のままにし、独自の動作にしたい場合はエンティティアクティビティを選びます。minDistance(プレイヤーが止まっているときにコンパニオンが停止する位置)とmaxDistance(プレイヤーが歩いているときに後ろに離れる距離)を調整します。デフォルトは2.0と4.0です。- 一部のプレイヤーだけに限定する場合は、
criteriaを追加します(例: 購入済みペットのファクトチェック)。空のままにすると、オーディエンス内の全員に付きます。 - パブリッシュします。コンパニオンがプレイヤーの後ろに現れます。
プレイヤーがコンパニオンを止めたり再開したりできるようにするには、Companion Follow Mode アクションを使います。クリックに反応させるには、Companion Interact イベントを追加し、ダイアログやメニューなど、起動したいエントリをリンクします。
Companion Follow Mode には独自の minDistance と maxDistance があります。アクションが実行されると、コンパニオンの距離が上書きされます。変更したい場合を除き、Invocation と同じ値にしておいてください。
仕組み
プレイヤーがオーディエンスに入ると、コンパニオンはプレイヤーの後ろ maxDistance ブロックの位置にスポーンします。その後は毎ティック移動します。プレイヤーが立ち止まっているときは minDistance を保ち、プレイヤーが動いているときは maxDistance を保ち、大きく遅れたときは加速します。ワールドが変わったとき、テレポートの後、maxDistance の 8 倍以上離れたとき、または maxDistance の 4 倍より遠い位置で動けなくなったときは、プレイヤーの隣にテレポートします。
プレイヤーがオーディエンスから出るかログアウトすると、コンパニオンは削除されます。ワールド移動の後は、コンパニオンは削除され、再び召喚されます。コンパニオンは保存されません。プレイヤーが参加するたびに、オーディエンスから再作成されます。
エントリ
4 件のエントリー(拡張機能のソースから生成)。
アクション1
- Companion Follow ModeToggle companion follow or wait mode
イベント1
- Companion InteractTriggers when the player clicks their companion
ファクト1
- Companion ActiveNumber of active companions the player has
オーディエンス1
- Companion InvocationSpawn and manage the player's companion
トラブルシューティング
コンパニオンがまったく表示されない。 エントリには有効な definition が必要です。空であるか削除されていると、何も召喚されません。定義は NPC または ModelEngine の定義でなければなりません(フィールドにはそれらしか表示されません)。また、プレイヤーが criteria と、Invocation が属するオーディエンスに一致しているかも確認してください。
モデルではなく、ただの NPC になる。 ModelEngine 対応は任意で、実行時に検出されます。ModelEngine 拡張機能がインストールされていて、定義が ModelEngine 定義であることを確認してください。アニメーションは、その定義の待機・歩行アニメーション名から検索されます。
コンパニオンが動かない。 追従モードは、Companion Follow Mode アクションが実行されるたびに切り替わります。アクションが 1 回実行された場合、コンパニオンは待機します。もう一度実行すると再開します。アクションに definition がない場合は、プレイヤーのすべてのコンパニオンが切り替わります。
コンパニオンをクリックしても何も起きない。 Companion Interact は、プレイヤー自身のコンパニオンに対するメインハンドでの右クリックにのみ反応します。triggers がリンクされていることと、criteria が一致していることを確認してください。
コンパニオンがラグったり、おかしな場所に浮いたりする。 コンパニオンは自分の位置の下にある地面の上を歩き、1〜2 ブロックの段差しか登れません。非常に狭い場所や凹凸の激しい場所では引っかかることがあります。プレイヤーから十分離れると、自動的にテレポートで戻ります。
関連する拡張機能
- Dialog Menu — プレイヤーがコンパニオンをクリックしたときにダイアログ画面を開きます。