Diarkis プラグインの基本的な使い方

概要

本ページでは UE プラグインを利用して Diarkis のクライアント機能を利用する際の基本を説明します。

Diarkis クライアント SDK の基本的な使用方法

UE プラグインは Diarkis クライアント SDK 相当の機能を有したプラグインとなります。 クライアント SDK では Diarkis-Module を利用してランタイムの初期化、終了処理、機能の利用等を行います。 UE から Diarkis プラグインを利用する際においても基本的には同様の実装が必要となりますので、基本的な使用方法として Diarkis-Module のドキュメント を先にご一読いただけるとこの先の説明をスムーズにご理解いただけます。

サンプルでの実装例紹介

Diarkis-Module のドキュメント で説明した点を中心にシンプルなサンプルでどのように実装されるかソースコードを交えて説明します。

初期化処理と終了処理

Diarkis Module の初期化処理と終了処理 相当の処理はおおむね以下のクラスに実装されています。

  • Source\DiarkisExtension\Public\DiarkisNetworkManager.h

  • Source\DiarkisExtension\Private\DiarkisNetworkManager.cpp

以下が実装内容の詳細となります。

  • 初期化処理

    • UDiarkisNetworkManager::Connect/UDiarkisNetworkManager::ConnectAsync の実行時にまだ未初期化であれば初期化処理を実行します

    • Diarkis Module の初期化と終了 に記載されていますように、この処理はアプリ起動後一度だけ実行する必要があります

    • UE では Editor 上での実行も考慮すると呼び出しタイミングには注意が必要となります

  • Diarkis サーバへの接続情報取得

  • Diarkis サーバへの接続

  • 終了処理

    • UDiarkisNetworkManager::Disconnect の実行時に接続先サーバがなくなったときに自動的に実行します

    • Diarkis Module の初期化と終了 に記載されていますように DiarkisDestroy の呼び出しは DiarkisInit の呼び出しに1対1で対応している必要があります

ロガー関連の実装

ログレベルの変更

  • UE プラグインでは LoggerFactory.cpp は以下の場所に存在します

    • Plugins\Diarkis\Source\Diarkis\Client\Private\logging\LoggerFactory.cpp

UE プラグインのロガー関連設定

  • ログファイルは以下のフォルダに出力されます。

    • DiarkisPluginSample/logs/○○○/および以下のフォルダ(OOOOはユーザID)。

  • Developmentビルドでもログを出力したい場合は、DiarkisInterfaceBaseのコンストラクタでbOutputLog = trueを調整してください。

  • DiarkisInterfaceBase コンストラクタでは、LogOutType でファイル出力とデバッグ出力を切り替えることができます。

Diarkis Module のカスタマイズ

Diarkis はサーバとクライアントが連携して動作する仕組みとなっており、サーバへリクエストを送信して結果をコールバックで受け取るという形が基本となっています。 この動作を実現するために Diarkis Module のカスタマイズ を行いアプリに合わせて Diarkis Module のコールバック処理等をカスタマイズする必要があります。 Diarkis プラグインサンプルではサンプルの都合に合わせてこの実装を行っており、これらのファイルが以下のフォルダに格納されています。

  • Source\DiarkisExtension\Private

Room 用のカスタマイズ実装であれば DiarkisRoomといった名前で DiarkisRoomBase を継承してサンプルの動作を実装しています。

基本となる処理や呼び出しタイミング

サーバへのコマンドの送信は各モジュールのインスタンスを使用して行います。 ここでは Room モジュールでサーバ上に部屋を作成する処理を例に使用方法を紹介します。 Room モジュールのインスタンスは DiarkisRoomBase を継承した DiarkisRoom クラスが実装されています。

  • Source\DiarkisExtension\Public\DiarkisRoom.h

  • Source\DiarkisExtension\Private\DiarkisRoom.cpp

コマンドの送信

DiarkisRoomBase には部屋を作成するコマンドを送信する DiarkisRoomBase::SendCreateRoom が用意されており、このメソッドを実行することでサーバへ部屋作成のリクエストコマンドを送信することができます。

サンプルコードでは以下のコードでこの機能を利用して部屋作成コマンドを送信しています。

Source\FieldWalker\Diarkis\UI\Room\RoomMenu.cppURoomMenu::OnCreateButtonClicked

サーバでの処理結果などの受け取り

サーバでの処理結果は Room モジュールのコールバックで受け取ることができます。 例えば、SendCreateRoom コマンドの実行結果は DiarkisRoom::OnRoomCreation で受け取ることができます。 コマンドの処理結果がどのコールバックで取得できるかは DiarkisRoomBase のような Base クラスのヘッダファイルを参照してください。 イベントコールバックは Diarkis が管理するイベントスレッドで発火するためこのコールバック内で UE 関連の機能を使用することができません。 また、コールバックが発生してからアプリに通知される際のレスポンス向上のためにもイベントスレッドで負荷の高い処理を行うことは避けることが望ましいです。 これらの課題に対応するためにサンプルでは様々なイベント処理が実装されています。 詳細については イベント処理について を参照してください。

最終更新

役に立ちましたか?