# Diarkis Client SDK

## Introduction

The Diarkis Client SDK (hereinafter referred to as the Client SDK) is an SDK that enables applications running on various platforms to connect to the Diarkis server and utilize Diarkis's capabilities.

**C++ version** and **C# version** SDKs are provided and can be used from each respective language. The **Diarkis Client Runtime (hereinafter referred to as the Runtime)** included in the Client SDK absorbs platform differences to provide a common API, allowing you to use Diarkis's features across different platforms with the same code. Sample implementations for using Diarkis are provided for Unreal Engine with the C++ version and Unity with the C# version.

A license for Diarkis is required to download the Client SDK and samples. For more details, please [License and Billing](/en/support/license-and-billing.md).

## Supported Platforms

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

## Setting Up the Client SDK

The Client SDK is distributed in zip archives for each platform and can be used simply by extracting the archives.\
The packages for Windows/macOS/Linux, which are intended as development environments, contain a full set of base files, while packages for other platforms contain only the differences needed to pair with the main development environment packages. Therefore, first extract the package for the main development environment, and then extract the packages for other platform development environments in the same location.\
Due to its configuration, the same file may be included in multiple packages, but it is not an issue if you overwrite files during extraction.

## Package Structure

### C++ SDK Package

```
. # Package root
|   CHANGELOG.md
|   SAMPLE_README.md
|   
+---diarkis-module # Source code for diarkis-module
|   +---Client
|   |   +---Private
|   |   \---Public
|                   
+---include # Header files for the Diarkis Runtime Library
|   \---diarkis
|               
+---platforms # Platform-specific header files and libraries
|   \---win-vs2019 
|       +---include
|       \---lib
|                           
+---samples # C++ Samples
|   +---directmessage_simple
|   +---group_sample
|   +---matching_and_turn
|   +---matchmaker_ticket
|   +---p2p_rudp_sample
|   +---room_broadcast
|   \---session_simple
|               
\---third-party # Third-party libraries, etc.
```

## Runtime Structure

The Runtime is composed of the **Diarkis Runtime Library** and the **Diarkis Module**.

The **Diarkis Runtime Library** contains core features of the runtime and is provided as a pre-built library. For details, refer to the [**Diarkis Runtime Library**](/en/diarkis-client/runtime-library.md). The **Diarkis Module** is a framework that implements the functions and necessary implementations to use the **Diarkis Runtime Library** in an application easily, and is provided in source code form. For details, see [**Diarkis Module**](https://github.com/Diarkis/diarkis-help-center/blob/main/gitbook/renewal/en/diarkis-client/diarkis-module.md).

## Diarkis Runtime Library

### Overview

The **Diarkis Runtime Library** contains the core low-level functionalities of the runtime.

### Main Features

* Core Features
  * Diarkis TCP/UDP/RUDP communication
  * Thread management
  * Memory management and custom allocator
  * NAT type detection
* Diarkis Features
  * Room module
  * MatchMaker module
  * Field module
  * P2P module
  * DM (Direct Message) module
  * Session module
  * Group module

For more details about the Diarkis Runtime Library, refer to the [Diarkis Runtime Library](/en/diarkis-client/runtime-library.md).

## Diarkis Module

### Overview

While the **Diarkis Runtime Library** provides low-level features, additional functionalities are required to operate as an actual application.\
The **Diarkis Module** is a framework designed to make it easy to incorporate the runtime into applications by providing necessary implementations and convenient features to use the **Diarkis Runtime Library**.\
The source code is located in the following location within the package:

`diarkis-module`

For more details about the Diarkis Module, refer to [Diarkis Module](https://github.com/Diarkis/diarkis-help-center/blob/main/gitbook/renewal/en/diarkis-client/diarkis-module.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.diarkis.io/en/getting-started/diarkis-client-sdk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
