Hytale用 A2S/SourceQuery プラグイン (hytale-sourcequery)
概要
hytale-sourcequeryは、Hytaleサーバー向けにA2S(SourceQuery)プロトコルを実装する軽量なJavaプラグインです。A2Sプロトコルに準拠した問い合わせにUDPで応答することで、ゲームサーバーブラウザやマスタサーバーからサーバー名やマップ、プレイヤー一覧、サーバールールといった情報を取得できるようにします。ビルドはMaven(mvn clean package)で行い、生成されたjarをHytaleのplugins/フォルダに配置するだけで導入可能。UDPの待ち受けポートは環境変数 QUERY_PORT で設定でき、未設定時はゲームポート+1を使用する仕様です。シンプルさを優先した実装で、基本的なA2S_INFO/A2S_PLAYER/A2S_RULESなどを提供することを目的としています。
リポジトリの統計情報
- スター数: 5
- フォーク数: 1
- ウォッチャー数: 5
- コミット数: 2
- ファイル数: 5
- メインの言語: Java
主な特徴
- A2S(SourceQuery)プロトコルに対応したUDPベースの問い合わせ応答を提供
- Mavenビルド(mvn clean package)でjar生成、Hytaleのplugins/へ配置するだけで導入可能
- 環境変数 QUERY_PORT でUDPポートを柔軟に指定、未設定時はゲームポート+1を使用
- 軽量でシンプル、サーバー情報・プレイヤー一覧・ルール等の基本応答を実装
技術的なポイント
hytale-sourcequeryはJavaで実装されたプラグインで、Hytaleサーバー環境に差し込んでUDPプロトコルの問い合わせに応答します。A2S(SourceQuery)プロトコルはUDPを用いるため、実装側はDatagramSocket等によるUDPソケットの管理、受信パケットのパース、レスポンスの生成と送信を行います。一般的なA2S実装と同様に、クライアントからの問い合わせパケットを解析し、問い合わせ種別(INFO、PLAYER、RULESなど)に応じてサーバー名、モード、現在のプレイヤー数や最大プレイヤー数、プレイヤーの名前とスコア、ルールのキー/バリュー列挙などをバイト列にシリアライズして返す必要があります。
READMEにあるQUERY_PORT設定は環境変数ベースの軽量構成で、サーバー構成を変更せずにOSレベルでポートを切り替えられる点が特徴です。実装上の留意点としては、UDPはコネクションレスでパケット破損や順序欠落が発生し得るため、チャレンジ/レスポンス(A2Sのチャレンジトークン)を正しく扱い、リプレイや偽造を防ぐこと、また大量の問い合わせに対するレート制御や送信バッファ管理が重要になります。加えて、UDPで外向きに情報を公開するとDDoSの踏み台やアンプ攻撃のリスクがあるため、ファイアウォールやIP制限、レート制限の導入を検討するべきです。
プロジェクト構成は非常にシンプルで、Mavenのpom.xmlに依存管理とビルド設定があり、srcディレクトリに実装コードが置かれる典型的なJavaプラグイン構成です。コードは恐らくプラグイン起動時にUDPソケットをバインドし、別スレッドで受信ループを回して問い合わせを処理する形になっていると考えられます。今後の拡張点としては、設定を環境変数からファイルベースの設定(YAML/JSON)に切り替えて柔軟性を高めること、非同期NIOやNettyを使って高負荷に強くすること、ログやメトリクス出力を充実させることが挙げられます。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- LICENSE: file
- README.md: file
- pom.xml: file
- src: dir
まとめ
軽量で導入しやすいHytale向けA2Sプラグイン。基本機能をすばやく使いたい場面に向く。
リポジトリ情報:
- 名前: hytale-sourcequery
- 説明: A simple Hytale plugin to add A2S/SourceQuery support!
- スター数: 5
- 言語: Java
- URL: https://github.com/physgun-com/hytale-sourcequery
- オーナー: physgun-com
- アバター: https://avatars.githubusercontent.com/u/108486134?v=4
READMEの抜粋:
hytale-sourcequery
A2S query protocol plugin for Hytale servers. Lets game server browsers query your server for info, player list, and rules.
Building
mvn clean package
The jar will be in target/.
Installation
Drop the jar into your Hytale server’s plugins/ folder.
Configuration
Set the QUERY_PORT environment variable to change the UDP port. If not set, it defaults to your game port + 1.
QUERY_PORT=27015
What it exposes
- A2S_INFO - Ser…