# Diarkis クライアント SDK

## はじめに

Diarkis クライアント SDK (以下、クライアント SDK) は様々なプラットフォームで動作するアプリケーションから Diarkis サーバーへ接続し Diarkis の機能を使用するための SDK です。

**C++ 版**と **C# 版**の SDK が提供されており、それぞれの言語から利用することが可能です。 クライアント SDK に含まれる **Diarkis クライアントランタイム (以下、ランタイム)** では各プラットフォームの差異を吸収して共通の API を提供しており、この API を使用することにより同一のコードを使用して各プラットフォームで Diarkis の機能を使用することができます。 また、C++ 版では Unreal Engine、C# 版では Unity から Diarkis を使用するためのサンプル実装が提供されています。

クライアント SDK およびサンプルをダウンロードするには Diarkis のライセンスが必要です。詳細については、 [license-and-billing](https://help.diarkis.io/support/license-and-billing "mention")よりお問い合わせください。

## 対応プラットフォーム

* Windows 10/11
* Linux
* macOS
* PS4
* PS5
* Switch
* Xbox One(GDK)
* Xbox Series S/X
* Android
* iOS

## クライアント SDK のセットアップ

クライアント SDK は各プラットフォームごとに zip アーカイブの形で配布されており、アーカイブを展開するだけで使用することができます。\
開発環境として想定される Windows/macOS/Linux 版のパッケージにはベースとなるファイルが一式含まれており、それ以外のプラットフォームのパッケージはこれらのメイン開発環境用のパッケージと組み合わせて使用する差分のみが含まれています。そのため、先にメイン開発環境用のパッケージを展開し、同じ場所にその他のプラットフォームの開発環境用のパッケージを展開してください。\
構成の都合上、同一のファイルが複数のパッケージに含まれていることがありますが、展開時に上書きしていただいて問題ありません。

## パッケージ構成

### C++ SDK パッケージ

```
. # パッケージルート
|   CHANGELOG.md
|   SAMPLE_README.md
|   
+---diarkis-module # diarkis-module のソースコード
|   +---Client
|   |   +---Private
|   |   \---Public
|                   
+---include # Diarkis ランタイム・ライブラリのヘッダーファイル
|   \---diarkis
|               
+---platforms # 各プラットフォーム固有のヘッダーファイルやライブラリ
|   \---win-vs2019 
|       +---include
|       \---lib
|                           
+---samples # C++ サンプル
|   +---directmessage_simple
|   +---group_sample
|   +---matching_and_turn
|   +---matchmaker_ticket
|   +---p2p_rudp_sample
|   +---room_broadcast
|   \---session_simple
|               
\---third-party # サードパーティのライブラリ等
```

## ランタイム構成

ランタイムは **Diarkis ランタイムライブラリ** と **Diarkis Module** から構成されています。

**Diarkis ランタイムライブラリ** はランタイムのコアとなる機能が含まれており、ビルド済みライブラリとして提供されています。 詳細については [**Diarkis ランタイムライブラリ**](https://help.diarkis.io/diarkis-client/runtime-library) を参照してください。 **Diarkis Module** は ランタイムをアプリケーションに簡単に組み込めるように **Diarkis ランタイム・ライブラリ** を使用するために必要な実装や便利な機能を実装したフレームワークで、ソースコードの形で提供されています。詳細については [**Diarkis Module**](https://github.com/Diarkis/diarkis-help-center/blob/main/gitbook/renewal/ja/diarkis-client/diarkis-module.md) を参照してください。

## Diarkis ランタイム・ライブラリ

### 概要

**Diarkis ランタイム・ライブラリ** はランタイムのコアとなる低レベルな機能が含まれています。

### 主な機能

* 基盤機能
  * Diarkis TCP/UDP/RUDP 通信
  * スレッド管理
  * メモリ管理とカスタム・アロケーター
  * NAT タイプ判定
* Diarkis の各機能
  * Room モジュール
  * MatchMaker モジュール
  * Field モジュール
  * P2P モジュール
  * DM(Direct Message) モジュールA
  * Session モジュール
  * Group モジュール

Diarkis ランタイム・ライブラリの詳細については [Diarkis ランタイム・ライブラリ](https://help.diarkis.io/diarkis-client/runtime-library) を参照してください。

## Diarkis Module

### 概要

**Diarkis ランタイム・ライブラリ**では低レベルな機能が提供されており、実際にアプリケーションとして動かすためにはもう少し追加機能の実装が必要となります。\
**Diarkis Module** は ランタイムをアプリケーションに簡単に組み込めるように **Diarkis ランタイムライブラリ** を使用するために必要な実装や便利な機能を実装したフレームワークです。\
パッケージ内の以下の場所にソースコードが配置されています。

`diarkis-module`

Diarkis Module の詳細については [Diarkis Module](https://github.com/Diarkis/diarkis-help-center/blob/main/gitbook/renewal/ja/diarkis-client/diarkis-module.md) を参照してください。
