1. ヘルプセンター
  2. Diarkis の始め方
  3. オンライン・マルチプレイ機能

グローバル・ロビーの作り方

Diarkis を使うとオンラインで他のプレーヤーと一緒に遊ぶためのロビーを簡単に作ることができます。 グローバル・ロビーは接続しているプレイヤー全員が参加できるロビーです。

必要な Diarkis Module

グローバル・ロビーを作るのに必要な Diarkis の モジュールは主に Diarkis Room と Diarkis MatchMaker Diarkis Group になります。もちろんこの他にも別のモジュールも一緒に使うことが可能です。

グローバル・ロビーができること

以下にロビーを使って実現できる代表的な機能例を説明します。

  • グローバル通知を送受信する
  • 新しいルームを作る (ゲームセッション)
    • Diarkis Room を使ってマルチプレイを遊ぶ
    • Diarkis P2P を使ってマルチプレイを遊ぶ
  • カテゴリーを指定して参加できるルームの一覧を取得する
  • ランダム・マッチをする

グローバル通知を送受信する

Diarkis Group では同じグループ ID を維持したまま破棄されない Static Group というグループを作成する機能があります。これを使って対象のプレーヤー全員を参加させることでグローバル通知の送受信をすることが可能になります。

ルームを作る (ゲームセッション)

Diarkis Room を使って新しいルームを作成することができます。

ルームの作り方はこちらを参照ください。

作成したルームに対してカテゴリを設定することで、カテゴリごとに他のプレーヤーが検索して新しく作られたルームを探すことができるようにすることも可能です。

ゲームセッセッションでは、Diarkis Room あるいは Diarkis P2P を使ってマルチプレイを遊ぶことが可能になります。

Diarkis Room を使ったマルチプレイ

Diarkis Room を使ったマルチプレイはリレー通信を使った同期になります。ルームに参加しているプレーヤー同士で Diarkis Room の機能である BroadcastTo または MessageTo を使ってプレーヤー同士で同期を取ることでマルチプレイを実現します。

Diarkis P2P を使ったマルチプレイ

ルームに参加したプレーヤー同士が Diarkis Room の機能である BroadcastTo を使ってお互いのクライアントアドレスを交換して Diarkis P2P を使うことで peer-to-peer 通信を使い同期を取ることでマルチプレイを実現します。

NOTE:Diarkis P2P は Diarkis UDP Client にのみ対応しています。

自分のクライアントアドレスを取得する方法: C# Client SDK

string myClientAddress = diarkisUDPClient.GetAddress();

カテゴリごとに参加できるルームの一覧を取得する

Diarkis Room では作成されたルームに対してカテゴリをつけることが可能です。カテゴリをつけられたルームはカテゴリごとに検索することができるようになります。

ルームにカテゴリをつける方法

ルームにカテゴリをつけることができるのはルームを作成したオーナー・プレーヤーのみです。

ルームの作成方法はこちらを参照ください。

NOTE: 以下の例は C# Client SDK を使用しています。

// For example, category = 1 means difficulty HARD
uint category = 1;

// Room name that you may assign to the room
string roomName = "For hardcore players only";

// Any information that you may want to assign to the room
string roomMetadata = "No noob allowed lol";

// Capture the server response of room.Register
room.OnRegister += (bool success, byte[] message) =>
{
// This event is the response of room.Register
}

// This is how to assign the category to a room that the client has already joined
room.Register(category, roomName, roomMetadata)

カテゴリごとにルームの一覧を取得する方法

NOTE: 以下の例は C# Client SDK を使用しています。

// For example, category = 1 means difficulty HARD
uint category = 1;

// This controls how many rooms to retrieve
uint howManyItemsToRetrieve = 10;

// This capture the server response to receive the list of rooms
room.OnFindRoomsByType += (bool success, List<RoomListItem> rooms) =>
{
// Loop the list to work your magic!
for (int i = 0; i < rooms.Cont; i++)
{
string roomID = rooms[i].GetID();
string roomName = rooms[i].GetName();
string roomMetadata = rooms[i].GetMetadata();
}
}

// This is how to request for the list of rooms
room.FindRoomsByType(category, howManyItemsToRetrieve);

Random Matchmaking

Diarkis MatchMaker を使うことで柔軟でスケーラブルなランダム・マッチングを実装することが可能です。

マッチングの設置方法はこちらを参照ください。