by shigemk2

当面は技術的なことしか書かない

通信プロトコルから見る艦隊これくしょん #kernelvm

@kfujieda

レスポンスが悪い

  • 通信プロトコル(REST API)に無駄が多い
  • JSONデコードが無駄に大きい
  • リクエスト数が無駄に多い

  • JSONのデコードが遅かった

4/23に全面改良

  • 春イベント
  • イベント期間中はDAUが大きく増える
  • 過去のイベントでは通信エラーが頻発
  • イベントに合わせて大幅改良
  • 通信プロトコルの改良
  • クライアントの改良
  • Flash11のネイティブJSONデコーダー

何かするたびにエラーだったのに…

クライアントを殆ど書きなおしている?

支援ツールの開発者が死亡

  • プロトコルがらっと変わって支援ツールが死んでしまった(二晩くらいかかかった)

KancolleSniffer

  • 艦これの支援ツール
  • 情報の一覧表示
  • 自動式タイマー (遠征、建造など)

  • 通信をキャプチャして実現

  • Windowsのシステムプロキシを乗っ取る

ログイン (旧)

  • スタート画面から母港まで17リクエスト
  • マスターデータのリクエスト数が多い
  • まとめるとJSONデコードが間に合わないからか

けっこうやりとりが多い

/api_get_master/ 系は7つくらいリクエストがあって、でもログイン時に全部とったらいんじゃね?って 思ったけど、ログイン時に取得するとJSONデコードが間に合わない?

ログイン (旧)の問題

/api_get_master/ship 561kb

  • 艦娘と深海戦艦全部の仕様
  • 55プロパティのオブジェクトが約400
  • 遅いCPUではデコードが間に合わない(ノートはともかくタブレットだと死ぬ)

/api_get_master/ship 183kb

  • 保有装備の情報
  • 名前を含む装備の仕様が全て入っている
  • 12.7cm連装砲が20個あれば"12.7cm連装砲"という文字列が20個

ログイン (新)

  • スタート画面から母港まで9リクエスト
  • マスターデータの取得を集約
  • slot_itemの縮小

装備のやりとりなどリクエストが小さくなってる

解体

旧クライアント

  • 解体の速度が遅い(ザコの駆逐艦が多すぎる)
  • /api_get_kousyou/destroyship 解体指示(引っ張ってくるデータが多すぎるので遅くなるのも必然)

新クライアント

  • 旧だと保有装備などの情報も引っ張ってくるので、とにかく遅い。
  • 新しいほうは指示のAPIだけ叩くから断然早い

母港

毎回全艦娘の状態を取得するのは同じ (このあたりは旧とあまり変わっていない)

支援ツールへの影響

  • 操作後に現状確認するリクエストが出ない
  • 情報を取得する機会が激減
  • KancolleSnifferはリクエストのパラメータをもとに計算
  • 解体→艦娘数-1,装備数-n

  • 母港に戻ると現状確認するのは同じ

  • 母港に戻った時に情報更新したらいい