ruby-qstat

ゲームサーバー統計取得ツールの QStat を Ruby から使うためのラッパー gem です。qstat コマンドを起動して、マスターサーバーからのサーバー一覧取得や、個別のゲームサーバーへの状態問い合わせの結果を、Ruby のオブジェクトとして返します。

README 記載の動作要件は Ruby 1.9 と QStat 2.12 です。

使い方

gem install ruby-qstat

README にある例です。

# マスターサーバーからサーバー一覧を取得
QStat.query_serverlist("hl2master.steampowered.com:27011", "stm", "left4dead2", maxping = 100)

# 個別サーバーの状態を取得
QStat.query("xxx.yyy.zzz.qqq", "a2s")

# 個別サーバーの状態を取得(サーバー情報のみ)
QStat.query_serverinfo("xxx.yyy.zzz.qqq", "a2s")

内部設計

ライブラリ本体は lib/ruby-qstat.rb の1ファイルで、API は QStat クラスのクラスメソッド群として提供します(インスタンス化はできない作りです)。qstat コマンドの起動は共通の exec_cmd に集約されていて、出力の形式によってパース経路が2系統に分かれます。

ruby-qstat のコンポーネント構成図

サーバー一覧取得(query_serverlist)の流れです。maxping を超えるサーバーが現れた時点で qstat を打ち切る作りで、途中で切れた XML はそのまま Nokogiri に渡してパースします。

query_serverlist のシーケンス図

自作 gem の vrowser(HalfLife2 系ゲーム向けサーバーブラウザライブラリ)がこの gem の上に乗っています。自分のサイトで公開しているサーバーブラウザでも使っています。