通信プロトコルから見る艦隊これくしょん on 第十回 カーネル/VM探検隊

12,482 views

Published on

0 Comments
29 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
12,482
On SlideShare
0
From Embeds
0
Number of Embeds
1,429
Actions
Shares
0
Downloads
22
Comments
0
Likes
29
Embeds 0
No embeds

No notes for slide

通信プロトコルから見る艦隊これくしょん on 第十回 カーネル/VM探検隊

  1. 1. 通信プロトコルから見る 艦隊これくしょん 藤枝 和宏 @kfujieda ftp.jaist.ac.jpの中の人 2014/5/25 第十回 カーネル/VM探検隊 1
  2. 2. 艦隊これくしょん • Adobe Flashで動作するブラウザゲーム • 操作のレスポンスが非常に悪かった 2014/5/25 第十回 カーネル/VM探検隊 2
  3. 3. レスポンスが悪い理由 • 通信プロトコル(REST API)に無駄が多かった • リクエスト数が無駄に多い • レスポンスのJSONが無駄に大きい • JSONのデコードが遅かった • as3corelibのJSONデコーダーが使われていた(たぶん) • ActionScriptで書かれていて遅い 2014/5/25 第十回 カーネル/VM探検隊 3
  4. 4. 4月23日に全面改良 • 春イベント「索敵機、発艦始め!」の開始日 • イベント期間中はDAUが大きく増える • 過去のイベントでは通信エラーが頻発 • イベントに合わせて大幅改良 • 通信プロトコルの改良 • クライアントの改良 • Flash 11のネイティブJSONデコーダーを使用(たぶん) 2014/5/25 第十回 カーネル/VM探検隊 4
  5. 5. 支援ツールの開発者が死亡 2014/5/25 第十回 カーネル/VM探検隊 5
  6. 6. KancolleSniffer kancollesniffer.sourceforge.jp • 艦これの支援ツール • 情報の一覧表示 • 自動式タイマー • 遠征、入渠、建造など • 通信をキャプチャして実現 • Windowsのシステムプロキ シを乗っ取る 2014/5/25 第十回 カーネル/VM探検隊 6
  7. 7. ログイン(旧) • スタート画面から母港ま で17リクエスト • マスターデータのリクエ スト数が多い • まとめるとJSONのデ コードが間に合わな いからか 2014/5/25 第十回 カーネル/VM探検隊 7 S1 /sound/titlecall/b/01.mp3 20kB /api_get_member/basic 1kB /api_get_master/ship 561kB /api_get_master/stype 2kB /api_get_member/ship 108kB /api_get_member/deck 1kB /api_get_member/material 0kB /api_get_member/kdock 1kB /api_get_master/furniture 82kB /api_get_member/furniture 7kB /api_get_master/slotitem 91kB S2 /sound/titlecall/c/06.mp3 36kB /api_get_member/slotitem 183kB /api_start 259kB /api_get_master/useitem 9kB /api_get_member/useitem 1kB /api_get_master/maparea 1kB S3 /sound/kc403/1.mp3 46kB 合計(mp3以外) 1.34MB
  8. 8. ログイン(旧)の問題 • /api_get_master/ship 561kB • 艦娘と深海戦艦全部の仕様 • 55プロパティのオブジェクトが約400 • 遅いCPUではデコードが間に合わない 「ムービー内のスクリプトが原因で実行速度が遅くなっています。」 • /api_get_member/slotitem 183kB • 保有装備の情報 • 名前を含む装備の仕様が入っている • 12.7cm連装砲が20個あれば”12.7cm連装砲”が20個 2014/5/25 第十回 カーネル/VM探検隊 8
  9. 9. ログイン(新) • スタート画面から母港 まで9リクエスト • マスターデータの取得 を集約 • slot_itemの縮小 2014/5/25 第十回 カーネル/VM探検隊 9 S1 /sound/titlecall/b/08.mp3 56kB /api_start2 1,069kB /api_req_member/get_in… 0kB /api_get_member/basic 1kB /api_get_member/furniture 11kB /api_get_member/slot_item 21kB /api_get_member/useitem 1kB /api_get_member/kdock 1kB /api_get_member/unsetslot 2kB S2 /sound/titlecall/c/08.mp3 35kB /api_port/port 69kB S3 /sound/kcfggcskrfkpnr/1.mp3 65kB 計(mp3以外) 1.18MB
  10. 10. • 旧クライアント • 新クライアント 解体 2014/5/25 第十回 カーネル/VM探検隊 10 /api_req_kousyou/destroyship 0kB 解体指示 /api_get_member/material 0kB 資材数 /api_get_member/ship2 57kB 全艦娘の状態 /api_get_member/slotitem 183kB 保有装備 /api_req_kousyou/destroyship 0kB 解体指示
  11. 11. 補給 • 旧クライアント • 新クライアント 2014/5/25 第十回 カーネル/VM探検隊 11 /api_req_hokyu/charge 0kB 補給指示 /api_get_member/ship2 57kB 全艦娘の状態 /api_req_hokyu/charge 0kB 補給指示
  12. 12. 母港 • 旧実装 • 新実装 • 毎回全艦娘の状態を取得するのは同じ 2014/5/25 第十回 カーネル/VM探検隊 12 /api_get_member/material 0kB 資材数 /api_get_member/deck_port 1kB 艦隊編成 /api_get_member/ndock 1kB 入渠情報 /api_get_member/ship3 54kB 全艦娘の状態 /api_get_member/basic 1kB 提督の情報 /api_port/port 63kB 全部まとめて
  13. 13. 支援ツールへの影響 • 操作後に現状確認するリクエストが出ない • 情報を取得する機会が激減 • KancolleSnifferはリクエストのパラメータを基に計算 • 解体→艦娘数-1、装備数-n • 母港に戻ると現状確認するのは同じ • 母港に戻ったときに情報更新すればよい 2014/5/25 第十回 カーネル/VM探検隊 13

×