Help us understand the problem. What is going on with this article?

スプラトゥーン2の戦績データを取得する+おまけ

これはCAMPHOR- Advent Calendar 2019の7日目の記事です。6日目は@watamboさんの「中目黒のコミュニティスペースCAMPHOR- BASEにみんなおいでヨ!」でした

こんにちは。@asamasです。あさますと読みます。
みんなが「リングフィットアドベンチャー」や「ポケモンソード」などを楽しんでいる中、僕は相も変わらずスプラトゥーン2をプレイしてます。

今回は、スプラトゥーン戦績管理アプリである「ikaWidget2」に記録されているデータを引っこ抜いて、簡単な分析などをしてみようと思います。

.ikax -> .zip

ikaWidget2にはバックアップ機能があり、そこからファイルを出力すると、asamas-20191204-1011.ikaxのようなファイルが作成されます。このファイルは拡張子を変えれば、そのままzipファイルとして読み込めます。
解凍すると、下の写真のように、info.jsonとstats.realmが見つかると思います。戦績データは、stats.realmの中に入っています。
コメント 2019-12-06 162516.png

realmファイルの内容をjsonに書き出す

realm studioをインストールします。stats.realmファイルを開いた後、File > Save Data > Jsonで書き出せます。この機能に気づかずに、realm (nodejs) 使おうとしてめちゃくちゃ時間とかしました

戦績データの解析

このデータを使って、自分の苦手ステージを調べてみました。
まずはjsonファイルを取り込みましょう

# -*- coding: utf-8 -*-
import json

with open("results.json","r",encoding="utf-8") as f:
    result_json=json.load(f)

ルールごとの違いを調べます。下の例ではガチエリア(splat_zonesgachi)を調べています。ガチホコを調べたいときはrainmakergachi、ガチヤグラはtower_controlgachi、ガチアサリはclam_blitzgachiに変更してください。

area_result={}

for item in result_json["Result"]:
    if item["udemae"]<9 and item["game"]!="splat_zonesgachi": #S以上の戦績に限定&ガチエリア以外のルールを排除
        continue
    for i in result_json["Stage"]:
        if i["ID"]==item["stage"]:
            stage_name=i["name"]

    if not stage_name in area_result.keys():
        area_result[stage_name]={"win":0,"lose":0}
    if item["win"]:
        area_result[stage_name]["win"]+=1
    else:
        area_result[stage_name]["lose"]+=1

for key in sorted(area_result.keys(),key = lambda x:area_result[x]["win"]/(area_result[x]["win"] +area_result[x]["lose"]),reverse=True):
    print(key,area_result[key]["win"]/(area_result[key]["win"] +area_result[key]["lose"]))

結果はこのようになりました。
ガチエリア
コメント 2019-12-06 171637.png
ガチヤグラ
コメント 2019-12-06 174034.png
ガチホコ
コメント 2019-12-06 174206.png

モズク農園やニューオートロがどのルールでも上位に来ています。僕の持ちブキのクーゲルシュライバーで、得意とされているルールですね。一方でザトウ・チョウザメ・ムツゴロウなどの勝率は30~40%ぐらいなので、相性が悪いステージだとわかります。

今後

今回は時間がなくて中途半端な記事になってしまいましたが、ikaWidget2からデータを引っこ抜く方法はわかりましたので、LightGbmなどを使って、より詳しい分析ができたらと思います

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away