HowToUsePlugin.md

目次

インストール方法

1. Unity パッケージのインポート

対象のプロジェクトに、DiarkisUnityPlugin.unitypackageをインポートします。

2. 接続情報の設定

Assets/Diarkis/Prefabs/DiarkisNetworkManagerを選択し、 Inspector にDiarkisNetworkManagerのスクリプトを表示させます。

次にTransportと書かれた項目をクリックして中身を表示し、Diarkis との接続情報を以下のように設定します。

設定項目役割入力例

HttpHost

EndPoint URL の値

asia-northeast1.diarkis.io/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

ClientKey

Client Key の値

XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX(※空でも OK)

3. プレハブのシーンへの配置

設定を済ませたDiarkisNetworkManagerのプレハブを、シーンに配置します。

AutoStartConnectにチェックが入っているのを確認して(※デフォルトで On になっています)、 エディタ上部にある再生ボタンをクリックします。

これで Diarkis サーバー との接続が、自動的に開始されます。

プラグインの利用方法

DiarkisNetworkManager プレハブの設定方法

DiarkisNetworkManagerは Diarkis との接続を担う重要なクラスで、必ずシーンに配置されている必要があります。

重要な設定項目として、以下のものがあります。

設定項目役割

Transport.HttpHost

EndPoint URL の値

Transport.ClientKey

Client Key の値

Transport.AutoRetryTimes

Diarkis サーバー との接続に失敗した際のリトライ回数

AutoStartConnect

Diarkis サーバー との接続を自動で開始するかどうか

IsWaitDisconnectOnAppQuit

アプリを終了するときに Diarkis サーバーとの切断処理の完了を待つかどうか

WaitDisconnectTime

上記処理を待つ最大時間。この時間が過ぎた場合、アプリは強制的に終了する

ネットワークへの接続&切断をリクエストする

Diarkis ネットワークに接続(or 切断)するには、DiarkisNetworkManagerを通して関数を呼び出します。

// ネットワークへの接続&切断のサンプルコード
public void Connect(string httpHost, string clientKey)
{
    DiarkisNetworkManager.Instance.Connect(httpHost, clientKey);
}

public void Disconnect()
{
    DiarkisNetworkManager.Instance.Disconnect();
}

ネットワークへの接続&切断のレスポンスを受け取る

サーバーからの応答はイベントとして受け取ることができます。

まずイベントを発生させる為のコンポーネントをシーンに追加します。

適当なGameObjectをシーンに追加して、それにDiarkisCoreEventCallbackのコンポーネントをアタッチします。

このコンポーネントには関数を登録することができ、イベントの発生に合わせてその関数をトリガーしてくれます。

関数を登録するために、以下のようなクラスを作ります。

using UnityEngine;

public class SampleScript : MonoBehaviour
{
    // OnNetworkConnectイベントを受け取る関数
    public void ReceiveOnNetworkConnectEvent(bool reconnected)
    {
        Debug.Log("Connected to the network.");
    }

    // OnNetworkDisconnectイベントを受け取る関数
    public void ReceiveOnNetworkDisconnectEvent(bool reconnecting)
    {
        Debug.Log("Disconnected from the network.");
    }
}

このスクリプトを適当なGameObjectにアタッチし、 イベント発生時に呼ばれたい関数をDiarkisCoreEventCallbackに登録します。

こうしてサーバーからのレスポンスを受け取ることができます。

各種モジュールを利用する

Diarkisには以下のモジュールが存在します。

モジュール名対応するイベントコンポーネント

Room

Assets\Diarkis\Runtime\Extension\MonoBehaviour\Callbacks\Modules\DiarkisRoomEventCallback.cs

Group

Assets\Diarkis\Runtime\Extension\MonoBehaviour\Callbacks\Modules\DiarkisGroupEventCallback.cs

Field

Assets\Diarkis\Runtime\Extension\MonoBehaviour\Callbacks\Modules\DiarkisFieldEventCallback.cs

MatchMaker

Assets\Diarkis\Runtime\Extension\MonoBehaviour\Callbacks\Modules\DiarkisMatchMakerEventCallback.cs

P2P

Assets\Diarkis\Runtime\Extension\MonoBehaviour\Callbacks\Modules\DiarkisP2PEventCallback.cs

データの送信には、各種モジュールの該当する関数を呼び出します。

データの受信には、対応するイベント・コンポーネントをシーンに配置し、それに関数を登録することで受け取ることができます。

例としてRoomモジュールを使って部屋を新規作成してみます。

Roomモジュールからリクエストを送信する

以下のコードはRoomモジュールを使って新しい部屋を作成するコードになります。

// 新しい部屋を作成するサンプル・コード
public void CreateRoom(ushort maxMembers, bool allowEmpty, bool join, ushort ttl, uint interval)
{
    DiarkisNetworkManager.Instance.Modules.Room.Create(maxMembers, allowEmpty, join, ttl, interval);
}

Roomモジュールからレスポンスを受け取る

まず初めにシーン上に配置された適当なGameObjectDiarkisRoomEventCallbackをアタッチします。

次にイベントを受け取るために、以下のようなクラスを作成します。

using UnityEngine;

public class SampleScript : MonoBehaviour
{
    // OnRoomCreateイベントを受け取る関数
    public void ReceiveOnRoomCreateEvent(bool success, string roomId, uint roomCreatedTime)
    {
        if (success)
        {
            Debug.Log($"The room creation was succeeded. roomID={roomId}");
        }
        else
        {
            Debug.Log("The room creation was failed.");
        }
    }
}

最後にこのスクリプトをシーン上に配置し、関数をDiarkisRoomEventCallbackOnRoomCreateに登録します。

これでRoom.Createを呼び出した際の結果を、受け取ることができるようになります。

ここでは一例としてRoomモジュールを取り上げましたが、他のモジュールの使い方も同様です。

各機能のレファレンス

Core機能

名前空間

Diarkis

クラス名

DiarkisNetworkManger

アクセス方法

DiarkisNetworkManger.Instance

イベントを表すインターフェイス

IDiarkisCoreEvent

Unity用のイベントコンポーネント

DiarkisCoreEventCallback

プロパティ一覧(Core)

プロパティ役割

UID

このクライアントを一意に識別するUID。

Modules

各種モジュール(Room, Group, Field...)。

メソッド一覧(Core)

メソッド役割

IsConnected

ネットワークに接続されているかどうか。

Connect

ネットワークに接続する。

Disconnect

ネットワークから切断する。

イベント一覧(Core)

イベント役割

OnNetworkConnect

ネットワークに接続した。

OnNetworkDisconnect

ネットワークから切断された。

OnNetworkException

通信中に例外が発生した。

OnNetworkOffline

サーバーをシャットダウンする準備ができた。

OnApplicationWantsToQuit

アプリケーションを終了しようとしている。

Roomに関する機能

名前空間

Diarkis.Modules

クラス名

DiarkisRoom

アクセス方法

DiarkisNetworkManger.Instance.Modules.Room

イベントを表すインターフェイス

IDiarkisRoomEvent

Unity用のイベントコンポーネント

DiarkisRoomEventCallback

プロパティ一覧(Room)

プロパティ役割

IsJoined

Room に参加しているかどうか。

RoomID

部屋の ID。

OwnerUID

部屋のオーナーの UID。

MemberUIDs

部屋のメンバーの UID(自分&部屋オーナーを含む)。

メソッド一覧(Room)

メソッド役割

Create

部屋を作成する。

Join

部屋に参加する。

JoinRandom

ランダムに部屋に参加する。

Leave

部屋から去る。

GetOwnerID

部屋オーナーの ID を取得する。

GetMemberIDs

部屋メンバーの ID を取得する。

Broadcast

部屋全体にデータを送信する。

BroadcastTo

指定した部屋にデータを送信する。

MessageTo

指定したメンバーにデータを送信する。

SyncObjects

現状オブジェクトの状態を取得する。

UpdateObject

オブジェクトを追加・更新・削除する。

UpdateProperties

部屋のプロパティを更新する。

GetProperties

部屋のプロパティを取得する。

IncrProperty

部屋のプロパティの値をインクリメントする。

GetNumberOfMembers

部屋の人数に関する情報を取得する。

Register

部屋を登録する。

FindRoomByType

部屋を検索する。

Reserve

部屋を予約する。

CancelReservation

部屋の予約をキャンセルする。

Migrate

部屋をマイグレートする。

Move

部屋を移動する。

SendChatMessage

チャットメッセージを送信する。

GetChatLog

チャットログを取得する。

StartP2PSync

P2P 接続に切り替える為に各クライアントの接続先アドレスを取得する。

イベント一覧(Room)

イベントタイプ対応するメソッド役割

OnRoomCreate

Response

Create

-

OnRoomJoin

Response

Join

-

OnRoomLeave

Response

Leave

-

OnRoomMemberJoin

Push

-

メンバーが加わった

OnRoomMemberLeave

Push

-

メンバーが去った

OnRoomMemberBroadcast

Push

Broadcast, BroadcastTo

-

OnRoomMemberMessage

Push

MessageTo

-

OnRoomUpdateProperties

Response

UpdateProperties

-

OnRoomGetProperties

Response

GetProperties

-

OnRoomGetOwnerID

Response

GetOwnerID

-

OnRoomIncrProperty

Response

IncrProperty

-

OnRoomIncrPropertySync

Push

IncrProperty

-

OnRoomGetMemberIDs

Response

GetMemberIDs

-

OnRoomRegister

Response

Register

-

OnRoomFindRoomsByType

Response

FindRoomByType

-

OnRoomReserve

Response

Reserve

-

OnRoomCancelReservation

Response

CancelReservation

-

OnRoomGetNumberOfMembers

Response

GetNumberOfMembers

-

OnRoomChatSyncResponse

Response

SendChatMessage

-

OnRoomChatSync

Push

SendChatMessage

-

OnRoomChatLog

Response

GetChatLog

-

OnRoomStartP2PSync

Push

StartP2PSync

-

OnRoomObjectSync

Response

SyncObjects

-

OnRoomObjectUpdate

Push

UpdateObject

-

OnRoomOwnerChange

Push

-

オーナーが変わった

Groupに関する機能

名前空間

Diarkis.Modules

クラス名

DiarkisGroup

アクセス方法

DiarkisNetworkManger.Instance.Modules.Group

イベントを表すインターフェイス

IDiarkisGroupEvent

Unity用のイベントコンポーネント

DiarkisGroupEventCallback

プロパティ一覧(Group)

プロパティ役割

GroupIDs

参加しているグループの ID 一覧。

IsJoined

グループに参加しているかどうか。

メソッド一覧(Group)

メソッド役割

Create

グループを作成する。

Join

グループに参加する。

JoinRandom

ランダムにグループに参加する。

Leave

グループから去る。

BroadcastTo

グループにデータを送信する。

イベント一覧(Group)

イベントタイプ対応するメソッド役割

OnGroupCreate

Response

Create

-

OnGroupJoin

Response

Join

-

OnGroupLeave

Response

Leave

-

OnGroupMemberJoin

Push

-

メンバーが加わった

OnGroupMemberLeave

Push

-

メンバーが去った

OnGroupMemberBroadcast

Push

BroadcastTo

-

Fieldに関する機能

名前空間

Diarkis.Modules

クラス名

DiarkisField

アクセス方法

DiarkisNetworkManger.Instance.Modules.Field

イベントを表すインターフェイス

IDiarkisFieldEvent

Unity用のイベントコンポーネント

DiarkisFieldEventCallback

プロパティ一覧(Field)

プロパティ役割

-

-

メソッド一覧(Field)

メソッド役割

SyncInit

同期の初期化処理。

Sync

同期するデータを送信する。

Disappear

Field から去る。

イベント一覧(Field)

イベントタイプ対応するメソッド役割

OnFieldResponseSyncInit

Response

SyncInit

-

OnFieldSync

Push

Sync

-

OnFieldDisappear

Push

Disappear 視界から誰かがいなくなった

MatchMakerに関する機能

名前空間

Diarkis.Modules

クラス名

DiarkisMatchMaker

アクセス方法

DiarkisNetworkManger.Instance.Modules.MatchMaker

イベントを表すインターフェイス

IDiarkisMatchMakerEvent

Unity用のイベントコンポーネント

DiarkisMatchMakerEventCallback

プロパティ一覧(MatchMaker)

プロパティ役割

RoomID

マッチメイクされた部屋のID

メソッド一覧(MatchMaker)

メソッド役割

IsTeamMatchmaking

チームマッチメイキングかどうか。

HostMatchmaking

ホストマッチメイキングをする。

HostTeamMatchmaking

ホストチームマッチメイキングをする。

ClearMatchmaking

マッチメイキングをクリアする。

DisbandMatchmaking

マッチメイキングを解散する。

Kick

メンバーをキックする。

ClaimReservedMatchmaking

予約済みの部屋を取得する。

JoinMatchmakingFromResult

マッチメイキングに参加する。

LeaveMatchmaking

マッチメイキングから去る。

Sync

データを送信する。

NotifyMatchmakingCompletion

マッチメイキング完了を知らせる。

P2PAddressSync

P2P に関するアドレス情報を取得する。

SetMaxMatchMembers

マッチメイキングの人数をセットする。

Search

マッチメイキングの検索を開始する。

TeamSearch

チームマッチメイキングの検索を開始する。

Commit

チームマッチメイキングをするよう指示する。

StartBackfill

-

イベント一覧(MatchMaker)

イベントタイプ対応するメソッド役割

OnMatchMakerKickResponse

Response

Kick

-

OnMatchMakerHostMatchmakingResponse

Response

HostMatchmaking

-

OnMatchMakerHostTeamMatchmakingResponse

Response

HostTeamMatchmaking

-

OnMatchMakerAbortMatchmakingResponse

Response

ClearMatchmaking

-

OnMatchMakerDisbandMatchmaking

Push

DisbandMatchmaking

-

OnMatchMakerMemberLeave

Push

-

メンバーが去った

OnMatchMakerMemberJoin

Push

-

メンバーが加わった

OnMatchMakerMemberSync

Push

Sync

-

OnMatchMakerJoinResponse

Response

ClaimReservedMatchmaking

-

OnMatchMakerLeaveResponse

Response

LeaveMatchmaking

-

OnMatchMakerComplete

Push

-

人数が埋まった

OnMatchMakerKick

Push

Kick

-

OnMatchMakerSearchResponse

Response

Search

-

OnMatchMakerTeamSearchResponse

Response

TeamSearch

-

OnMatchMakerResultsResponse

Response

Search

-

OnMatchMakerTeamResultsResponse

Response

TeamSearch

-

OnMatchMakerP2PAddressSync

Push

P2PAddressSync

-

OnMatchMakerP2PAddressSyncResponse

Response

P2PAddressSync

-

OnMatchMakerBackfillStartResponse

Response

StartBackfill

-

OnMatchMakerCommitResponse

Response

Commit

-

OnMatchMakerCompleteCommit

Response

Commit

-

OnMatchMakerTicketComplete

Push

-

-

OnMatchMakerHostChange

Push

-

ホストが変更になった

OnMatchMakerCancelTicket

Response

-

-

P2Pに関する機能

名前空間

Diarkis.Modules

クラス名

DiarkisP2P

アクセス方法

DiarkisNetworkManger.Instance.Modules.P2P

イベントを表すインターフェイス

IDiarkisP2PEvent

Unity用のイベントコンポーネント

DiarkisP2PEventCallback

プロパティ一覧(P2P)

プロパティ役割

-

-

メソッド一覧(P2P)

メソッド役割

IsConnected

接続されているかどうか。

Connect

接続する。

Disconnect

切断する。

Send

データを送信する。

イベント一覧(P2P)

イベント役割

OnP2PReady

-

OnP2PFail

-

OnP2PMessage

-

OnP2PException

-

最終更新