IkaLogの裏側~「スプラトゥーン」のリアルタイム画像解析はどのように行われているのか

第1回 IkaLog誕生前夜

この記事を読むのに必要な時間:およそ 2.5 分

IkaLog,誕生

この夜からさっそく,アルゴリズムの検討を始めました。作成したいプログラムは,⁠何らかのしくみでゲームの場面を追跡して,目的の情報をログとして残す」という仕組みになります。

スプラトゥーンはネットワーク対戦ゲームのひとつですから,サードパーティーのツールを作成するには,ゲームのTCP/IP通信をキャプチャして解析する方法が考えられます。その他の手段として,狙ったタイミングでうまいことHDMI出力映像のスクリーンショットが保存できれば十分,という考え方もあります。

私自身,10年ほど前にUltima Onlineの通信パケットやデータ構造をひととおり把握し,個人的に追加情報が得られるサードパーティツールを作成していたことがあります。しかし,この方法では,ゲームプレイ時にプレイヤーが目と耳で受け取る情報よりもたくさんの情報が含まれており,ゲームの公平性が失われる可能性があります。また,通信ゲームではチートを防ぐためにペイロードも暗号化されているのが普通です。

2015年,任天堂はGitHub上のプロジェクトに同社の知的財産が含まれていたことを理由にプロジェクト削除依頼を出し,実際に削除されたプロジェクトがあります。同じようなリスクは抱えたくないため,本来ゲーム内にあって見えないデータやコードを探らなければいけないような設計は避けたいと考えました。また,⁠ツールを作成してほかのプレイヤーに対して有利になりたい」という気持ちもまったくありませんでした。

開発を思いついたタイミングで,手元にはWii Uのプレイ映像をコンピュータ上にデータとして取り込める「HDMIキャプチャボード」がありました。これを使って,映像としてスプラトゥーンの状態を入力し,目的のシーンが表示されたらその静止画像をファイルとして保存する,という程度であれば,それほど難しくなさそうです。⁠いまならOpenCVなどの画像処理ライブラリがあるから,それほど難しくないのでは?」と安易に考え,⁠ゲームの画像を認識して,情報を取得する」というアプローチでアルゴリズムや仕組みの検討を始めました。

HDMIキャプチャボードの例

HDMIキャプチャボードの例

画像

プレイヤーがふだん目にしている画像に対して処理をしている限りは,コンピュータで分析しても,公平性を保てるはずです。また,動画に対して処理が可能なら,YouTubeやニコニコ動画に投稿された⁠ほかのプレイヤーのゲーム⁠を分析対象とすることも視野に入れられます。

開発を思いついてから2ヶ月後,GitHub上でIkaLogプロジェクトを発表しました。

IkaLogの現状

最初のリビジョンのIkaLogを利用したユーザは1~2人だと思いますが,現在では毎日200人以上,ゲーム内のお祭りイベントである「フェス」が開催される週末には1日あたり300人以上が利用するソフトウェアになりました。毎日4000ゲーム以上を分析していることがIkaLogユーザーによる投稿からわかっており,これらの情報から,ステージやルール,ブキの組み合わせでの特徴などに関して非公式な統計情報も得られるようになっています。

また,IkaLogはオープンソースとして公開しており,これまでに14名の方からのPull Requestがありました。

その他にも,IkaLogを利用したスプラトゥーン支援ツールがいくつか作られていたり,IkaLogを使って作られたコンテンツが投稿されたりもしています。

IkaLogTest #6-1

次回予告

今回は,IkaLogの開発を始めたきっかけ,これまでの経緯について,かんたんに紹介しました。

次回以降では,IkaLogの開発過程でどのような学びがあったかを振り返りながら,どのような試行錯誤があったか,どのようなアルゴリズムを検討・利用しているかについて,説明していきたいと思います。お楽しみに。

著者プロフィール

長谷川猛(はせがわたけし)

(株)SRAで7年間のシステム構築&提案を経験したのち,Fusion-ioのセールスエンジニアを経て,フリーランスエンジニアとして活動中。『LDAP Super Expert』(技術評論社)に寄稿したほか,『Xen 徹底入門』(翔泳社)および『萌え萌えうにっくす!UNIX ネットワーク管理ガイド』(毎日コミュニケーションズ)の共著者のひとりである。

スノーボード,ごまラーメン,飼い犬のミニチュアシュナウザー「ラピス君」が大好き。