Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

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

  • Als Erste(r) kommentieren

通信プロトコルから見る艦隊これくしょん 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

×