はじめに
League Of Legendsのツール作成から避けては通れないLive Client Data APIについて、備忘も含めまとめておきます。
公式サイトにも記載はありますがサンプルなど情報が足りないため、実際にゲーム後のデータから情報をまとめていきます。
Live Client Data APIとは
Live Client Data APIは、League of Legendsのゲームクライアントからプレイヤー情報や試合状況を取得できるAPIです。League Of Legendsの配信ツールを作るのにとても役に立ちます。
概要
LiveClientDataAPIで情報は大まかに分けて以下です。
| activePlayer | 操作プレイヤーの情報(ステータスやゴールド) |
| allPlayers | ゲームに参加しているプレイヤーの情報(アイテムやスコア) |
| events | ゲーム内で発生したイベント(キルやオブジェクト獲得など) |
| gameData | ゲームモードやマップ情報(サモリフやARAM、観戦など) |
公式サイトにサンプル(「You can find a sample response here.」の箇所)がありますが、「プラクティスを一人で始めた直後」のデータに見えるのでサンプルだけではツールは作れません。
上記のactivePlaerからgameDataまでを解説していきます。
Live Client Data APIで取得できる情報
公式でエンドポイントとして分けられている情報ごとに解説します。
activePlayer
現在操作しているプレイヤー情報が格納されています。
activePlayerのサンプル(Lv6時点のフィオラ)は以下になります。
| abilities | スキル名称やレベルを管理 |
| championStats | チャンピオンのステータスを管理 |
| currentGold | 現在のゴールド |
| fullRunes | メイン・サブ・シャードを管理 |
| level | 現在のレベル |
| riotId | プレイヤーのRiotID |
| riotIdGameName | プレイヤーのゲーム名 |
| riotIdTagLine | プレイヤーのタグ名 |
| summonerName | プレイヤーのRiotIDと同じ ※今後RiotIDに統一され廃止される |
| teamRelativeColors | trueの場合、プレイヤーは青色固定 |
"activePlayer": {
"abilities": {
・・・
},
"championStats": {
・・・
},
"currentGold": 6519.361328125,
"fullRunes": {
・・・
},
"level": 6,
"riotId": "SUMMONER_NAME#TAG",
"riotIdGameName": "SUMMONER_NAME",
"riotIdTagLine": "TAG",
"summonerName": "SUMMONER_NAME#TAG",
"teamRelativeColors": true
abilities
チャンピオンのスキルレベルやスキル名が管理されています。
ゲーム画面では以下の情報です。

rawDescription/rawDisplayNameはツールチップ(スキル説明)用のキー名/スキルの “表示名” を指す内部キーです。
別のjson形式でまとめられていて、その情報と紐づけるキーになります。
"E": {
"abilityLevel": 2,
"displayName": "ブレードワーク",
"id": "FioraE",
"rawDescription": "GeneratedTip_Spell_FioraE_Description",
"rawDisplayName": "GeneratedTip_Spell_FioraE_DisplayName"
},
"Passive": {
"displayName": "デュエリスト・ダンス",
"id": "FioraPassive",
"rawDescription": "GeneratedTip_Passive_FioraPassive_Description",
"rawDisplayName": "GeneratedTip_Passive_FioraPassive_DisplayName"
},
"Q": {
"abilityLevel": 2,
"displayName": "ファント",
"id": "FioraQ",
"rawDescription": "GeneratedTip_Spell_FioraQ_Description",
"rawDisplayName": "GeneratedTip_Spell_FioraQ_DisplayName"
},
"R": {
"abilityLevel": 1,
"displayName": "グランドチャレンジ",
"id": "FioraR",
"rawDescription": "GeneratedTip_Spell_FioraR_Description",
"rawDisplayName": "GeneratedTip_Spell_FioraR_DisplayName"
},
"W": {
"abilityLevel": 1,
"displayName": "リポスト",
"id": "FioraW",
"rawDescription": "GeneratedTip_Spell_FioraW_Description",
"rawDisplayName": "GeneratedTip_Spell_FioraW_DisplayName"
}
championStats
チャンピオンのステータスが管理されています。
増加分やバフも含まれた数値になっています。
ゲーム画面では以下の情報です。

"championStats": {
"abilityHaste": 21.0,
"abilityPower": 0.0,
"armor": 51.56500244140625,
"armorPenetrationFlat": 0.0,
"armorPenetrationPercent": 1.0,
"attackDamage": 170.8350067138672,
"attackRange": 150.0,
"attackSpeed": 0.7979159951210022,
"bonusArmorPenetrationPercent": 1.0,
"bonusMagicPenetrationPercent": 1.0,
"critChance": 0.0,
"critDamage": 200.0,
"currentHealth": 1156.050048828125,
"healShieldPower": 0.0,
"healthRegenRate": 2.134500026702881,
"lifeSteal": 0.11999999731779099,
"magicLethality": 0.0,
"magicPenetrationFlat": 0.0,
"magicPenetrationPercent": 1.0,
"magicResist": 40.09749984741211,
"maxHealth": 1156.050048828125,
"moveSpeed": 785.0,
"omnivamp": 0.02500000037252903,
"physicalLethality": 0.0,
"physicalVamp": 0.0,
"resourceMax": 537.0,
"resourceRegenRate": 2.1530001163482666,
"resourceType": "MANA",
"resourceValue": 537.0,
"spellVamp": 0.0,
"tenacity": 5.0
},
fullRunes
あまり使ってないのでざっくりですが、以下の通りです。
| generalRunes | 選択したルーン全量(メイン・サブ) |
| keystone | 選択したキーストーン |
| primaryRuneTree | 選択したメインルーン |
| secondaryRuneTree | 選択したサブルーン |
| statRunes | 選択したシャード |
"fullRunes": {
"generalRunes": [
{
"displayName": "プレスアタック",
"id": 8005,
"rawDescription": "perk_tooltip_PressTheAttack",
"rawDisplayName": "perk_displayname_PressTheAttack"
},
{
"displayName": "凱旋",
"id": 9111,
"rawDescription": "perk_tooltip_9111",
"rawDisplayName": "perk_displayname_9111"
},
{
"displayName": "レジェンド: 迅速",
"id": 9104,
"rawDescription": "perk_tooltip_9104",
"rawDisplayName": "perk_displayname_9104"
},
{
"displayName": "背水の陣",
"id": 8299,
"rawDescription": "perk_tooltip_8234",
"rawDisplayName": "perk_displayname_8234"
},
{
"displayName": "なんでも屋",
"id": 8316,
"rawDescription": "perk_tooltip_MinionDematerializer",
"rawDisplayName": "perk_displayname_MinionDematerializer"
},
{
"displayName": "ビスケットデリバリー",
"id": 8345,
"rawDescription": "perk_tooltip_BiscuitDelivery",
"rawDisplayName": "perk_displayname_BiscuitDelivery"
}
],
"keystone": {
"displayName": "プレスアタック",
"id": 8005,
"rawDescription": "perk_tooltip_PressTheAttack",
"rawDisplayName": "perk_displayname_PressTheAttack"
},
"primaryRuneTree": {
"displayName": "栄華",
"id": 8000,
"rawDescription": "perkstyle_tooltip_7201",
"rawDisplayName": "perkstyle_displayname_7201"
},
"secondaryRuneTree": {
"displayName": "天啓",
"id": 8300,
"rawDescription": "perkstyle_tooltip_7203",
"rawDisplayName": "perkstyle_displayname_7203"
},
"statRunes": [
{
"id": 5008,
"rawDescription": "perk_tooltip_StatModAdaptive"
},
{
"id": 5008,
"rawDescription": "perk_tooltip_StatModAdaptive"
},
{
"id": 5011,
"rawDescription": "perk_tooltip_StatModHealth"
}
]
allPlayers
allPlayersにはゲームに参加しているプレイヤー全員分の情報が含まれています。
そのため、チャンピオンを特定する場合は、RiotIDや役割(ロール)+チームで特定する必要があります。
| championName | チャンピオン名 |
| isBot | ボットであればTrue |
| isDead | デス中であればTrue |
| items | 持っているアイテム |
| level | 現在レベル |
| position | ポジション(TOP, JUNGLE,MIDDLE,BOTTOM,UTILITY)が設定される ポジション選択がないモードの場合、NONEが設定される |
| rawChampionName | LoLの内部処理用チャンピオン識別子 |
| rawSkinName | LoLのスキン内部名 |
| respawnTimer | リスポーンまでの時間 |
| runes | 選択したルーン ※キーストーン・メイン/サブツリーのみ |
| scores | キル・デス・アシスト・CS・ワードスコア ★一番使う!! |
| skinID | LoL内部用のスキンID |
| skinName | 使っているスキン名 |
| summonerSpells | 選択したサモナースペル |
| team | 青側ならORDER/赤側ならCHAOS |
{
"championName": "フィオラ",
"isBot": false,
"isDead": false,
"items": [
・・・ ],
"level": 6,
"position": "TOP",
"rawChampionName": "game_character_displayname_Fiora",
"rawSkinName": "game_character_skin_displayname_Fiora_89",
"respawnTimer": 0.0,
"riotId": "フェンシングωおぢさん#でまちあ",
"riotIdGameName": "フェンシングωおぢさん",
"riotIdTagLine": "でまちあ",
"runes": {
・・・
},
"scores": {
・・・ },
"skinID": 89,
"skinName": "バトルクイーン フィオラ",
"summonerName": "フェンシングωおぢさん#でまちあ",
"summonerSpells": {
・・・ },
"team": "ORDER"
}
items
チャンピオンが持っているアイテムが含まれます。
私の場合は配信画面にスコアボードを表示させるときに使っています。
| canUse | アクティブアイテムだったらTrue |
| consumable | 消費アイテムだったらTrue |
| count | スタック数。ポーションやコントロールワードが2つになる |
| displayName | アイテム名 |
| itemID | 内部用のアイテムID。画像データと紐づける時に使う |
| price | アイテムの金額 |
| rawDescription | アイテムの内部用キー |
| rawDisplayName | アイテムの表示用内部キー |
| slot | どのスロットにあるか |
{
"canUse": false,
"consumable": false,
"count": 1,
"displayName": "ブーツ",
"itemID": 1001,
"price": 300,
"rawDescription": "GeneratedTip_Item_1001_Description",
"rawDisplayName": "Item_1001_Name",
"slot": 1
},
{
"canUse": false,
"consumable": false,
"count": 1,
"displayName": "ドラン ブレード",
"itemID": 1055,
"price": 450,
"rawDescription": "GeneratedTip_Item_1055_Description",
"rawDisplayName": "Item_1055_Name",
"slot": 2
},
{
"canUse": true,
"consumable": false,
"count": 1,
"displayName": "ラヴァナス ハイドラ",
"itemID": 3074,
"price": 150,
"rawDescription": "GeneratedTip_Item_3074_Description",
"rawDisplayName": "Item_3074_Name",
"slot": 4
}
],
scores
一番使うスコアです。
キル・デス・アシストとCS・ワードスコアが含まれます。
"scores": {
"assists": 9,
"creepScore": 50,
"deaths": 1,
"kills": 6,
"wardScore": 29.494892120361328
},
events
ゲーム内の発生したイベントが含まれます。
ただし、「あれ?これってないの・・・?」というイベントもあるため、万能ではないです。
"events": {
"Events": [
{
"EventID": 0,
"EventName": "GameStart",
"EventTime": 0.011351699940860271
},
{
"Assisters": [
"SUMMONER_NAME_X",
"SUMMONER_NAME_Y",
"SUMMONER_NAME_Z",
],
"EventID": 1,
"EventName": "ChampionKill",
"EventTime": 57.96607208251953,
"KillerName": "SUMMONER_NAME_A",
"VictimName": "SUMMONER_NAME_A"
},
項目
eventsに現れる項目の種類です。
私がプレイしたゲームから収集したので全量ではないとは思いますが、基本的なところは抑えられていると思います。
| EventID | ゲーム内で1から連番 |
| EventName | 各イベントの名称 |
| EventTime | イベント発生時刻 |
| Assisters | アシストしたriotIdGameName |
| KillerName | キル・破壊したriotIdGameName |
| VictimName | デスしたriotIdGameName |
| TurretKilled | 破壊されたタワー名 例)Turret_TOrder_L2_P3_1509986696 Order:青側 L2:第2レーン(ミッド) P3:第3タワー(インヒビタータワー) |
| Stolen | スティールした場合True |
| KillStreak | 連続キル数。2キルから現れる |
| DragonType | キルしたドラゴンタイプ Air/Chemtech/Earth/Fire/Hextech/Water/Elder |
| Recipient | FirstBloodなどを受け取ったriotIdGameName |
| InhibKilled | 破壊されたインヒビター名 例)Inhib_TOrder_L0_P1_2971077479 |
| Acer | エースを獲得したriotIdGameName |
| AcingTeam | エースを獲得したチーム |
| Result | ゲーム結果(Win/Lose) |
| InhibRespawned | 復活したインヒビター名 |
| InhibRespawningSoon | 復活予定のインヒビター名 |
イベントの種類
同様に発生するイベントです。
| GameStart | ゲーム開始時のイベント |
| MinionsSpawning | 最初のミニオン発生 |
| FirstBlood | ファーストブラッド発生 |
| ChampionKill | チャピオンキル |
| TurretKilled | タワー破壊 |
| Multikill | マルチキル |
| DragonKill | ドラゴンキル |
| HordeKill | ヴォイドクラブキル |
| InhibKilled | インヒビター破壊 |
| FirstBrick | ファーストタワー破壊 |
| HeraldKill | ヘラルドキル |
| Ace | エース発生 |
| BaronKill | バロンキル |
| AtakhanKill | アタカンキル ※シーズン2025まで |
| InhibRespawningSoon | インヒビター復活予告 |
| InhibRespawned | インヒビター復活 |
| GameEnd | ゲーム終了 |
gameData
ゲームの情報が含まれます。
特に、gameModeでTUTORIALやARAMなどで動作しないツールはスキップする作りこみが必要になります。
| gameMode | ゲームモード CLASSIC/ARAM/TUTORIAL/URF/・・・ 公式サイトのgameModes.jsonに全量あり |
| gameTime | ゲーム時間 |
| mapName | Map11はSummoner’s RiftのCurrent Version 公式サイトのmaps.jsonに全量あり |
| mapNumber | mapNameと同じ |
| mapTerrain | 用途不明 |
"gameData": {
"gameMode": "CLASSIC",
"gameTime": 2706.243408203125,
"mapName": "Map11",
"mapNumber": 11,
"mapTerrain": "Default"
}

コメント