League Of LegendsのDataDragon【JSON編】

League of legendsのDataDragon【JSON編】アイキャッチ LeagueOfLegends
League of legendsのDataDragon【JSON編】アイキャッチ

はじめに

 League Of Legendsのツールを作っているとパッチの追いつきに困ったりしませんか?

 チャンピオンやアイテムのバフやナーフ、新アイテムや新サモナースペルなど、変更が入る度にツールを更新するのは大変です。
 League Of Legendsを運営しているRiotはとても優しくJSON形式でゲーム内情報を提供しています。

 情報量が多いので配信用スコアボードオーバーレイを作った時に参考にした情報(JSON)をもとに紹介していきます。

Riot Developer Portal

DataDragonで何が提供されているのか

 DataDragonで提供されている圧縮ファイルには、データ(チャンピオン情報等)とアセット(画像等)が含まれています。

 その中からで使えそうな情報を紹介します。アセット(画像等)を知りたい方は以下記事で紹介しています。

League Of LegendsのDataDragon【画像編】
League of Legendsの画像素材を安全かつ高品質で入手する方法を解説。DataDragonに含まれるチャンピオン画像・アイテム・スキルアイコンの探し方や特定方法を初心者向けにわかりやすく紹介します。

提供されているデータ/JSON

 まずは私がツール作成に使っているJSONについて紹介していきます。

 そのほかは今後利用したり要望があれば追加していこうと思います。

概要

 Riot Developer Portalで紹介されているのは10個のJSONです。

 その中でも、ツール開発に役立つ情報はChampions/Items/SummonerSpellsです。

JSON内容
VersionsLoLパッチのバージョンを管理。
16.8.1で止まっているため、現状は使われていなさそう。
Regions地域毎のバージョンを管理。
Versions同様に使われていなさそう。
Languages対応している言語を管理。
複数サーバに跨ぐツールを使わない限り不要。
Championsチャンピオン一覧とチャンピオン毎のjsonがある。
チャンピオン名やスキン、スキルの説明、ステータスなどが含まれる。
ツール作成時に重宝するため、必読のJSON
Itemsアイテムの名前やID、説明、コスト、statsなどが含まれる。
ツール作成時に重宝するため、必読のJSON
Summoner Spellsサモナースペルの名前やID、説明、クールダウンなどが含まれる。
画像のパスはJSONから取得するのが一番楽。
ツール作成時に重宝するため、必読のJSON
Profile IconsプロフィールアイコンのIDやサイズ情報のようなものが含まれる。
よくわらかないため、使用用途不明。
Queue IDs試合の種類はqueueIdとして管理されていて、その種類が網羅されている。
League Client APIで使用されていると思われる。
ノーマルやランクの判別はqueueIdで判別が必要そう。
Mapsマップの種類をmapIdとして管理されていて、その種類が網羅されている。
Summoner’s RiftやHowling Abyssなどが含まれるが活用方法は思い浮かばず。
Game Modesゲームモードの種類を管理している。
CLASSICやARAM、URFなどがあり、LiveClientDataAPIに含まれている。
特定のゲームモードだけ実行したい場合などに使える。

Champions(チャンピオン)

 チャンピオン(champion.json)は一覧と各チャンピオン(例:Aatrox.json)のJSONが存在します。

champion.json

 チャンピオン一覧(champion.json)はスコアボードオーバーレイを作るときにLiveClientDataAPIと画像ファイル名を紐づける時に使っています。
※チャンピオンアイコン画像は「id+png」の命名規則となっている

 そのほかには、チャンピオンのタイトルやフレーバーテキスト、ステータスなどが含まれています。

{
"Aatrox": {
"version": "16.9.1",
"id": "Aatrox",
"key": "266",
"name": "エイトロックス",
"title": "ダーキンの暴剣",
"blurb": "...",
"info": {...},
"image": {...},
"tags": [...],
"partype": "Blood Well",
"stats": {...}
},
"Ahri": {...},
"Akali": {...}
}

Aatrox.json

 各チャンピオン(例:Aatrox.json)にはチャンピオン一覧より詳細の情報が含まれています。

 例としては、スキン情報やチャンピオンタイプ、スキルの細かい情報が含まれています。
利用用途としてはwikiのような最新の情報を載せるサイトや、ダメージシミュレータなどに利用できそうです。

{
"id": "Aatrox"
"key": "266"
"name": "Aatrox"
"title": "the Darkin Blade"
"image": {...}
"skins": [...]
"lore": ...
"blurb": ...
"allytips": [...]
"enemytips": [...]
"tags": [...]
"partype": ...
"info": {...}
"stats": {...}
"spells": [...]
"passive": {...}
"recommended": [...]
}

Items(アイテム)

 Items(アイテム)はスコアボードオーバーレイを作るときにアイテムやゴールドとを表示するときに使いました。

 LoLのゲームクライアントAPIから取得できる情報は、Itemsのidで管理されています。
そのため、APIから取得したidをもとに、Items.jsonを参照することでアイテムの詳細情報を取得できます。

 例えば、ブーツであれば”1001″がidとなります。
items.jsonから”1001″の取得し、ゴールド(”gold”)の要素を特定することで「300ゴールドのアイテムを持っている」という判断できます。

    "1001": {
      "name": "ブーツ",
      "description": "<mainText><stats>移動速度<attention>25</attention></stats><br><br></mainText>",
      "colloq": ";Boots of Speed;くつ;クツ;ぶーつ;ブーツ;靴;bu-tsu;bu-tu;butsu;butu",
      "plaintext": "移動速度がわずかに上昇",
      "into": [
        "3005",
        "3047",
        "3006",
        "3009",
        "3010",
        "3020",
        "3111",
        "3117",
        "3158"
      ],
      "image": {
        "full": "1001.png",
        "sprite": "item0.png",
        "group": "item",
        "x": 0,
        "y": 0,
        "w": 48,
        "h": 48
      },
      "gold": {
        "base": 300,
        "purchasable": true,
        "total": 300,
        "sell": 210
      },
      "tags": [
        "Boots"
      ],
      "maps": {
        "11": true,
        "12": true,
        "21": true,
        "22": false,
        "30": false,
        "33": false,
        "35": true
      },
      "stats": {
        "FlatMovementSpeedMod": 25
      }
    },

Summoner Spells(サモナースペル)

 Summoner Spells(サモナースペル)は名称や説明、クールダウンなどの詳細情報が含まれています。パッチではあまり変動がない情報ですが、サモナースペルの画像名を特定するために参照しています。

 サモナースペルの画像名はid(例:SummonerBarrier)+拡張子(png)ですが、ゲームクライントAPIではname(例:バリア)しか取得できません。そのため、ゲームクライアントAPIのnameからSummonerSpells.jsonでidまで取得し、サモナースペルの画像名を特定

   "SummonerBarrier": {
      "id": "SummonerBarrier",
      "name": "バリア",
      "description": "一時的にシールドを獲得する。",
      "tooltip": "{{ shieldduration }}秒間、<shield>耐久値{{ shieldstrength }}のシールド</shield>を獲得する。",
      "maxrank": 1,
      "cooldown": [
        180
      ],
      "cooldownBurn": "180",
      "cost": [
        0
      ],
 ・・・以下省略・・・

コメント