ボットプレイヤー作成ガイド
ボットプレイヤーは、マルチプレイヤーの世界を開始するのに十分な人数がいないときや、プレイヤーが世界から離脱したときに補填するために使用されます。
ボットプレイヤーの動作は、各コンテンツに対して実装する必要があります。
このガイドは、ボットプレイヤーを作成する一般的な方法を説明しています。
📘 ボットプレイヤー作成ガイドは、マルチプレイヤーガイドに基づいています。[マルチプレイを作る]
1-1. マルチプレイヤースキーマに「IsBot」というブール値を追加します。
1-2. サーバースクリプト index.ts にボットプレイヤーを作成するための以下の関数を定義し、必要なポイントで呼び出します。
👍 ヒント
- 特定のユーザーの userId は、ボットプレイヤーキャラクターを作成するために事前に保存されています。
- サーバーの OnJoin に接続しているクライアントの userId を確認することで、特定のユーザーの UserId を確認できます。以下のスクリプトをサーバースクリプトに書いた後、関連するワールドから接続してください。
2-1. サーバーがボットプレイヤーを作成する場合、クライアントはそれを OnJoinPlayer() で新しいプレイヤーとして認識します。
- プロジェクトを作成 > 作成 > ZEPETO > TypeScript として作成し、BotPlayerManager に名前を変更します。
- OnAddedPlayer() にロジックを追加して各プレイヤーを作成し、ボットプレイヤーを区別してその ZEPETO キャラクターを作成するロジックを追加します。
2-2. SetBotPlayer関数を作成して、ボットプレイヤーにタグと同期コンポーネントを追加し、それらを制御するスクリプトを作成します。
- ボットプレイヤーのデータを管理するために、Map形式で_botMapDataに保存します。
👍 ヒント ボットプレイヤーの動作を制御するために、SetBotPlayer()に追加のスクリプトや設定を追加できます。
開始するために特定の数のプレイヤーが必要なワールドでは、時々プレイヤーが不足していて、ワールドが開始するまで長い間待たなければなりません。
この場合、Botプレイヤーを追加することで世界を開始できます。
3-1. index.tsでサーバーがクライアントからメッセージを受信したときにCreateBot()を実行する関数を登録します。
3-2. クライアントスクリプトBotPlayerManager.tsで、サーバーに"CreateBot"メッセージを送信する関数を書きます。
- 関数を実行する方法は、ボタンを押してメッセージを送信することです。
- 作成されるBotプレイヤーのユーザーIDを文字列としてメッセージを通じて送信します。
3-3. さて、サーバーとランタイムを実行すると、ボットプレイヤーがボタンを押すと作成されるのがわかります。
プレイヤーが不足している場合、ボットプレイヤーを追加して世界を開始できます。
4-1. サーバースクリプトで、OnJoin中に以下のコードを追加して、プレイヤーの数を確認し、4人以上のプレイヤーがいるときにワールドを開始します。
- CreateBot()内でプレイヤーの数を確認する関数を追加します。
- StartWorld()関数内でプレイの数をカウントする機能を追加します。
- サーバーでは、実際のプレイヤーが部屋に参加するときに OnJoin が実行されます。したがって、CreateBot を介して Bot プレイヤーが作成され、OnJoin を介してプレイヤーが入るとき、checkPlayerNumber() は人数を追加します。
4-2. クライアントスクリプト BotPlayerManager.ts で、サーバーから StartWorld メッセージを受信したときに実行される StartWorld() を記述します。
4-3. 実行時に、Bot プレイヤーを含む 4 人以上のプレイヤーがいる場合、サーバーコンソールとクライアントのコンソールに「World Start」というログが表示されます。
以下は、追加されたボットプレイヤーをローカルプレイヤーの位置に移動させ、移動位置を同期させるサンプルコードです。
5-1. まず、サーバーのindex.tsでクライアントから受信したメッセージのときにボットプレイヤーを移動させるコードを書きます。MoveBotが受信されると、
5-2. クライアントスクリプトのBotPlayerManager.tsで、buttonCallBotが押されたときにローカルプレイヤーの位置をサーバーに送信するSendBotPosition()を書きます。
- メッセージ MoveBotToPosition がサーバーから受信されたときに、すべてのボットプレイヤーをメッセージに含まれる位置情報に移動させるコードを書いてください。
5-3. さて、ランタイムでボットプレイヤーを作成し、buttonCallBot ボタンを押すと、作成されたボットプレイヤーがローカルプレイヤーのキャラクターの位置に移動するのが見えるはずです。