# Channel Identifiers For Large Scale Games

> Use channel identifiers for large-scale game servers with Vivox.

以下のいずれかに当てはまる場合は、チャンネル識別子を構成するときにご注意ください。

* アプリケーションの PCU (ピーク時同時接続ユーザー数) が 100,000 を超えると予想される
* マルチチャンネル機能の使用を想定している

大規模なゲームは、Vivox Operations の裁量により、複数の物理オーディオサーバー ("シャード") に分割できます。以下の形式を使用してチャンネル識別子を構成してください。

*shard*-*group*

例えば、ユーザーを地理的地域 ("北米" の場合は "NA") で割り当てる "Queen of the Death" (QotD) というアプリケーションについて考えてみましょう。さらに、QotD では試合のすべての参加者用に 3D チャンネルに参加し、その後スクワッドのメンバー用に 2D チャンネルに参加するとします。このケースでの QotD にとってのベストプラクティスは、以下の基準を適用することです。

* ハッシュを使用してマッチを識別する
* チャンネル識別子の "シャード" 部分に、地域とマッチの識別子を加える
* チャンネル識別子の "シャード" 部分の後に 3D とスクワッドの識別子を加える

そのマッチに割り当てられているマッチ識別子は `d0634bad1ca5a9cd` で、3D 空間は `tundra` です。さらに、スクワッドには 1 を始めとする整数値の ID が割り当てられており、[Channel3DProperties](./positional-channel-properties.md) はすでに変数 `NewChannelProps` に設定されていると仮定します。

* ポジショナルチャンネル

  ```plaintext
  string shard = "NA";
  string matchId = "d0634bad1ca5a9cd";
  string positionalSpaceId = "tundra";
  Channel3DProperties NewChannelProps = new Channel3DProperties(/* Add your own custom positional channel proprties here */);
  await VivoxService.Instance.JoinPositionalChannelAsync($"{shard}.{matchId}-{positionalSpaceId}", ChatCapability.AudioOnly, NewChannelProps);
  ```

* スクワッド 1 のグループチャンネル

  ```plaintext
  string shard = "NA";
  string matchId = "d0634bad1ca5a9cd";
  int squadId = 1;
  await VivoxService.Instance.JoinGroupChannelAsync($"{shard}.{matchId}-{squadId}", ChatCapability.AudioOnly);
  ```

* スクワッド 2 のグループチャンネル

  ```plaintext
  string shard = "NA";
  string matchId = "d0634bad1ca5a9cd";
  int squadId = 2;
  await VivoxService.Instance.JoinGroupChannelAsync($"{shard}.{matchId}-{squadId}", ChatCapability.AudioOnly);
  ```
