Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

ポコロンダンジョンズとリアルタイム通信 -クライアント編-

ポコロンダンジョンズとリアルタイム通信 -クライアント編-

https://atnd.org/events/76070
の発表資料です

Tweet

More Decks by CyberAgent SGE Engineer

Other Decks in Programming

Transcript

  1. 自己紹介 •  袴田  大貴 (Hakamata Daiki) •  株式会社グレンジ所属 •  ポコロンダンジョンズ

     クライアントエンジニア •  リリース前から現在まで https://www.facebook.com/D.hakamata
  2. リアルタイム通信 n  プロトコル  WebSocket : ブラウザでは定番  UDP : MMOでよく使われる  RUDP

    : UDPとTCPの良いとこどり  HTTP : ポーリング n  ミドルウェア  Node.js : すべての処理を自前で実装, JavaScript  Photon : クラウドあり, C#, WIndowsServer  モノビットエンジン : クラウドあり, C++, LinuxServer
  3. ソケット通信 n  iOS     AZSocketIO       [ SocketRocket, AFNetWorking ] n  Android

        Socket.IO-Client for Java       [ Java-WebSocket ] どちらも独自に改造済み
  4. ソケット通信Libの改修 n  iOS  host, port, pathによる接続先設定  SSL対応  切断/再接続処理 n  Android

     SSL対応  SSLContextのプロトコル複数対応  切断処理 (GC多発)  JNI/マルチスレッド対応  イベント名+JSONデータ送受信
  5. 端末間の同期 •  盤面の色, 配置 •  敵の情報 •  プレイヤー, 召喚モンスターの情報 • 

    被ダメ/与ダメ •  ターン数 •  ドロップ情報 全てをやり取りするとデータ量多い!
  6. クエスト中  (送信) n  ターンの操作権限者が送る情報 •  プレイヤ番号 •  行動タイプ (なぞり/スキル/リタイア/コンティニュー) • 

    コマンドインデックス (送信情報のシーケンシャル番号) •  (なぞり情報) •  (使用したスキル情報)
  7. プレイヤー  :  2 コマンド  :  0 タイプ  :  なぞり始め なぞり

     :  (1,  4) プレイヤー  :  2 コマンド  :  1 タイプ  :  なぞり中 なぞり  :  (2,  4) ・・・ プレイヤー  :  2 コマンド  :  5 タイプ  :  なぞり終わり
  8. 乱数(擬似乱数) 乱数生成器 シード値  :  A 乱数列 x1,  x2,  x3,  x4,

     x5,  … 乱数生成器 シード値  :  B 乱数列 y1,  y2,  y3,  y4,  y5,  … 同一のシード値で初期化すれば、同一の乱数列が得られる
  9. OSとSTL n  iOS  libc++ (LLVM C++ standard library) n  Android

     APP_STL := gnustl_static [Application.mk] C++標準ライブラリが異なるので、そのままではシード値 を同期しても生成される乱数列が異なる