マルチプレイ
ZEPETOマルチプレイは、複数のユーザーが同時にワールドに接続してプレイできるモジュールです。
サーバー/クライアントの開発とローカルテスト環境を提供します。
📘公式マルチプレイワールドサンプル
[プロジェクト]パネルの左上の[+]メニューからZEPETO → マルチプレイサーバーを選択するか、Assets → Create → ZEPETO → マルチプレイサーバーに移動します。
World.multiplayパッケージは以下のアイテムで構成されており、ワールドが公開されると自動的に更新されます。
- index.ts: サーバーのメインロジックコード
- schemas: サーバー/クライアント通信のデータ構造
❗️ 注意
ゲームごとに1つのWorld.multiplayパッケージしか作成できません。
下の画像に示されているように、[ワールド設定を開く]をクリックしてワールド設定を行います。
プロパティ | 説明 |
---|---|
バージョン | 登録するファイルのバージョンを入力してください。 |
最大クライアント数 | 部屋にアクセスできる最大人数を設定します。 |
オリエンテーション | 画面の向きを選択します。 |
招待を無効にする | 部屋の招待機能を無効にします。 |
部屋リストを無効にする | 部屋リストを確認する機能を無効にします。 |
プライベートルームを無効にする | プライベートルームを作成する機能を無効にします。 |
👍 招待を無効にする
部屋の招待機能がオフでも、テストリンクを通じて招待を送信できます。
ZEPETO Multiplayは、クリエイターが開発中にサーバー/クライアントをテストできるローカルサーバー環境を提供します。
ローカルサーバーのアクションを確認するには、Unityのトップメニューから → ウィンドウ → ZEPETO → マルチプレイサーバーを選択して、サーバーステータスウィンドウを開きます。
エディターの画面中央にある[▶︎(再生)]ボタンの隣にあるサーバーボタンをクリックします。
サーバーステータスペインで次のサーバーログが表示されます。
ZepetoWorldMultiplayコンポーネントは、クライアント側で使用されるマルチプレイマネージャークラスです。
HierarchyウィンドウにGameObjectを作成し、ZepetoWorldMultiplayコンポーネントを追加します。 ZepetoWorldMultiplayコンポーネントは、自動的にマルチプレイパッケージに接続します。
エディタ画面の中央にある[▶︎(再生)]ボタンをクリックして、サーバーログウィンドウでクライアント接続ログを表示します。
開発サーバーはlocalhost(127.0.0.1)で実行され、ポートはプロジェクトが最初に読み込まれるときに設定されます。
マルチプロジェクトを通じて接続する場合、接続環境を以下のように設定してください。
📘 以下のガイドを参照してください マルチプレイIPアドレスへのアクセス
👍 ワールドが配信された後、ZEPETOサーバーで実行されます。
サーバーロジックの実装
World.multiplayパッケージ内のindex.tsファイルは、サーバーの主要なロジックを担当するコードです。
index.tsファイルを開き、onCreate()イベントでメッセージタイプechoを受信した後にクライアントに配信されるロジックを追加します。
📘 以下のガイドを参照してください [Zepeto.Multiplay(Server) API]
クライアントロジックの実装
ZepetoWorldMultiplay GameObjectにZEPETOスクリプトを追加して、サーバーイベントを送受信するために次のようにします:
📘 次のガイドを参照してください [err]
エディタ画面の中央にある[▶︎(再生)]をクリックして、サーバー/クライアントを実行します。以下に示すように、'echo'タイプのメッセージの例が表示されるはずです:
① サーバーでクライアントメッセージを受信したときの出力ログ。
② クライアントからサーバーに受信したメッセージのログ。
❗️ 注意
[サーバーコード内の変数の使用]
- 変数はサーバーコード内でも宣言できます。
- ただし、サーバーで利用可能なキャッシュメモリは現在512KBに制限されています。(これは後で変更される可能性があります。)
- 512KBを超えると、部屋が隠れる可能性があるため、これを考慮して開発してください。
[サーバーコード内のループの使用]
- ループの時間制限はサーバーコードで2秒(2000ms)に設定されています。
- ブロッキングコードや長時間実行されるループを使用すると、ループの時間制限によりプログラムが正しく実行されない可能性があるため、開発時に考慮してください。