The Riot Games API Challenge 2018

・今年のコンテストのテーマはLeague Client API
The Riot Games API Challenge 2018

League Client API(LCU), LCUはLeague of Legends Client Updateから来ています。
新クライアントと共に実装されているので、discordではlcuで通ってます。
公式の記事より、こちらの方がソースも載ってて、どうAPIとクライアントが関係してるのかが分かる気がします。キーワードが分かればGoogleに聞けるので。
League Client Update Extra Insights

・作ったもの
Ancient Chimes
League Client APIを使ったLoLフレンドリストをダウンロードするアプリ
https://github.com/ulgg/ancient-chimes
通常のRiot Games APIではフレンドリストを参照できません。

・学習方法

開発環境構築、Electron, League client APIを使うまでに参考にしたページはGithub readme referrenceに書きました。Googleは何でも教えてくれます。

あなたもLeague Client APIで、クライアントに通知飛ばしたり、サモナーアイコン変更したり、チャット飛ばしたりするアプリが作れます。

本当は自分で書きたかったです。League Client APIを使うための手順をGit~exeにするまで。余力があれば後日。

参加用に年末から、奈落のNexus Blitz Missionを一番に終わらせ、駆け足で作りました。最初、ネット上からもLeague Client APIが呼べると勘違いして、Google App Engineにリリースしてweb appとしての利用を考えていましたが、ローカルからしかAPIが呼べないことが2週間後に判明。Node.js、Express、Pugをほぼ0から勉強したのですが、今回は使えない知識になってしまいました。
その後、作るからには配布したかったので、exeにできるElectronで作ることにしました。もともと、rift-explorerというElectronでできたLeague Client APIの説明書を自動生成するアプリ(swaggerというらしい)があります。それを参考にしました。また、Riot Games API Discord #lcu-apiと#api-challenge-2018の2つのチャンネルを最初から読み、pinはもちろん、毎日2つのチャンネルのコメントをチェックしてました。

・残作業
ほんとは、4つくらい機能を実装したのですが、ルールを見たら非承認API使ってしまっていたので削除しました。コンテスト終わったらリリースするかもしれませんが、最終プレイ日を取るのが、1一人あたり100試合くらい取って、それの最新のデータを1個取るっていう方法にしてるので、すごく遅いです。

1. フレンドリストのフレンドの最終プレイ日を表示(ローカル環境で済だが処理が遅い。311人取るのに5分以上)
2. フレンドリストダウンロード(済)
3. 古いフレンドリストインポートして、現在のサモナー名を表示(済)
(サーバ移動>数年後戻ってきた>永久不変?のpuuidから取るのでサモナー名変更されてても名前が取れる。
puuidは 64 base encodeされるかもですが。)
4. 3. のついでに最終プレイ日も再取得 (ローカル環境で済だが処理が遅い)
5. 最終プレイ日でソート

・次
lol-storeのAPIでフレンド登録した日が取れるので、何年前から友達である、とか表示できます。
クライアント右上の通知、ミッションの通知、League voiceが面白い。
League voiceは一回いじってたら、バグなのか、抜けた友達が、他のLeague voiceに入った声が拾えてたので、premadeじゃなくても接続できる気がします。Discordの音声転送したりしたら、discord派+League voice派で一緒に話せるかもしれません。あと、google voiceみたいなAPIがあるので、それも使えるのではないかと。
twitch配信用にLPを1時間ごとに通知領域に表示するとかやりたいです。ゲーム終了時のLPの増減拾えたら面白いのですが、拾えるか不明。

Comments