読者です 読者をやめる 読者になる 読者になる

雪降って地固まる

Dota 2に関する内容を中心に扱います

Dota 2 Game State Integrationで遊んでみよう #1 GSIについて

Dota 2 プログラミング

Dota 2 Game State Integration(以下GSI)はゲーム中のデータを取得するための公式APIです。何ができるのかは、以下の実例を見ていただければ早いと思います。

実例

主にLAN大会でのブースに使用されています。
f:id:d2yukidaruman:20161115121016p:plain *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向けの参考リンク

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のデータも利用できる