gtmf 2016:cocos2d-x/marmalade&photon最新事例 gmoクラウド株式会社

Post on 12-Apr-2017

206 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Cocos2d-x/Marmalade & Photon最新事例 GMO クラウド株式会社並木 健太郎

自己紹介• GMO クラウドの並木です• Photon 運営事務局、 Marmalade 運営事務局

PlayCanvas 運営事務局シニアテクニカルアドバイザー• 趣味:神輿、 DJ

アジェンダ• Photon のご紹介• Marmalade のご紹介• 『レジェンド オブ キングダム』における

Marmalade & Photon 利用事例• 『クラッシュフィーバー』における

Cocos2d-x & Photon 利用事例– ワンダープラネット株式会社 取締役 CTO 村田 知常さま 

• Photon 最新情報

Photon のご紹介

Photon のしくみ• すべてのクライアント (= プレイヤー ) はサーバーへ接続する• サーバーはクライアント間の通信をリレーする役割• サーバー自身は基本的には処理を行わないが、 Webhooks や Plugin を利用してカスタマイズも可能

Photon

Client Client Client

SDK SDK SDK

Photon のサービス形態• クラウド型サービス• サーバーはサービス提供元で運用• クライアントに SDK を組み込むだけで利用可能

• ミドルウェア型サービス• ソフトウェアとしてご提供、お客さまで運用• サーバーサイドのカスタマイズが自由に

Photon Cloud のラインナップ汎用性の優れたスタンダードな Realtime

Unity 向けに特化された Unity Networking

Chat に特化したサービスの Chat

音声通話を簡単に導入できる Voice

Photon Enterprise Cloud• Photon Cloud の上位サービスとして、

Photon Enterprise Cloud をご用意しています• Photon Cloud では難しいと思われる場合でも、 Enterprise Cloud なら大丈夫です!

Cloud vs. Enterprise CloudCloud• Public サービス ( 共有 )• 10,000CCU まで• Webhooks 対応• 複数タイトル共有不可• サーバー設定変更不可

Enterprise Cloud• Private サービス ( 専有 )• CCU 上限なし• Webhooks & Plugin 対応• 複数タイトル共有可能• サーバー設定変更可能

Marmalade のご紹介

Marmalade とは• 単一のコード (C++ など )から、様々なプラットフォームへデプロイできるクロスプラットフォーム SDK• 抽象化レイヤーは最小のフットプリントで、ハードウェアの能力を最大限発揮可能

Marmalade Core• C++ で記述でき、パフォーマンスチューニングが容易• 過去のネイティブコード資産の流用が容易に• 3D エンジンは様々なレイヤーでご用意

Marmalade Quick• Lua で記述でき、コーディングが容易に• Cocos2d-x などのオープンソースをベースに

『レジェンド オブ キングダム』におけるMarmalade & Photon 利用事例

「レジェンド オブ キングダム」• Photon と Marmaladeをご採用いただいている、ガンホー・オンライン・エンターテイメントさまの「レジェンド オブ キングダム」について、ご紹介します!

お伺いしてきました!鈴木 健 さま

「レジェンド オブ キングダム」ディレクター。いくつかの家庭用タイトルのプランナーを経て、「ピコットキングダム」から本作のディレクターを務める。たまに「鈴木キングダム」として王様の恰好で現れることもある。

お伺いしてきました!澤田 朗 さま

「レジェンド オブ キングダム」メインプログラマ。やはりいくつかの家庭用タイトルのメインプログラマを経て、本作のメインプログラマを務める。本作のスピーディーでテンポのよいマルチプレイを実現してくれた立役者。

どんなタイトル?• タッチ操作だけで爽快アクションが可能な、多人数ベルトスクロールアクション

RPG• 最大 4 人同時マルチプレイだけでなく、ストリークエストやアリーナバトルなども様々なゲームモードを搭載

開発の経緯• PlayStation®Vita 版「ピコットナイト」 から、 iOS/Android 向けに再開発を行った• Vita 向けの C++ ソースコードを最大限生かしながら、スムーズに開発を行いたかった

なぜ Photon ?• Marmalade を利用していたので、 SDK が組み込みやすい Photon は自然な選択• シンプルにマッチメイキングとリレーができればよかったので、 Photon Realtimeでテストを行い、そのまま Realtime でリリース

Photon の組み込み期間は?• SDK を組み込む部分は、1週間ほどで完了ただ…、• Vita 版ではマルチプレイを P2P で実装• iOS/Android 版では一旦外していたマルチプレイを再実装するにあたり、様々な仕様変更があり、復活させるには大きな工数が必要• Photonそのものの組み込みは楽だったので、とても助かりました!

どう使ってますか?• 本当にシンプルに使ってます• ルーム作成、ルームリスト、ゲーム内リレー• 簡単にマルチプレイを実現するなら

Realtime で十分に実現可能

Photon で苦労した点は?• ルーム検索がないので、自前で実装する必要があった• クライアント側で実装• 実際の通信部分はすごく楽でした

Marmalade との組み合わせ• Marmalade 向けの Client SDK があるので、組み込みは至極簡単• SDK を展開して、コードを追加するだけで完了

なぜMarmalade ?• Vita 向けの C++ コードや自社のライブラリがあったため、それらを最大限生かし、 iOS/Android のクロスプラットフォームを実現するため

Marmalade のメリット• 内製の C++ ライブラリをほぼそのまま iOS/

Android の開発に活かせた– ネイティブ環境でそれぞれポーティングすることを考えたら、かなりの工数を削減できたのでは

• ハードウェアに依存する部分をある程度吸収でき、工数削減に貢献

Marmalade のメリット• プラットフォームのアップデート対応も早くできた• Marmalade だけで iOS 向けビルドができる

– Xcode を通さないので、良い点、悪い点あり• シンプルなライブラリなので、管理をしっかりすればメモリ使用量は抑えられる

– iPhone 4S でも快適にプレイできる

Marmalade の苦労点• 日本では浸透していないので、日本語の資料がほとんどなかった

–英語版の情報やフォーラムを参照していた• 時差があり、サポートに時間がかかることも• Android の特定端末でつながらないことがあり、端末を送って対応してもらったことも

まとめ• Photon Realtime でマルチプレイの実装は本当に簡単でした!• Marmalade で既存 C++ コードの再利用も簡単に!

Photon Enterprise Cloud 事例 GTMF2016

ワンダープラネット株式会社取締役  CTO  村田知常

32 自己紹介

32

村田 知常

ワンダープラネット株式会社 取締役 CTO経歴

 大学で生化学・遺伝子を学ぶ  10 年間 SIer にて業務システム開発  2012 年前身となる会社に転職 ワンダープラネットとして独立する際、取締役 CTO に就任

著書 「 SpriteKit ではじめる 2D ゲームプログラミング Swift 対応」

33 ワンダープラネット株式会社

33

• 2012 年 9 月 3 日 設立

• スマートデバイス向けフルネイティブアプリ・ゲームの企画・開発・運営・販売

• 名古屋本社

• 東京サテライトオフィス( 2015 年 12 月 1 日開設)

• 従業員数  56 名

34 ゲーム紹介

34

• 400 万ダウンロードを突破

• AppStore セールスランク TOP10 入り

• 公式 Twitter のフォロワー 15 万を突破!!

• 繁体字中国版(台湾・香港・マカオ)も展開中

基本操作はタップでパネルを壊すだけ!最上級の手軽さと仮想空間をモチーフとしたポジティブデザインで、最高の気持ちイイが体験できるブッ壊し RPG 。

35 アジェンダ

35

• 構成概要

• なぜ Photon を選んだのか?

• Photon を使って楽だった点、大変だった点

• Cocos2d-x との組み合わせで大変だった点

36

構成概要

37 構成概要(サービス関連)

37

マルチプレイ

サーバー

CDN

データ分析

クライアントCocos2d-x v3.2

38 使っている場面

38

ロビーに入った状態 ルームに入った状態 ゲームを開始した状態

39

なぜ Photon を選んだのか

40 なぜ Photon を選んだのか?

40

• サーバーエンジニア不足

• 短期間でマルチプレイを実現

マルチプレイを実現するにあたり…

41 なぜ Photon を選んだのか?

41

• サーバーエンジニアの時間をなるべく割かずマルチプレイを実現したい

• リアルタイム通信のサーバー運用にサーバーエンジニアの時間を割きたくない

• リアルタイム通信のデリケートな部分はあらかじめ担保されている

実現するには…

42 なぜ Photon を選んだのか?

42

43 なぜ Photon を選んだのか?

43

• 別プロジェクトにて技術検証の実績があった

• Photon Realtime であればサーバー管理が不要

• いつでも CCU の増減が可能 (1,000 CCU 単位 )

• Cocos2d-x に対応

• 多くの他社実績があり安心感

選定理由

44 なぜ Photon を選んだのか?

44

• 運用していくと少し設定を変えたくなる

• 10,000 CCU を超えたら…CCU= 同時接続ユーザー数、プラン上は 10,000 CCU が MAX

• 他の利用者の影響を受けたくないPhoton Realtime はパブリック環境そして、夜のゲリラがだんだん重くなる

しかし…

45 なぜ Photon を選んだのか?

45

Photon Enterprise Cloud

46 なぜ Photon を選んだのか?

46

Photon Enterprise Cloud• 専用サーバーで稼働

• サーバーの設定変更が可能

• プラグインでロジックのカスタマイズが可能(クラッシュフィーバーでは未使用)

• Photon Realtime からの移行はプログラムの変更が一切不要!

47

楽だった点、大変だった点

48 Photon を使って楽だった点、大変だった点

48

• Photon Realtime には無料プランがあるのですぐ簡単に検証することができる

• 誰でもマルチプレイが実現可能

• マネージドサービスなので管理が楽サーバーエンジニアは API側に集中できる

楽だった点

49 Photon を使って楽だった点、大変だった点

49

• テクニカルな質問は提供元の Exit Games 社へ確認するので時間が掛かる→ 急ぎのときはフォーラムで質問(英語)

• 実装上、気をつける点はその問題に当たってから知ることが多かった→ 実例を紹介します

大変だった点

50 Photon を使って楽だった点、大変だった点

50

CCU の増加と共にルーム選択画面のリスト表示が 重くなってくる

【現象】ルーム選択画面の表示が遅い問題

51 Photon を使って楽だった点、大変だった点

51

【原因】ルーム選択画面の表示が遅い問題

ロビールーム

ルーム

ルーム

ルーム

ルーム

ルーム

ルーム

・・・

• Photon からはロビー内のルームリスト情報が全て送られてくる

• 絞り込んで表示するのはアプリ側で実装

ルームが多いと受信データが大きくなり、絞り込みにも時間が掛かる

ルームリストのサイズが大きい

52 Photon を使って楽だった点、大変だった点

52

【対策】ルーム一覧の表示が遅い問題

• ゲーム開始済みルームの非表示

• カスタムプロパティの見直し

• ロビーの分割

53 Photon を使って楽だった点、大変だった点

53

【現象】ステータスコード 1033 問題• ステータスコード 1033 が返り

マルチプレイができない

• Reliable の受信キューがいっぱいになっているという警告

• 一般的な対処法としては  Client::service() を呼び出す頻度を上げるが、充分に呼び出していた

54 Photon を使って楽だった点、大変だった点

54

【原因】ステータスコード 1033 問題• ロビーリストのサイズが大きい

• LINE マルチなどで名前付きロビーを作成して実現していたのが原因

• そしてロビー内のルームが無くなってもロビー自体は消えない・・・ルームはルーム内のプレイヤーがいなくなると消えます

55 Photon を使って楽だった点、大変だった点

55

【対策】ステータスコード 1033 問題• 名前付きロビーではなくルーム名指定で

実現できるところは変更しロビーを大量に作成しないように変更

56

Cocos2d-x ならではの大変

57 Cocos2d-x と組み合わせで大変だった点

57

Android と iOS の SDK をそれぞれ導入

• Unity と比較すると導入が面倒

58 Cocos2d-x と組み合わせで大変だった点

58

ドキュメント不足• Web 上のドキュメントを見ても例は C# ばか

り• API リファレンスは英語、まれに誤りが…• ソースコードは嘘をつかないので

SDK側のソースコードを眺める

59

最後に

60 最後に

60

• 厳しいスケジュールの中マルチプレイも含めてローンチできたのはPhoton Realtime のおかげ

• もし使うか迷っていたら無料で始められるのでまず触ってみる!

Photon 最新情報

IPv6 対応• すべて対応済み

– Photon Cloud: 全リージョン・全サービス対応済み– Photon Server: 4.0.28以降– Native SDK(C++, Obj-C etc): 4.1.0.0以降– NET SDK (Unity 3D, Windows系 ): 4.1.0.0以降– PUN: 1.67以降

• 新規に申請される場合は、バージョンをご確認ください• 7/25 の DeNA x Photon勉強会にて詳しくお話しします

Photon Turnbased終了• クラウドサービスの一つである Turnbased が 5/25 で新規申し込みが終了• 現在ご利用いただいているお客様は継続利用が可能です• プラン変更される場合は、 Realtime へ変更となります• Client SDK は Realtime になってもそのままご利用いただけます

新サービス• 新しいサービスがリリース予定!

– Photon Swarm– Photon Thunder– Photon TrueSync

• 詳細は改めてお知らせします!

まとめ

今後の予定• 7/25(月 ) DeNA × Photon勉強会 @GMO Yours(渋谷 )• 8/3(水 ) XFLAG(mixi) x Photon勉強会 @GMO Yours• 8/24-26 CEDEC 2016@横浜セッション、 Photon ワークショップ

PlayCanvas ワークショップこの後も続々開催予定!

お問い合わせ• ブース出展しておりますぜひお立ち寄りください• メールでのお問い合わせは

Photon: developer@photonengine.jpMarmalade: info@madewithmarmalade.jp

まとめ• Unity だけではなく、様々なゲームエンジンとの相性も抜群です!• Marmalade や Cocos2d-x といった軽いエンジンのパワーをマルチプレイでもそのまま発揮できる Photon 、ぜひお試しを!

ありがとうございました!developer@photonengine.jp

info@madewithmarmalade.jp

top related