photon enterprise cloud 事例
TRANSCRIPT
Photon Enterprise Cloud 事例GTMF2016
ワンダープラネット株式会社取締役 CTO 村⽥知常
1 ⾃⼰紹介
1
村⽥ 知常ワンダープラネット株式会社 取締役 CTO
経歴⼤学で⽣化学・遺伝⼦を学ぶ10年間 SIerにて業務システム開発2012年前⾝となる会社に転職ワンダープラネットとして独⽴する際、取締役CTOに就任
著書「SpriteKitではじめる2Dゲームプログラミング Swift対応」
2 ワンダープラネット株式会社
2
• 2012年9⽉3⽇ 設⽴
• スマートデバイス向けフルネイティブアプリ・ゲームの企画・開発・運営・販売
• 名古屋本社
• 東京サテライトオフィス(2015年12⽉1⽇開設)
• 従業員数 56名
3 ゲーム紹介
3
• 400万ダウンロードを突破• AppStoreセールスランク TOP10⼊り
• 公式Twitterのフォロワー 15万を突破!!
• 繁体字中国版(台湾・⾹港・マカオ)も展開中
基本操作はタップでパネルを壊すだけ!最上級の⼿軽さと仮想空間をモチーフとしたポジティブデザインで、最⾼の気持ちイイが体験できるブッ壊しRPG。
4 アジェンダ
4
• 構成概要
• なぜPhotonを選んだのか?
• Photonを使って楽だった点、⼤変だった点
• Cocos2d-xとの組み合わせで⼤変だった点
5
構成概要
6 構成概要(サービス関連)
6
マルチプレイ
サーバー
CDN
データ分析
クライアントCocos2d-x v3.2
7 使っている場⾯
7
ロビーに⼊った状態 ルームに⼊った状態 ゲームを開始した状態
8
なぜPhotonを選んだのか
9 なぜPhotonを選んだのか?
9
• サーバーエンジニア不⾜
• 短期間でマルチプレイを実現
マルチプレイを実現するにあたり…
10 なぜPhotonを選んだのか?
10
• サーバーエンジニアの時間をなるべく割かずマルチプレイを実現したい
• リアルタイム通信のサーバー運⽤にサーバーエンジニアの時間を割きたくない
• リアルタイム通信のデリケートな部分はあらかじめ担保されている
実現するには…
11 なぜPhotonを選んだのか?
11
12 なぜPhotonを選んだのか?
12
• 別プロジェクトにて技術検証の実績があった
• Photon Realtimeであればサーバー管理が不要
• いつでもCCUの増減が可能 (1,000 CCU単位)
• Cocos2d-xに対応
• 多くの他社実績があり安⼼感
選定理由
13 なぜPhotonを選んだのか?
13
• 運⽤していくと少し設定を変えたくなる
• 10,000 CCU を超えたら…CCU=同時接続ユーザー数、プラン上は 10,000 CCUがMAX
• 他の利⽤者の影響を受けたくないPhoton Realtimeはパブリック環境そして、夜のゲリラがだんだん重くなる
しかし…
14 なぜPhotonを選んだのか?
14
Photon Enterprise Cloud
15 なぜPhotonを選んだのか?
15
Photon Enterprise Cloud
• 専⽤サーバーで稼働
• サーバーの設定変更が可能
• プラグインでロジックのカスタマイズが可能(クラッシュフィーバーでは未使⽤)
• Photon Realtimeからの移⾏はプログラムの変更が⼀切不要!
16
楽だった点、⼤変だった点
17 Photonを使って楽だった点、⼤変だった点
17
• Photon Realtimeには無料プランがあるのですぐ簡単に検証することができる
• 誰でもマルチプレイが実現可能• マネージドサービスなので管理が楽サーバーエンジニアはAPI側に集中できる
楽だった点
18 Photonを使って楽だった点、⼤変だった点
18
• テクニカルな質問は提供元のExit Games社へ確認するので時間が掛かる→ 急ぎのときはフォーラムで質問(英語)
• 実装上、気をつける点はその問題に当たってから知ることが多かった→ 実例を紹介します
⼤変だった点
19 Photonを使って楽だった点、⼤変だった点
19
CCUの増加と共にルーム選択画⾯のリスト表⽰が重くなってくる
【現象】ルーム選択画⾯の表⽰が遅い問題
20 Photonを使って楽だった点、⼤変だった点
20
【原因】ルーム選択画⾯の表⽰が遅い問題
ロビールーム
ルーム
ルーム
ルーム
ルーム ルーム ルーム
・・・
• Photonからはロビー内のルームリスト情報が全て送られてくる
• 絞り込んで表⽰するのはアプリ側で実装
ルームが多いと受信データが⼤きくなり、絞り込みにも時間が掛かる
ルームリストのサイズが⼤きい
21 Photonを使って楽だった点、⼤変だった点
21
【対策】ルーム⼀覧の表⽰が遅い問題• ゲーム開始済みルームの⾮表⽰• カスタムプロパティの⾒直し• ロビーの分割
22 Photonを使って楽だった点、⼤変だった点
22
【現象】ステータスコード 1033 問題• ステータスコード 1033 が返り
マルチプレイができない• Reliableの受信キューがいっぱいになっている
という警告• ⼀般的な対処法としては
Client::service()を呼び出す頻度を上げるが、充分に呼び出していた
23 Photonを使って楽だった点、⼤変だった点
23
【原因】ステータスコード 1033 問題• ロビーリストのサイズが⼤きい• LINEマルチなどで名前付きロビーを作成して
実現していたのが原因• そしてロビー内のルームが無くなっても
ロビー⾃体は消えない・・・ルームはルーム内のプレイヤーがいなくなると消えます
24 Photonを使って楽だった点、⼤変だった点
24
【対策】ステータスコード 1033 問題• 名前付きロビーではなくルーム名指定で
実現できるところは変更しロビーを⼤量に作成しないように変更
25
Cocos2d-xならではの⼤変
26 Cocos2d-xと組み合わせで⼤変だった点
26
AndroidとiOSのSDKをそれぞれ導⼊
• Unityと⽐較すると導⼊が⾯倒
27 Cocos2d-xと組み合わせで⼤変だった点
27
ドキュメント不⾜• Web上のドキュメントを⾒ても例はC#ばかり• APIリファレンスは英語、まれに誤りが…
• ソースコードは嘘をつかないのでSDK側のソースコードを眺める
28
最後に
29 最後に
29
• 厳しいスケジュールの中マルチプレイも含めてローンチできたのはPhoton Realtimeのおかげ
• もし使うか迷っていたら無料で始められるのでまず触ってみる!