techbuzz第5回cocos2d-x勉強会 brainwars発表資料

43
第5回cocos2d-x勉強会資料 株式会社トランスリミット 工藤 琢磨

Upload: takuma-kudo

Post on 06-Jul-2015

1.639 views

Category:

Technology


1 download

DESCRIPTION

TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料 cocos2d-x3.0 + socket.io

TRANSCRIPT

Page 1: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

第5回cocos2d-x勉強会資料

株式会社トランスリミット

工藤  琢磨

Page 2: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

自己紹介

氏名:  工藤  琢磨  (26)

          takuma.kudo.7

略歴

06年  東京ゲームデザイナー学院

08年  タイトー

10年  コミュニティファクトリー

12年  ジークレスト(CAアメリカ)

14年  トランスリミット

Page 3: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

BrainWarsとは?

Page 4: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

脳トレ×リアルタイム対戦

Page 5: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

子供から大人まで、国境を越えて熱狂できる!

Page 6: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

iOS版配信中です(ゝω・)

Page 7: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

というわけで

Page 8: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

特徴は

リアルタイム対戦!

Page 9: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

本日の内容

•   リアルタイム対戦のための通信技術

•   リアルタイム対戦の工夫

•   その他ハマった点などなど

BrainWarsはcocos2d-x3.0で作られてます!

Page 10: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

Socket.IO

リアルタイム対戦の通信技術

Page 11: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

Socket.IOとは

•   あらゆるデバイス間で双方向通信を実現することを目的とした技術。

•   Websocket、Pollingなどを自動で判定、選択してくれる。

Page 12: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

このSocket.IO

Cocos2d-x  3.0から使えます!

※  Websocketなら2.x系でもつかえます

Page 13: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

実装デモ

Page 14: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

知らぬ間にQiitaにまとめが!

「Qiita  BrainWars」で検索!

Page 15: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

めっちゃ簡単!ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ

Page 16: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

気をつけたい点・その他

•   遅延や接続切れは起こるもの →  こまめに同期タイミングを作ってる。

•   Spine/Json.hはイケてない(エンコード出来なかったり処理重かったり)   →  rapidjsonを使ってます。

•   cocos側はwebsocketが固定で採用される

•   データが大量の場合分割されて送信されてるみたい(2KB)

Page 17: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

リアルタイム対戦の工夫

Page 18: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

BrainWarsでの対戦パターン

• ランダム対戦• 相手を指定した対戦• シェアリンクからの対戦• などなど

Page 19: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

ランダム対戦

ソケットサーバー(Node.js)

ホスト(先に繋いだユーザ)

ゲスト後に繋いだユーザ

APサーバー(Ruby  on  Rails)

問題の取得結果の送信など

待機中が2人になるとマッチング

バトルコードを発行して対戦を識別データの受け渡し接続切れの監視

Page 20: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

問題点

ホスト

対戦相手が来ない・・・

相手がいなかったらどうしよう((((;゚Д゚))))

・・・

Page 21: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

ログで解決

ソケットサーバー(Node.js)

ホスト

ゴースト

APサーバー(Ruby  on  Rails)

②ゴーストデータの要求

①タイムアウトで切断

過去の対戦ログ

Redis

対戦した時のログを保持してる

Page 22: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

相手を指定した対戦

ソケットサーバー(Node.js)

ホスト ゲスト

APサーバー(Ruby  on  Rails)

問題の取得結果の送信など データの受け渡し

接続の管理

Push通知

Push起動でそのまま対戦へ

バトルコードが入ってる

Page 23: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

問題点

ホスト

Push通知

・・・ ・・・

相手が応えなかったらどうしよう((((;゚Д゚))))

Page 24: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

これもログで解決

APサーバー(Ruby  on  Rails)

ホスト ゲスト

先にプレイしてログを残しておく 後からいつでも

ログと戦える

ゴースト

Redis

Page 25: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

問題点その2

ホスト ゲスト

先にプレイ中 あ、通知来てる

ログが残る前に来たらどうしよ((((;゚Д゚))))

・・・

APサーバー(Ruby  on  Rails)

Page 26: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

ソケット開きっぱで解決

ソケットサーバー(Node.js)

ホスト ゲスト

ソケットを開いたまま先にプレイする データの受け渡し

接続の管理

Push通知

ホストのプレイログをソケット経由で受け取る

Page 27: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

シェア対戦

APサーバー(Ruby  on  Rails)

ホスト ゲスト

先にプレイしてログを残しておく

リンクからアプリを起動いつでも挑戦できる

ゴースト

Redis

ソーシャルにシェア

Page 28: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

Cocos2d-x  3.0でハマった点

Page 29: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

Beta版から開発してたので

本家バグがやたら多かった

(ヽ´ω`)

Page 30: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

Beta版なんだから当たり前やん!

Page 31: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

ただ特に気をつけたい点(iOS)

Page 32: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

32/64bitで実装が分かれてる

Page 33: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

どっちかが動かないとかよくある

Page 34: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

なので

シュミレータ(32bit,64bit)iPhone4  or  5iPhone5S

 の全部でテストをする。

Page 35: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

そんな3.x系

Page 36: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

3.x系の開発で困ったら

本家フォーラムに書くのが一番!

Page 37: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

中の人はめちゃめちゃ優しい

•  つたない英語でも汲み取ってくれる。

•  むしろ日本語で返事くれる。

•  本家リリース前の段階で修正コミットを教えてくれる。

•  時々困った事ないかメールくれる。

Page 38: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

臆せず書いちゃおう!

Page 39: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

それがWin-Winだもの!ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ

Page 40: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

最後に

Page 41: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

We  Are  Hiring!ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ

Page 42: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

Wantedlyなどから!

Page 43: TechBuzz第5回cocos2d-x勉強会 BrainWars発表資料

ありがとうございました!