データ分析はアイディア力で無限の可能性がある~CS:GOから見るデータ分析の目的の作り方~
どうも、totokoです。
ゲーム開発において忘れがちだけどちゃんと考える必要があるのは「チート対策」です。
チートというのは簡単に言うと、不正なソフトやスクリプトを導入したり、そもそもゲーム内部のデータを不当に改ざんしたりして、自分に有利にゲームを遊んだり、また、開発会社や運営会社へ経済的なダメージ(課金アイテムを不当に増やしたりすることで、本来の利益を無くす等)を与えたりする行為です。
特に昨今のゲームはその多くがインターネットに繋がっています。というか、ありとあらゆるデジタルコンテンツはインターネットに繋がっていますね。
そうなるとネットからサーバを騙して不正なことをやってのけたりするんですよね。
しかし、それをチェックするのも結構骨が折れるわけです。
例えば一日に100ぐらい稼働するサービスなら人海戦術でなんとかなりそうですが、これがものすごい量になると正直負担しか増えません。
チェックの精度は当然低くなりますし、チートの種類が増えると判断基準もまちまちになります。
当然そんなチートが蔓延するとユーザーは正常な体験をすることができず、当然クレームの原因になり、ユーザー離脱の大きな原因となってしまいます。
現にPUBGは一時はビッグタイトルとなっていましたが、止まらないチート行為と似たような後発ゲームタイトルの増加により、全盛期のような盛り上がりはなくなりました。
もちろん、後発タイトルが面白いというのもあるかもしれませんが、ユーザー離脱の要因としてチート行為が平然と行われているというのも大きな原因となっているはずです。
そこでそんなチート行為をもっと機械的にかつ、正確に早く判定するために、ディープラーニングが用いられた例を元にデータ分析の目的の作り方について簡単にお話しましょう。
https://www.famitsu.com/news/201803/23154205.html こちらは人気FPSゲーム「Counter-Strike: Global Offensive(以下CSGO)」のチートツール使用者を、ディープラーニングを利用して検知し排除しようという事例を紹介している記事です。
記事中ではCSGOの開発運営をしているValveは、ディープラーニングを利用したチート対策を考案しました。
それは大量のユーザーの射撃のデータを学習し、エイムアシストを用いた特殊な動き(プログラムによって強制的に動かすので)を検知するものです。
これにより「動きが怪しい(どう考えても人間のそれとは違う)プレイヤーの検知」に成功しました。
もちろんこれに該当したからすぐにチートプレイヤーと認定して、ペナルティを与えるのではなく、判断基準の一つとして人間の手による確認が行われるようになりました。
手間を減らし正確性を得る
結局最後は人間のチェックかよと思われますが、この事例の大きな効果は「手間を減らした」ということです。
CSGOでは一日に最大60万試合が行われます。この試合一つ一つの一人ひとりのプレイヤーの一発一発の射撃を追うことは物理的に不可能です。
しかし、それらをビッグデータとしてディープラーニングをさせることで、人間の手間を減らしました。
もちろんそれだけではなく、機械による正確性のある(≒常に同クオリティの公平な)判断が可能となりました。
どうしても人間だと判断がまちまちになってしまいます(人によったり、モチベーションによったり、チェッククオリティだったり)。
しかし、機械ならばそれを早く大量に正確に行うことができます。
さて、僕のコラムではデータ分析の考え方等をたまに話してきました。
結論としては「分析目的を明確にすること」が重要なのです。
持っているビッグデータをただ闇雲に解析するのではなく、何に関するデータを集計するのか、そのために必要なデータ要素(Excelの表で例えると項目名です)は何かという分析の前の段階が重要であるということです。
今回のCSGOの件だと。
目的:プレイヤーのチート利用があるのでそれを検知しチートプレイヤーを排除したい
データ:今回はエイムアシストを検知したいので、射撃データを集める必要がある ということはわかります。 これがわかれば、あとはエンジニアやアナリスト等のデータ解析チームが「ならばどのような動きをデータにすればそのようなデータを集められるだろうか?」という、次の段階へ踏むことができますし、ゴールが明確になっているので、迷走しずらく迅速なアルゴリズムの作成が達成できるはずです。
1を10にするのもデータサイエンティストのお仕事
さて、このCSGOの話には面白いオチがついています。
チート対策の一つにユーザーに信用度を設定し、同じような信用度プレイヤー同士がマッチングするようにしているのです。
つまりどういうことかというと、Aさんは「チート? 全然みたことないけど……」といいますが、Bさんは「いやいや、チートだらけだよ!」と言っているとしましょう。
このBさんを詳しく調べてみると、過去にチートを使用していており、信用度が低かったのです。
そのため、同じような低信用度(チート使用過去ありや現役チート使用)同士でマッチングさせられていたというのです。
まさか、気が付かない間に機械によってふるいにかけられていたとは……。
このように最初はチート対策で行っていたデータ分析を、このようなマッチングシステムにも応用し、ユーザー体験を「よいプレイヤーには良い経験を」とすることができるようにしました。
Valveはこのディープラーニングを元に、他のチートの検出の仕組み作りや、再学習の自動化等を行いたいと言っています。
たった一つ成功パターンをつくればそれを様々なことに応用することができれば、大きな成果を得られるということです。
なので、まずは大きなデータを目の当たりにした時、「これで何ができるだろうか?」と考えることでしょう。
その時に世界をあっと言わせてしまうような壮大なことを考えなくてもいいかと思います。
まずはその中で確実にできそうな解析から初めて、徐々に規模を大きくしていくのが、これからのデータ分析に必要なのかもしれません。