Dota 2 Game State Integrationで遊んでみよう #1 GSIについて
Dota 2 Game State Integration(以下GSI)はゲーム中のデータを取得するための公式APIです。何ができるのかは、以下の実例を見ていただければ早いと思います。
実例
主にLAN大会でのブースに使用されています。
*1
Health・Manaと連動してLEDを点灯させている例です(Reddit)。
GSIで取得できるものの、ゲーム中のHUDには表示されていないGPM/XPMのデータをオーバーレイ表示している例です(GitHub Repository)。
View post on imgur.com
対応するハードウェアを所有していれば、次のようなことも可能です(動画中では、Logitech G910, G410, Corsairのキーボードが使用されていて、キルストリークやアビリティに応じてキーを光らせています)。
これはCS:GOの事例ですが、爆弾とHue(プログラマブルな照明)を連動させています。
Dota 2 GSIを扱うライブラリ
記事執筆時点でNode.jsとC#のライブラリがありました。他の言語で実装することも難しくはなさそうです。
その他
VACのリスク
存在しないと言えます。試合中にDota 2クライアントがGSI用のcfgファイルで指定されたポートにPOSTでデータを送り続けているだけだからです。試合中に利用できるデータはHUDに表示されているデータとXPM/GPMのデータに限られ、有利/不利が起きることはありません*2。しかしながら、利用は自己責任で行ってください。
CS:GOについての技術情報
GSIはCSGOにも対応しており、それについて公式Wikiにドキュメントがあるので、そちらをご参照ください。ドキュメントによれば、Dota 2のGSIでは不可能な他のプレイヤーの情報を得ることが可能なようです。
CS:GO向けの参考リンク
- Node.jsによる実装: https://www.npmjs.com/package/node-csgo-gsi
- Pythonによる実装: https://github.com/tsuriga/csgo-gsi-qsguide/blob/master/quickstartguide.py
Dota 2, CS:GO以外のゲームで同じことをやりたい
後述するAuroraでサポートされている20(記事執筆時点)のゲームでも、同様のことが技術的に可能です。
Aurora x Rocket Leagueの例:
Auroraについて
とにかくゲーム内のアクションに応じてマウス/キーボードを光らせたい、または他のゲームについてどのように実装すれば良いのか知りたいという方は、Auroraプロジェクトを参照すると良いでしょう。
記事執筆時点で、20のゲームとLogitech, Razer, CorsairのRGBマウス/キーボードを光らせることができるようです。
GSIを使って何か作ってみた、という方がいらっしゃいましたら、ぜひコメント欄でお知らせください。
次の記事では、Dota 2 GSIを使って何かを作り始めるための準備について説明します。
*1:画像はDota 2 公式YoutubeチャンネルDota 2 The International 2016 - Main Event Finals - YouTubeのキャプチャ
*2:ドキュメントには書かれていないが、観戦時には全プレイヤーのデータやRoshanのStatusのデータも利用できる