見出し画像

RoyaleAPIのBattle Replayについて思うこと

こんにちは。meiheiです。

クラロワのデータ分析の老舗、RoyaleAPIからまたすごいものが発表されました。

翻訳は@kabutomさんが行っていました。

本当にこれ、すごいですよね!

では早速、クラロワユーザーとして、エンジニアとして、Battle Replay機能について感じた事を書いていきます。


目次

1.とりあえずBattle Replay機能を使ってみる
2.Clash Royale APIについて
3.めちゃくちゃ強いクラロワAIが開発されるだろうということ

この3点についてお話します。

1はBattle Replay機能への導入なので、全クラロワユーザーが読者対象です。
2・3は少し難しい話になっており、クラロワをデータを使って攻略したいって思っている方が読者対象です。
また、専門用語はなるべく避けながら、専門的な知識からアプローチしています。


1.とりあえずBattle Replay機能を使ってみる

この機能を使うには、RoyaleAPIのアカウントが必要です。
DiscordもしくはTwitterで認証出来るので、すぐ登録できます。

スクリーンショット 2020-02-21 8.29.39

アカウント登録が完了し、早速使ってみると以下のような画面が出ます。(説明しやすいため、Battle Replayのリリース画像を使います。)

画像6

Aでは、ユニットが出た順にタイムラインとして表示されており、カーソルを当てると、Bの配置した場所が光ります。
Bでは、その場所に置いたユニットが選択出来るようになっており、カーソルを当てると、AとCの配置したユニットが光ります。(同じ場所にユニットを置いたときの選択の挙動は不明)
Cでは、各ユニットを何回出したかが表示されており、カーソルを当てると、Bに置いた順番とマスが表示されます。(参考画像はCでメガゴを選択した時のBの表示)

スクリーンショット 2020-02-21 8.46.12

Dでは、バトル中に消費したエリクサーの分析です。見た感じTotal以外は、あまり使わない情報かなって思います。

有効な使い方は、Top 1000のタブから自分のデッキでinclude cardsを選択して、立ち回りを勉強したいデッキとの対決のリプレイを見ると良さそうです。

スクリーンショット 2020-02-21 8.54.57

とはいえ、このBattle Replay機能は動画ではないので、ユニットがどう動くかなどを想像を膨らませてみる必要があります。
したがって、使い慣れたデッキのリプレイでないと、立ち回りの勉強は難しそうに感じました。


2.Clash Royale APIについて

ここからの話は少し難しいです。また、一般的に遊ばれている方には影響のない話だと思います。

まず単語の説明をします。

APIとは、データなどにアクセスするために作ったルール(もしくは仕様)のようなものです。例えば「ユーザーの○○のデータください」って言うと○○のデータがもらえる、といった感じです。
Clash Royale APIとは、クラロワデータにアクセスする為にクラロワ公式が設定したAPIです。これには公開されているものと、非公開のものがあります。
RoyaleAPIとは、Clash Royale APIを使ったWebサービスです。クラロワ公式は関係ありません。

ここでは、RoyaleAPIが提供するBattle Replay機能は、Clash Royale APIでは提供されてい無いということ、そこから考察出来ることについてお話します。


まず、Clash Royale APIについて。

上で説明したとおり、Clash Royale APIとは、クラロワデータにアクセスする為にクラロワ公式が設定したAPIです。

一時期流行っていた、次の宝箱が何かがわかるアプリとかは、Clash Royale APIを使っています。

ほぼ、どのサービス(及び、ゲーム)で共通ですが、APIは公開されているものと、非公開のものがあります。(ほとんどのゲームは全て非公開になっており、APIを公開しているクラロワはとても珍しいです。)

公開されたAPIには使い方のガイドがあり、それを確認すれば、このAPIで出来ること、出来ないことがわかります。

次に、RoyaleAPIについて。

先程書いた通り、Battle Replay機能は、公開されているClash Royale APIでは提供されてい無いです。

これについて、RoyaleAPIの開発者向けのサイトを見てみると、以下の通りに書いてあります。

Welcome to RoyaleAPI, the unofficial public API for Clash Royale! You can use our API to access Clash Royale API endpoints, which provides real-time information about players, clans, clan wars, tournaments and more.

言わば、非公開であるけどアクセス出来るClash Royale APIを使っているということです。

非公開のAPI使ってて大丈夫なの!?って思うでしょうが、おそらく大丈夫です。
(保証は出来ません。)

SUPERCELLはクリエーターをとても歓迎している事はご存知でしょう。

クラロワコミュニティに大きな影響を与えるRoyaleAPIは、スパセルさんから目をつけられていると思いますが、ちゃんと許容されうる範囲内で活動しているので何年もクラロワのデータ分析が出来ているのでしょう。

また、Battle Replay機能が追加されたことを公式アカウントが引用リツイートしていました。


ここから私の考察なのですが、Battle Replay機能はクラロワ公式が試験的にClash Royale APIとして公開しているのではないかという説を疑っています。

今は一般のデベロッパー(APIを使う人のことです)には公開していないが、今後は公開される、または、ある程度の規模のサービスを運営していると制限が解除される、などなど考えられます。

他の老舗サービスのStatsRoyaleを見てみましょう。

ちょうど最近、Match Detailsという機能が追加されました。この機能は対戦中のエリクサーを確認したり、何分何秒にスタンプが押されたかがわかります。

この機能はBattle Replayから拾得出来る情報であると思えます。

とはいえ、この考察は不毛なものだと思うので、この辺りで終わります。(スパセルさんならそのうち公式アナウンスを行うでしょうし。)

この機能が公開されたら…!なんて考えると、とてもワクワクしますね。



3.めちゃくちゃ強いクラロワAIが開発されるだろうということ

実は、これまでもクラロワを自動でバトルするAIは開発されています。

AIの定義によりますが、「これはAIじゃなくBOTだ」と言いたくなるレベルで、攻撃がわかりやすくて、めっちゃくちゃ弱いです。

じゃあ、AIとBOTはどう違うのか。

それは、「次、どのタイミングでどこにどのユニットを置くか」ってことの計算の精度です(これを評価関数と呼びます。)


ここで、もう一度、Battle Replayのリリース画像を見てみましょう。

画像1

そういえば、クラロワってマス目にユニットを置いていくゲームでしたね。

クラロワから離れますが、ちょっと前に話題に上がったAI「AlphaGo」の囲碁や、昔からAIのほうが強いオセロや将棋などは、マス目に駒(石)を置いていくゲームです。

マス目に何かを置いていくという点で同じなので、AIができそうな雰囲気あります。

じゃあ、クラロワで再現したらどうなるのかって事を、ちょっと深堀りして説明してみます。

AIは、
1.「次に出来ること」を洗い出し
2.それぞれを計算して、「次に出来ること」を評価
3.最も評価の高いものを選択する

といった流れで処理をしています。

「次に出来ること」=「あるユニットを置くことが可能なマス」です。

これをいい感じに表現したものが影響マップです。

Cygamesさんの記事で説明されている通りに考えてみましょう。

例として、攻城バーバリアンが来た時にハンターをどこに置くかを考えます。

画像3

上の画像をマス目上に表現するとこんな感じ。

青が攻城バーバリアンで、グレーは置けない場所です。
(都合上ハンターは除いています。)

スクリーンショット 2020-02-15 4.54.19

この場合、ハンターは攻城バーバリアンのすぐ手前に置くのが正解でしょう。キングタワーの後ろとかに置くとハンターは無駄に歩いて、遠くから攻撃するので良くないです。

それを数値化してこのマス目上に表現すると以下の画像の通りになります。
ユニットの置けない場所は-1にして、おける場所は1~0の範囲で評価付け。(スコアは著者の勘でつけてます。)

スクリーンショット 2020-02-15 5.16.59

このように理論的にはAIを作ることは可能そうです。
しかし、今まで出来なかったです。

理由は圧倒的にデータが無いから。

このマップに書いてあるスコアをコンピュータに評価させるためには、何万件もの対戦データを機械に学習させて計算する必要があります。
ですが、その何万件もの対戦データは今まで手に入りませんでした。
(厳密に言えば不可能ではないですが、それを個人でやろうとする事は現実的ではないです。)

それを解決するであろうものが、このBattle Replayです!

「何秒にどこに何のユニットを出したか」の情報があれば、影響マップによるも表現が可能でしょうし、このデータで他の手法によるアプローチも可能です。(”機械学習”もしくは”教師あり学習”、と検索すると様々な手法について詳しく知ることが出来るでしょう。)

とにかく、求めていたデータが手に入るってことが何よりクラロワAIの開発を促進させます。


また、もうすでに別の方法で北京大学で研究されていました。

まだ、ちゃんと読めてないのですが、ちゃんとした研究なはずです。(画像がちょっとあれですが。。。)

アジア二位の大学が企業と合同で研究したレベルのものですが、データ集めのコストを引くと考えると、個人でも出来るかと思います。(ただし、出来るとは言ってない。)

こうして、個人のエンジニアが意欲的にクラロワAIを開発し、そのノウハウを共有するようなことになれば、めちゃくちゃ強いクラロワAIが開発されるでしょう。

追:RoyaleAPIのDiscordにmachine-learningのチャンネル(言わばクラロワAIについてのチャット)がありました。追えて無いのですが、何か面白いものがあればまた書きます。


まとめ

Battle Replay機能導入について、Clash Royale APIについて、めちゃくちゃ強いクラロワAIが開発されるだろうということについて書いていきました。

クラロワユーザー的には、まだまだ情報量が多く分かりづらさがあると感じたので、有効な使い方の解説とかに需要があるかもしれません。
エンジニア的には、もう、早くこの機能が使いたいなぁと思いました。


本文は以上です。
最後までお読みしていただきありがとうございます。

あと、もし一緒にクラロワAI開発したい人が居ましたら、ぜひやりましょう!



使用した画像コンテンツの参考

ヘッダー及びBattle Replayのリリース画像:https://royaleapi.com/blog/replay
攻城バーバリアンが来た時にハンターを置いてあるプレイ画面の画像:https://clashroyale.gamewith.jp/article/show/83758

(C) Supercell, Inc. All Rights Reserved.
(C) RoyaleAPI.com. All rights reserved.
(C) GameWith All Rights Reserved.

当サイト上で使用しているゲーム画像の著作権および商標権、その他知的財産権は、当該コンテンツの提供元に帰属します。

この記事が気に入ったらサポートをしてみませんか?