Diarkis サーバーを Windows 環境で起動する

はじめに

Diarkis サーバーを Windows バイナリとしてビルドして動かすこともできます。

これにより、Windows マシン上で開発するクライアントエンジニアが WSL なしで Diarkis サーバーを動作させることが可能となり、開発作業の効率化に役立てる事ができます。

ただし、本番環境での利用は想定していないので、ローカル環境や開発環境での利用にとどめてください。

動作環境

2025-04-04 現在、以下の環境での動作を想定しております。

  • Windows 10/11

  • Go 1.22 以上

  • (git でリポジトリを close する場合は git)

手順

必要なツールのインストール

Go 1.22 以上をインストールします。https://go.dev/doc/install

scoop などのパッケージマネージャーを使ってインストールすることも可能です。

> scoop install go

Diarkis Server Template のインストール

リポジトリをクローンする場合

https://github.com/Diarkis/diarkis-server-template をクローンします。

> git clone [email protected]:Diarkis/diarkis-server-template.git
# 必要に応じて利用するバージョンのタグをチェックアウトします
> git checkout v1.1.0-beta1

アセットをダウンロードする場合

https://github.com/Diarkis/diarkis-server-template/releases を開き、最新バージョンの Assets をダウンロードし、解凍して利用します。

プロジェクトの生成

PowerShell から以下のコマンドを実行して、プロジェクトを生成します。

# parameters: {project_id} {builder_token} {output}
> .\run-mage.bat init 12345678901 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ../server_bin
  • project_id: 弊社が発行したプロジェクトID

  • builder_token: 弊社が発行したBuilder Token

  • output: 生成したプロジェクトの出力先。ここでは ../server_bin として説明します

プロジェクトの初期化

プロジェクトを出力したディレクトリに移動し、以下のコマンドを実行します。

> cd ..\server_bin
> .\run-mage.bat init

ビルド

以下のコマンドを実行して、Diarkis のサーバーバイナリをビルドします。

> .\run-mage.bat build:local

ビルドが終了すると、 remote_bin ディレクトリにバイナリが出力されます。

実行

mars, http, udp をそれぞれ起動します。それぞれ別の PowerShell のウィンドウで起動します。

> .\run-mage.bat server mars
> .\run-mage.bat server http
> .\run-mage.bat server udp

動作確認

Go のテストクライアントを使って疎通確認ができます。

# parameters: <HTTP address> <client user ID> <client key> <puffer enabled: true/false>
> .\run-mage.bat goCli 127.0.0.1:7000 user-1 key false
  • HTTP address: Diarkis HTTP サーバーのアドレス

  • client user ID: 認証するユーザーの ID。

  • client Key: クライアントキー。開発環境では、key を指定します

  • puffer enabled: Diarkis Puffer モジュールの利用可否。ここでは false を指定します

正常に認証できると、以下のような表示になり、コマンド待ち受け状態となります。

[UID: user-1][SID(UDP): 23942c034d8d4094b09ab7219d28cebc]
 > Connected UDP

接続後、 Room の作成をする場合は以下のコマンドを実行して作成することができます。

 > Connected UDP
room create
Enter for which protocol to a create a Room (TCP/UDP): (Default: UDP)
Invalid input. Set to default value: UDP
Enter max members [1 - 255] (uint16): (Default: 10)
Invalid input. Set to default value: 10
Enter if allow empty (y/n): (Default: no)
Invalid input. Set to default value: false
Enter if join on creation (y/n): (Default: yes)
Invalid input. Set to default value: true
Enter TTL (seconds) [10 - 65535] (uint16): (Default: 30)
Invalid input. Set to default value: 30
Enter broadcast interval (milliseconds) (uint16): (Default: 100)
Invalid input. Set to default value: 100
# UDP RoomID がプロンプトに表示されて Room に参加している状態となる
[UID: 1111][SID(UDP): c51ea8010bc44ea5b6cd6ef2bb788ad8][UDP RoomID: 580e3cef8588bd287f0000011fa5000000000000000000000000]

補足

テストクライアント

テストクライアントでは room create コマンド以外にも様々なビルトインコマンドを実行して確認することができます。詳細はヘルプセンターの以下ページをご確認ください。

magefile

.¥run-mage.bat は内部で magefile という Go のツールを利用しています。

make/rake などのようなビルドツールで、Go でビルドフローなどを記載することで、プラットフォームに依存しない管理ができるようになります。

他のターゲットを確認する場合は、以下のように引数なしで実行することで確認できます。

> .\run-mage.bat
Targets:
  build:linux              Build server binary for linux or container environment
  build:local              Build server binary for local use
  build:mac                Build server binary for mac use
  diarkis:changeVersion    Change diarkis version.
  diarkis:version          Print the version of diarkis currently used.
  goCli                    Starts Go test client.
  init                     Initialize project
  puffer:clean             Delete all generated protocol code files.
  puffer:gen               Generate go, cpp, and cs code files using puffer (Diarkis packet gen module) from packet definition written in json.
  server                   Start a server locally: Required 1 following argument: mars http udp tcp

最終更新

役に立ちましたか?