SourceEngineのDEMO Fileについて
@thiry_creative あんまり知られてないですけど、CS:Sの時はSourceTVのdemoファイルのバイナリにプレイヤー名が入ってたのでそれ引っこ抜いてくれば検索できますよ。多分変わってないんじゃないかなあと。
— ikasamahさん (@ikasamah) 10月 23, 2012
DEMファイルのフォーマットとパーサーの作り方についてはValveが仕様を公開しててこのページがそう。前にDEMファイルのパーサーをC++で書いたことがあるんだけど、サーバー探したんだけど見つからなかった。どこかにあると思うんだけど。。
https://developer.valvesoftware.com/wiki/DEM_Format
このページを読む感じだと、DEMファイルにはSteamIDに類するものは無さそうな感じがする。単なるクライアントのユーザー名は記録されてるっぽい。
一応SourceSDKだかを入れるとdemoinfoコマンドってのがあってそれ使うとたしかdemoファイルの情報がみれたはず。。CS:GOの場合はわからないですが、おそらくCS:GO Authoring Tools的なのをインストールするとどこかのbinフォルダにdemoinfo.exeがあるんじゃないかなぁと推測。
DEMにはたしかそのユーザーが試合中に使ったcvar/commandが記録されてて、先ほどのページにあるdem_consolecmdっていう種別のDataチャンクに入ってた記憶。あとは視点の動きとかプレイヤーの座標に関する情報がダーッと入ってたイメージ。
Dota2のDEMファイル(replay?)のパーサーは有志が作成中みたい。これが流用できるかも?ただしCS:GOよりもDota2のほうがEngineのバージョンが上なので使えない可能性あり(Google Protocol Buffer使ってるのか)
https://developer.valvesoftware.com/wiki/Dota_2_Demo_Format
https://github.com/cursedcoder/dota2-demostats
かれらはdemoファイル内からsayコマンドとその引数を抽出して、試合中に発せられたチャットを検索できるようにしよう、みたいなことしてるっぽい。いいっすねぇ。