ゲーム

スプラトゥーンの対戦勝率を自動で記録する仕組みを自作したプレイヤーが登場

by around4o'clock

任天堂Wii Uのゲームソフト「スプラトゥーン」は、1ゲームが約3~5分で完結するため、短時間でサクッとプレイすることが可能ですが、通算のバトル履歴や勝率を確認する機能はついておらず、「一体自分はどれくらい勝利をあげているのか」を知ることはできません。そんな中、「自分の勝率がどの程度なのか知りたいなーと思ったので、勝敗を自動記録する仕組みを作ってみました」ということで、Raspberry PiのカメラモジュールとOpenCVを使って、自力で勝率計算システムを作った人が現れています。

Raspberry PiとOpenCVでスプラトゥーンの勝敗を自動記録する仕組みを作ってみた - 無理しない感じ
http://hogesuke.hateblo.jp/entry/ikashot

仕組みとしては、まずRaspberry Piのカメラモジュール「picamera」を使ってゲーム画面をキャプチャ。以下のように段ボール箱の上にカメラを固定して、ディスプレイの方向にカメラを向けて撮影しているとのこと。なお、作者のhogesukeさんは間違って古いモデルのRaspberry Piを購入してしまい、「CPU1コア、メモリ512MBというスペックで、OpenCVのビルドに6時間、Pythonのビルドに2時間かかり、picameraでのキャプチャについても5fpsぐらいしか出ていなくて、だいぶカクカク」だそうです。


次に、キャプチャ画像の中に「WIN」か「LOSE」の文字が表示されているかどうかを「OpenCV」で判定します。OpenCVとはIntelの開発した画像処理・認識用のC言語ライブラリで、オープンソースで提供されているものです。「画像認識できるようにするまでの手順はだいたい以下のような感じ」ということで作成手順が公開されています。

・サンプル画像の取得
まず、「WIN」か「LOSE」のどちらかが表示されている画像(ポジティブサンプル)と、どちらも表示されていない画像(ネガティプサンプル)の3種類のサンプルを用意。今回はWINサンプルを400、LOSEサンプルを300、ネガティブサンプルを3万用意したとのことで、最低でも700試合・約35時間のゲームプレイの末にサンプルが集まったようです。なお、「検出の精度の高めるにはサンプルを数千単位で用意する必要があるが、そこまでやるのは辛いので妥協した」とのこと。

以下のゲーム画面のうち、左がWINサンプル、中央がLOSEサンプル、右がネガティブサンプルの画像です。


・特徴の抽出
続いて結果画面の「WIN」「LOSE」が表示される場所の座標を示していくのですが、この作業にはTrainingAssistantというツールを使ってブラウザ上でサンプル画像の分類と特徴の検出を行ったそうです。画像左上の赤枠で囲ってある部分に「WIN」か「LOSE」の文字が表示されるので、この場所を全ての画像で指定していくわけです。


・検出器の生成
生成されたポジティブ、ネガティブの分類と特徴点が示されたテキストファイルをもとに、次はOpenCVのコマンドを使用して検出器を生成。この工程が一番時間がかかり、Core i5、メモリ16GBのMacBook Proで作業完了までに丸2日かかったそうです。原因としてネガティブサンプル数がポジティブサンプルに比べて多すぎたせいかもしれない、とのこと。

・OpenCVの画像認識コードの実装
最後に、検出器を使って画像認識のコードを実装。ネット上にあるサンプルコードを参考に、顔認識コードをもとにして簡単に実装可能だったそうです。以下の3枚の画像を見ると、左上に「WIN」と書かれている画像をバッチリ認識していて、認識中には青枠が表示されています。しかし、作者によると「一応、検出してくれますが精度は悪いです。部屋が暗いと認識されづらかったり、WINをLOSEと間違えたりします」という致命的な欠陥もあるようです。


検出結果は、WebAPIを通してリザルト画面のキャプチャ画像と勝敗結果をアップロードすることで、ウェブ上に自動で記録して勝率を算出しているとのこと。勝敗結果は以下のページ上で見ることができます。

イカショット
https://ikashot.net/


なお、ソースコードはGitHub上で公開されているので、誰でも自由に使うことが可能となっています。また、「精度の悪さを補うため実際のコードでは、20フレーム中に3フレーム以上認識したら正しい検出として画像をアップロードする、といったようなワークアラウンドを埋め込んでます。精度が悪い原因はポジティブサンプル数が少ないことだと思うので、しばらくしてサンプルが集まったら検出器を作りなおそうかと思います」とのことです。

この記事のタイトルとURLをコピーする

・関連記事
無料で使えるスプラトゥーンっぽいフォント「イカモドキ」 - GIGAZINE

スプラトゥーンの対戦モードをマインクラフト内で再現した猛者が登場、Wii Uがなくてもイカしたバトルが可能に - GIGAZINE

スプラトゥーンの名曲「シオカラ節」を初代ゲームボーイの内蔵音源で演奏したムービーが公開中 - GIGAZINE

複数人でスプラトゥーンをプレイする際に使えるボイスチャット「イカデンワ」 - GIGAZINE

「スプラトゥーン」や「ゼルダの伝説」など新旧任天堂ソフトが登場したゲーム大会「任天堂ワールド・チャンピオンシップ2015」まとめ - GIGAZINE

in ソフトウェア,   ネットサービス,   ハードウェア,   ゲーム, Posted by darkhorse_log

You can read the machine translated English article here.