LogoLogo
日本語
日本語
  • Diarkis ヘルプセンター
  • Diarkis の概要
  • 始めよう
    • Diarkis サーバーテンプレート
    • Diarkis クライアント SDK
    • チュートリアル
      • 1. Diarkis サーバーをローカル環境で起動する
      • 2. テストクライアントで疎通確認する
      • 3. カスタムコマンドを実装する
      • Diarkis クライアントからサーバに接続する
    • サンプル
  • Diarkis のモジュール
    • Room モジュール
      • Room モジュールをサーバーでセットアップする
      • Room サンプル
        • room_broadcast
      • Room モジュールをクライアントから利用する
      • Room のその他の機能
    • MatchMaker モジュール
      • MatchMaker モジュールをサーバーでセットアップする
    • Field モジュール
      • Field モジュールをサーバーでセットアップする
    • P2P モジュール
      • P2P モジュールをサーバーでセットアップする
      • P2P サンプル
    • DM (Direct Message) モジュール
      • DM モジュールをサーバーでセットアップする
    • Notifier モジュール
      • Notifier モジュールをサーバーでセットアップする
    • Session モジュール
      • Session モジュールをサーバーでセットアップする
    • Group モジュール
      • Group モジュールをサーバーでセットアップする
  • Diarkis サーバー
    • Diarkis サーバをクラウド環境で起動する
      • AWS
    • Diarkis サーバーを Windows 環境で起動する
    • MARS サーバー
    • UDP サーバー
    • TCP サーバー
    • HTTP サーバー
    • Metrics API
    • サーバー間通信 - Mesh
  • Diarkis クライアント
    • ランタイム・ライブラリ
      • Diarkis RUDP
    • Diarkis Module
      • Diarkis Module の初期化と終了
      • Diarkis Module のカスタイマイズ
      • Diarkis Module のロギング・システム
      • マイグレーション
      • Diarkis のスレッド
    • サンプル
      • C++
        • room_broadcast
        • directmessage_simple
        • group_sample
        • matching_and_turn
        • matchmaker_ticker
        • p2p_rudp_sample
        • session_simple
      • Unreal Engine Plugin
        • FieldWalker
      • Unity Plugin
        • FieldWalker
          • HowToReplicatePosition.md
  • Diarkis ツール
    • Diarkis CLI
      • cgo を利用するプロジェクトをビルドする方法
      • Diarkis CLI v3 への切り替え手順
  • リファレンス
    • API リファレンス
    • リリースノート
      • v1.0
      • v1.0.1
      • v1.0.2
      • v1.0.3
      • v1.0.4
      • v1.0.5
      • v1.0.6
  • サポート
    • ライセンスと購入
GitBook提供
このページ内
  • 概要
  • UDP サーバーのセットアップ
  • Mesh 設定
  • UDP サーバーの設定

役に立ちましたか?

  1. Diarkis サーバー

UDP サーバー

前へMARS サーバー次へTCP サーバー

最終更新 6 か月前

役に立ちましたか?

概要

UDP サーバーは、Diarkis の3つのリアルタイム・コミュニケーション・サーバーのうちの1つです。

クライアントにあらかじめ用意されたモジュールのビルトイン・コマンドの公開や、カスタム・コマンドを実装して公開することができます。

コマンドとは、クライアントから送信され、サーバーで処理されるフォーマットされたパケットのことです。コマンドを利用し、Diarkis のサーバー・クラスターがクライアントと対話します。

UDP サーバーのセットアップ

クライアントにビルトイン・コマンドを公開するには、diarkisexec パッケージを利用してセットアップできます。

  • diarkisexec.SetupDiarkis() でモジュールを指定してビルトイン・コマンドを公開できます。各モジュールの ConfigPath を指定することで、設定をカスタマイズできます。

  • diarkisexec.SetServerCommandHandler() でカスタム・コマンドを公開できます。

  • diarkisexec.SetupDiarkisUDPServer() で UDP サーバーのセットアップができます。引数の JSON ファイルでサーバーの設定をカスタマイズできます。

上記の関数は、 diarkisexec.StartDiarkis() を呼ぶ前に実行する必要があります。

詳細は を参照して下さい。

package main

import (
	"github.com/Diarkis/diarkis/diarkisexec"
	"github.com/Diarkis/diarkis/server"
	"github.com/Diarkis/diarkis/user"
)

var ver uint8 = 10
var cmd uint16 = 100

func main() {
	logConfigPath := "/configs/shared/log.json"
	meshConfigPath := "/configs/shared/mesh.json"

	diarkisexec.SetupDiarkis(logConfigPath, meshConfigPath, &diarkisexec.Modules{
		Room:       &diarkisexec.Options{ExposeCommands: true},
		P2P:        &diarkisexec.Options{ExposeCommands: true},
		Group:      &diarkisexec.Options{ConfigPath: "/configs/shared/group.json", ExposeCommands: true},
		Dive:       &diarkisexec.Options{ConfigPath: "/configs/shared/dive.json", ExposeCommands: true},
		Field:      &diarkisexec.Options{ConfigPath: "/configs/shared/field.json", ExposeCommands: true},
		DM:         &diarkisexec.Options{ConfigPath: "/configs/shared/dm.json", ExposeCommands: true},
		MatchMaker: &diarkisexec.Options{ConfigPath: "/configs/shared/matching.json", ExposeCommands: true},
		Session:    &diarkisexec.Options{ConfigPath: "/configs/shared/session.json", ExposeCommands: true},
	})

	diarkisexec.SetupDiarkisUDPServer("/configs/udp/main.json")

	diarkisexec.SetServerCommandHandler(ver, cmd, helloWorld)

	diarkisexec.StartDiarkis()
}

func helloWorld(ver uint8, cmd uint16, payload []byte, userData *user.User, next func(error)) {
	userData.ServerRespond([]byte("Hello World"), ver, cmd, server.Ok, true)
	next(nil)
}

Mesh 設定

meshConfigPath には JSON ファイルのパスを指定します。詳細は Mesh 設定 を参照してください。

UDP サーバーの設定

設定は JSON で記述します。

{
  "enableP2P": true,
  "address": "127.0.0.1",
  "nic": "eth0",
  "port": "7000",
  "connectionTTL": 10,
  "sendUDPInterval": 0,
  "handleRUDPInterval": 100,
  "rcvWorkers": 1,
  "retryInterval": 1000,
  "maxRetry": 10,
  "enableEncryption": true
}
キー
デフォルト

enableP2P

true

true に設定すると、クライアントはP2P用に自分のパブリック・アドレスを取得することができます。

address

"127.0.0.1"

バインドする UDP サーバーのアドレス

nic

"eth0"

アドレスを取得するインターフェース名。アドレスが未指定の場合に利用します。

port

"7100"

UDP サーバーがバインドするためのポート。UDP サーバーは、指定されたポートから始まる利用可能なポートを自動的に探します。

connectionTTL

10

接続の TTL。この時間を超えるとクライアントはサーバーから切断されます。

sendUDPInterval

0

UDP パケットの送信間隔(ミリ秒)。10より小さく設定すると、送信パケットはバッファリングされません。

handleRUDPInterval

100 min: 10

RUDP パケットの送受信間隔(ミリ秒)。 値が小さいほど、サーバーはより敏感に(高速に)応答するようになりますが、その代償として CPU 負荷が増加します。

retryInterval

1000

RUDP パケットの再試行間隔(ミリ秒)

maxRetry

10

RUDP パケットの最大再試行回数。この値を超えた場合、RUDP 接続はタイムアウトとみなされ破棄されます。

rcvWorkers

CPUコア数

UDP パケットを受信する goroutine の数

enableEncryption

true

falseに設定すると、パケットの暗号化と復号化が無効になります。HTTP サーバーも同様の設定をする必要があります。

クラウド環境では、address はプライベート IP アドレスとし、環境変数 DIARKIS_CLOUD_ENV を併用してください。

詳細は を参照して下さい。

⚠️
⚠️
diarkisexec の API リファレンス
server の API リファレンス