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

Post on 06-Jul-2015

1.639 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

第5回cocos2d-x勉強会資料

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

工藤  琢磨

自己紹介

氏名:  工藤  琢磨  (26)

          takuma.kudo.7

略歴

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

08年  タイトー

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

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

14年  トランスリミット

BrainWarsとは?

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

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

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

というわけで

特徴は

リアルタイム対戦!

本日の内容

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

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

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

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

Socket.IO

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

Socket.IOとは

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

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

このSocket.IO

Cocos2d-x  3.0から使えます!

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

実装デモ

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

「Qiita  BrainWars」で検索!

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

気をつけたい点・その他

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

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

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

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

リアルタイム対戦の工夫

BrainWarsでの対戦パターン

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

ランダム対戦

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

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

ゲスト後に繋いだユーザ

APサーバー(Ruby  on  Rails)

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

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

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

問題点

ホスト

対戦相手が来ない・・・

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

・・・

ログで解決

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

ホスト

ゴースト

APサーバー(Ruby  on  Rails)

②ゴーストデータの要求

①タイムアウトで切断

過去の対戦ログ

Redis

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

相手を指定した対戦

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

ホスト ゲスト

APサーバー(Ruby  on  Rails)

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

接続の管理

Push通知

Push起動でそのまま対戦へ

バトルコードが入ってる

問題点

ホスト

Push通知

・・・ ・・・

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

これもログで解決

APサーバー(Ruby  on  Rails)

ホスト ゲスト

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

ログと戦える

ゴースト

Redis

問題点その2

ホスト ゲスト

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

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

・・・

APサーバー(Ruby  on  Rails)

ソケット開きっぱで解決

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

ホスト ゲスト

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

接続の管理

Push通知

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

シェア対戦

APサーバー(Ruby  on  Rails)

ホスト ゲスト

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

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

ゴースト

Redis

ソーシャルにシェア

Cocos2d-x  3.0でハマった点

Beta版から開発してたので

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

(ヽ´ω`)

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

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

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

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

なので

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

 の全部でテストをする。

そんな3.x系

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

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

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

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

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

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

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

臆せず書いちゃおう!

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

最後に

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

Wantedlyなどから!

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

top related