Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例

gree_tech
gree_techgree_tech
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
WRIGHT FLYER STUDIOS
Cocos2d-x 3.0を使用したゲーム
“消滅都市”の開発事例
Cocos2d-x talks #2 (March 13, 2015)
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 渡部晋司
– リードエンジニア
• 経歴
– 会津大学コンピュータ理工学部 性能評価学講座
– 任天堂株式会社 (2007年~)
– グリー株式会社 (2012年~)
• GREE Platform事業
• 消滅都市
自己紹介
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
ゲーム紹介
• 現代を舞台にしたスマートフォンゲーム
– iOS & Android
• 2014年5月下旬にリリース
• おかげさまで350万ダウンロードぐらい
• CM放映中!
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
開発開始前の状況
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
開発体制
プロデューサー
1名
ディレクター
1名
PM
1名
クライアント
プログラマー
4名
サーバー
プログラマー
3名
アート
4名
テクニカル
アート
1名
合計17名
ゲーム
デザイナー
2名
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
スケジュール
2013年
10月
2014年
11月 12月 1月 2月 3月 4月 5月
プロト開
発
α開発
- 主要機能完成 -
β開発
- ひととおり
完成 -
全社
公開,
改善
QA
G
O
A
L
計7ヶ月
アジャイルQA
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 3Dゲームだと厳しそうだった
– 開発期間
– 開発メンバーの人数
• 本開発半年でのリリースが絶対条件
– ギャグかと思ったがマジだった
開発開始前の状況
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 開発メンバーの構成
– C や C++ の開発経験者が多かった
– Unityの開発経験者がいなかった
• Cocos2d-x
– 会社の内製プロダクトでは初の採用
– 少し触ってすぐに理解できた
– 中が見えている安心感
なぜ Cocos2d-x を選択したのか
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 消滅都市の開発開始当初
– 安定版 : 2.2.5
– 開発途中版 : 3.0 alpha0
• 判断基準
– 今後3.x系が主流になるのは見えてる
– ロンチ時に正式版が出ているのか?
Cocos2d-xのバージョン
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 使用したCocos2d-xの推移
– v2.2.5 (プロトタイプのみに使用)
– v3.0 alpha0 (本開発開始後)
– v3.0 beta2
– v3.0 rc1
• 消滅都市ロンチ時のCocos2d-x
– v3.0 rc1
– 必要なパッチのcherry-pick
– 幾つかの改造
Cocos2d-xのバージョン
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 苦労した点
– v2系とv3系だとクラスの名前が違う
– v3.0 betaでディレクトリ構成が変わる
– v3.0系最初の頃はやはり不安定だった
• バージョンアップが結構つらかった
– 作業に一週間弱程度かかった
– ロンチ以降はバージョンアップはしていない
Cocos2d-xのバージョン
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
Cocos2d-xとの付き合い方
-開発環境と周辺ライブラリ-
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• ゲームエンジン…?
– というよりはゲームフレームワーク
– ツール類は標準のものがない
– 自由に組み合わせて使う
• 長所
– アプリ仕様やメンバー構成に応じて自由自在
– サードパーティSDKの組み込みやすさ
• 短所
– 組み合わせを考えるのが大変
– 仕組みのセットアップが必要になる
開発環境と周辺ライブラリ
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 消滅都市における選定基準
– 納期に間に合うこと (本開発期間 半年)
– メンバーの能力が最大限活きること
– コストパフォーマンス
• 時間的な意味とお金的な意味での
開発環境と周辺ライブラリ
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• メインのコーディング環境
– C++ 11
– MacOSX + Xcode
– iOSデバイス or シミュレータで開発を行う
• Androidの開発環境
– IDE等は使用していない
– 問題が起こったらprintfデバッグ (笑)
• ※そもそもあまり問題が起こらなかった
開発環境と周辺ライブラリ
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• libdispatch
– バックグラウンド処理を書きやすく
– 主に通信関係の処理の部分で使用
開発環境と周辺ライブラリ
• Cricket Audio
– マルチプラットフォーム
– 基本的な機能を備えている
– サポートが手厚い (英語のみ)
– 低コスト (無料 or 低額)
http://www.crickettechnology.com/
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• LWF for Cocos2d-x
– FlashデータをCocos2d-x上で再生
• 消滅都市での使用部分
– ゲーム中のキャラクター
– 攻撃エフェクト
– ガチャの演出
開発環境と周辺ライブラリ
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
Cocos2d-xとの付き合い方
-UI制作環境-
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• UI作成の環境整備
– ゲームの画面数が多い
– UI制作スピードがプロジェクトの成否を左右
• Cocos2d-x向けのUIツール
– Cocos Builder
– Cocos Studio (旧称 : CocoStudio)
– などなど
UI制作環境
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 新しいツールを覚えるのは負担…
– そもそも画面デザインはPhotoshopで作る
– 作ったのをツール上で再配置?するの?え?
• 最初からPhotoshopで作れればいい
– JSXでレイヤー構造をエクスポートする
UI制作環境
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
UI制作環境
PhotoshopによるUI制作
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
UI制作環境
psdファイルのレイヤー構造
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
UI制作環境
UI部分のプログラムを実装してゲーム画面に
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• UI系アニメーション
– Photoshopで全体的な画面構成は出来た
– でもアニメーション付けは無理
• プログラマが適当につけた
– 雰囲気で
– 長さとか距離とかカーブとか適当に空気読んで
– あまりにも酷い時はダメだししてもらう
UI制作環境
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• デザイナーの意向がそのままゲームに
– ゲーム画面を直感的に作りこめた
– 新しくツールを覚える必要がなかった
• イマイチ
– テクスチャがアトラス化されない (未対応)
• やれば出来るけど本気出してないだけ
– フォントの見た目が若干違う
– エクスポートが遅い
• 横展開
– Cocos2d-xで開発中の他ゲームでも使用
– レイヤー構造仕様にデザイナが慣れつつある
UI制作環境
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 消滅都市はアクションゲーム
– ぬるぬる動く状態(60FPS)を目指したい
• パフォーマンス
– CPU, GPU
– データ入出力 (ディスク、ネットワークetc)
– メモリ消費量
• 重要なこと
– パフォーマンスに囚われるとゲームは出ない
– 消滅都市は4月~5月に最適化を実施
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• CPUパフォーマンスの向上
– Xcode Instrumentsを使用して調査
• アプリ側のコードでの問題を修正
– オブジェクトの頻繁な作成と削除
• Sprite / Node → うまく使いまわす
• ゲーム用のオブジェクト
– ゲーム中にディスクアクセスをしていた
– 見えていないLWFアニメーションが動いてた
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• パーティクルエフェクトを削除
– ちょっとCPU的な負荷が大きかった
– Cocos2d-xの最新版でどうなってるかな?
– LWFアニメーションで代替
• SpriteBatchNodeの明示的な使用
– ドローコールを削減する機能
– 自動にドローコールをまとめる機能がある
• Cocos2d-x 3.x系以降
– 明示的に使うとCPU負荷が下がった
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• GPUのパフォーマンス調査ツール
– Xcode
• フレームデバッガ機能
• Instruments
– Adreno Profiler
– PerfHUD ES
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• GPUパフォーマンスの向上
– 頂点 (2Dゲームの場合はほぼ考慮不要)
– ピクセルフィル (大きく影響)
– ドローコール数
• CPU最適化によっても…?
– GPUがCPUの熱の影響を受ける
– OS側から周波数ダウンのペナルティ
• アプリ側が割り込む隙は無い
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 消滅都市において見えてきた問題
– 無駄な透明レイヤーが表示されてた (oh…)
– ピクセルのオーバードローが多かった
• ステージ背景の描画方法を工夫して対処
– ドローコールがまとまっていなかった
• 階層構造にしてしまった影響
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 高速シェーダの追加
– ごく一部の端末に効果がある
– Cocos2d-xの機能が制限される
パフォーマンス関連
Cocos2d-xデフォルトのフラグメントシェーダ
(出力色) = (テクスチャ色) × (頂点色)
高速化版
(出力色) = (テクスチャ色)
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• glClearの呼び出し
– レターボックスの範囲に留める
• 全体を塗らなくすることで高速化
– 一部の端末で効果がある
– 背景の絵などですべてのピクセルを塗る
• 塗り忘れると悲惨なことに
– Cocos2d-xを少し改造する必要
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
パフォーマンス関連
glEnable(GL_SCISSOR_TEST);
float bottomAreaHeight = viewRect.origin.y;
if (bottomAreaHeight != 0.0f) {
glScissor(0,0,frameSize.width, (int)bottomAreaHeight+1);
glClear(GL_COLOR_BUFFER_BIT);
}
// (中略)
glDisable(GL_SCISSOR_TEST);
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 圧縮テクスチャの使用
– メモリ消費量の低減 / 高速化
– 品質劣化が起こる
– 使用した箇所は限定的
• 背景
• エフェクト用テクスチャ
– 各GPUごとにテクスチャを用意
• アルファチャンネルも使用するため
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• Android ハードウエアスケーラ
– (ほぼ?) ノーコストで引き伸ばしが可能
– 高解像度端末で効果大
• 特にタブレット向け
• FPS37→60弱まで改善した端末も
– API呼び出しによりバッファサイズを変更
• SDK : setFixedSize
• NDK : ANativeWindow_setBufferGeometry
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• Android ハードウエアスケーラ
– Cocos2d-xの改造が一部必要
• 最新版では?
– 改造方法 (コードは省略)
• JNI経由で物理サイズとバッファサイズ両方渡す
• GLViewProtocol::_screenSizeの意味を変える
• タッチ位置座標の計算方法を変更
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• Android ハードウエアスケーラ
– 物理ピクセル数依存の計算に注意
• getFrameSizeの意味が変わる
• 消滅都市のスワイプ判定はDPIで計算
– 消滅都市では3月末リリース予定
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• フォントデータのスリム化
– 運用により肥大化していく問題
– テクスチャサイズを大きくすると
• メモリ消費量の増大
• 速度低下? (実感としては無かった)
–8bppにしても内部で32bppに変換される
• Cocos2d-xを改造して8bppのまま扱えるように
• 最新版では?
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• フォントデータのスリム化
– PNG_COLOR_TYPE_GRAY
– PixelFormat::I8からPixelFormat::A8に変更
• I8の場合、その後32bppに変換される
– フォントの場合のみA8を使用するように
• 引数としてフラグを追加
パフォーマンス関連
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 縁ありフォントの8bpp化
– Bitmap Font Generatorのオプション
– ビット単位データの意味を変えられる
• 4bitで縁、残り4bitでグリフ
パフォーマンス関連
– 階調が少なくなる
– 描画用シェーダの追加
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
パフォーマンス関連
float texVal =
texture2D(CC_Texture0, v_texCoord).a;
float intensity =
texVal > 0.5 ? texVal * 2.0 - 1.0 : 0.0;
vec4 color =
vec4(intensity, intensity, intensity,
texVal > 0.5 ? 1.0 : texVal * 2.0);
gl_FragColor = v_fragmentColor * color;
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
カスタムシェーダとゲーム内表現
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• セピア色にする機能
– そんなに複雑なことはしてないのですぐできる
– ノベル画面の回想シーンで使用
– ※ネタバレ注意※ (ストーリーシナリオ4章)
カスタムシェーダとゲーム内表現
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• HSB調整シェーダ
– そんなに複雑なことは(以下略)
– 同一リソースをパラメータで色変え
– レーザーバリア演出で使用 (上級者向けスキル)
カスタムシェーダとゲーム内表現
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• シェーダ追加の注意点
– Androidでシェーダの再生成が必要
• EVENT_COME_TO_FOREGROUNDのハンドリング
– いろんなタイミングで発生
• スリープ復帰時
• クレードルに乗せたとき
– 独自アプリが立ち上がるものがある
– 忘れるとシェーダが無効なままゲーム続行
• クラッシュすることは無い
• 絵が崩れる
カスタムシェーダとゲーム内表現
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
カスタムシェーダとゲーム内表現
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
カスタムシェーダとゲーム内表現
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
Cocos2d-xとアクションゲーム
-設計失敗談-
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 消滅都市
– グリー社内で初のCocos2d-xゲーム
• 社内にノウハウが少ない
– Cocos2d-xを使った「良い設計」とは…?
• Cocos2d-xの便利な機能 “runAction”
– これを使って書いていくのが”Cocos流”
– 消滅都市でもたくさん使っていました
– 普通のゲームではupdateで少しずつ更新
Cocos2d-xとアクションゲーム
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• アクションゲームの部分でも多用
– 通常のupdate処理 + runActionを併用
– だんだんとワケガワカラナイヨ状態に…
• なぜ?
– 急に入るゲーム中の割り込み処理
– スキル発動時のカットイン演出
– チュートリアル
– ポーズボタン
Cocos2d-xとアクションゲーム
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 割り込み対応 (ロンチ時)
– ノードに対してpause関数を使用して止める
• 問題が頻発
– 2回pauseしたあと1回resume
– 動き出すタイミングでない状態での開始
• その場しのぎのパッチで乗り切る
– だんだんとコードがカオス化
– QAで発覚するバグが頻発 (リリース遅延)
– 「俺、ゲーム部分触りたくない」と言われる
Cocos2d-xとアクションゲーム
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 2014年秋にゲーム部分の全作り直し
– ほぼ「消滅都市2」に
– updateループによって動く設計に変更
• 止める場合はupdate呼び出さない
• いわゆる「普通のゲーム」の作り方
– runActionを使用しないように
• 引き続きゲーム画面以外では使用
Cocos2d-xとアクションゲーム
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• とは言えrunActionは便利!
– update駆動で停止再開系コードはスッキリ
– 軌道計算等の記述が面倒に…
• 裏ワザ?
– update駆動にしつつActionを使用する
– いいとこ取りできる
Cocos2d-xとアクションゲーム
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
Cocos2d-xとアクションゲーム
アクションの開始コード
pAction->startWithTarget(pSprite);
pAction->retain();
毎フレーム実行するコード
pAction->step(delta);
if (pAction->isDone()) {
pAction->release();
}
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
おまけ : iOS8とプチフリ問題
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• iOS8以降でプチフリ問題が発生
– ゲーム開始5分後に1秒少々ハングする
– 以後、ゲームを再起動するまで起きなくなる
– アクションゲームでは致命的
• β版でも認識していた
– 正式版で直るだろうと放置
– 正式版でも起こってしまい絶望
– その後のバージョンアップでも直る気配がない
iOS8とプチフリ問題
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• タイミングが悪かった (同時期)
iOS8とプチフリ問題
– iOS8のリリース
– 消滅都市のランキング機能追加
• 「プチフリのせいで失敗」報告が続出
• 本当にごめんなさいぃぃ…(´;ω;`)
• 原因全く掴めず
– 見当もつかない
– 辛く憂鬱な年末年始を過ごす
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 調査によって状況は判明
– EAGLContext presentRenderBuffer
– 制御が返ってこなくなる
• 30FPSに落とす実験
– プチフリが起こらなくなる(!)
– とは言え、クオリティが低すぎて話にならない
• 60FPSと30FPSの差異はなんだろう?
– presentRenderBufferにかかる時間
iOS8とプチフリ問題
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 修正方法を検討
– CPU負荷が高過ぎるのか… ?
– GPU負荷が高過ぎるのか… ?
– メモリ消費量が多すぎるのか…?
– glFlushすると何とかなるのか…?
– 適当にsleep入れてみればいいか? (ヤケクソ)
iOS8とプチフリ問題
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• 長期の調査によって修正方法が判明
iOS8とプチフリ問題
if (_skipNextFrame) {
_skipNextFrame = false;
return;
}
CFTimeInterval frameStartTime = CACurrentMediaTime();
[EAGLContext setCurrentContext: [(CCEAGLView*)director->getOpenGLView()
->getEAGLView() context]];
director->mainLoop();
CFTimeInterval elapsed = CACurrentMediaTime() - frameStartTime;
CFTimeInterval frameTime = [(CADisplayLink*)_displayLink duration] *
[(CADisplayLink*)_displayLink frameInterval];
_skipNextFrame = ( frameTime < elapsed );
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
おまけ終わり
ここから本編です
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
• ネイティブゲーム開発者積極採用中
– 未だ見ぬIPを一緒に作り上げませんか?
本編 (宣伝)
詳細は http://jobs.gree.net/jp/ja/ まで!
Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved.
WRIGHT FLYER STUDIOS
ご清聴ありがとうございました!
このあと懇親会をお楽しみください!
1 of 66

Recommended

【Unite Tokyo 2018】誘導ミサイル完全マスター by
【Unite Tokyo 2018】誘導ミサイル完全マスター【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスターUnity Technologies Japan K.K.
17.8K views158 slides
[CEDEC2014] 消滅都市のつくりかた 半年で素敵なゲームをリリースするには - by
[CEDEC2014] 消滅都市のつくりかた   半年で素敵なゲームをリリースするには -[CEDEC2014] 消滅都市のつくりかた   半年で素敵なゲームをリリースするには -
[CEDEC2014] 消滅都市のつくりかた 半年で素敵なゲームをリリースするには -gree_tech
22.3K views187 slides
【Unity道場】物理シミュレーション完全マスター by
【Unity道場】物理シミュレーション完全マスター【Unity道場】物理シミュレーション完全マスター
【Unity道場】物理シミュレーション完全マスターUnity Technologies Japan K.K.
62.1K views124 slides
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術 by
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術Unity Technologies Japan K.K.
28.6K views112 slides
C++ マルチスレッドプログラミング by
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングKohsuke Yuasa
107.7K views97 slides
ゲーム開発者のための C++11/C++14 by
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
103.6K views157 slides

More Related Content

What's hot

Cocos2d-xを用いた "LINE タワーライジング" の開発事例 by
Cocos2d-xを用いた "LINE タワーライジング" の開発事例Cocos2d-xを用いた "LINE タワーライジング" の開発事例
Cocos2d-xを用いた "LINE タワーライジング" の開発事例gree_tech
8.3K views45 slides
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜gree_tech
729 views36 slides
Arxan導入前後で変わったこと by
Arxan導入前後で変わったことArxan導入前後で変わったこと
Arxan導入前後で変わったことYusuke Shirakawa
2.4K views31 slides
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現 by
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Yoshifumi Kawai
4.8K views52 slides
Unityではじめるオープンワールド入門 アーティスト編 by
Unityではじめるオープンワールド入門 アーティスト編Unityではじめるオープンワールド入門 アーティスト編
Unityではじめるオープンワールド入門 アーティスト編Unity Technologies Japan K.K.
8K views77 slides
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計 by
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計UnityTechnologiesJapan002
21.6K views84 slides

What's hot(20)

Cocos2d-xを用いた "LINE タワーライジング" の開発事例 by gree_tech
Cocos2d-xを用いた "LINE タワーライジング" の開発事例Cocos2d-xを用いた "LINE タワーライジング" の開発事例
Cocos2d-xを用いた "LINE タワーライジング" の開発事例
gree_tech8.3K views
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech729 views
Arxan導入前後で変わったこと by Yusuke Shirakawa
Arxan導入前後で変わったことArxan導入前後で変わったこと
Arxan導入前後で変わったこと
Yusuke Shirakawa2.4K views
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現 by Yoshifumi Kawai
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai4.8K views
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計 by UnityTechnologiesJapan002
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
DeNAのサーバー"コード"レスアーキテクチャ by Haruto Otake
DeNAのサーバー"コード"レスアーキテクチャDeNAのサーバー"コード"レスアーキテクチャ
DeNAのサーバー"コード"レスアーキテクチャ
Haruto Otake2.5K views
FINAL FANTASY Record Keeperのマスターデータを支える技術 by dena_study
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study85.6K views
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例 by sairoutine
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine8.4K views
【TECH×GAME COLLEGE#32】ゼロからリアルタイムサーバーを作るまで by techgamecollege
【TECH×GAME COLLEGE#32】ゼロからリアルタイムサーバーを作るまで【TECH×GAME COLLEGE#32】ゼロからリアルタイムサーバーを作るまで
【TECH×GAME COLLEGE#32】ゼロからリアルタイムサーバーを作るまで
techgamecollege937 views
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法 by モノビット エンジン
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~ by masayahamazaki
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~ UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~
UIと2D/3Dと私 ~2D/3Dを混在させたUIを作ったら、とてもめんどくさかった話~
masayahamazaki16.6K views
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!! by Unity Technologies Japan K.K.
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 by Yugo Shimizu
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
Yugo Shimizu16.7K views
UniRx完全に理解した by torisoup
UniRx完全に理解したUniRx完全に理解した
UniRx完全に理解した
torisoup9.3K views
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略 by Haruki Yano
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
モバイルアプリにおけるアーティストフレンドリーな水面表現戦略
Haruki Yano3.3K views
OpenVRやOpenXRの基本的なことを調べてみた by Takahiro Miyaura
OpenVRやOpenXRの基本的なことを調べてみたOpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみた
Takahiro Miyaura2.2K views
オンラインゲームの仕組みと工夫 by Yuta Imai
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai869.9K views

Viewers also liked

初心者向けJavaScript/HTML5ゲームプログラミング by
初心者向けJavaScript/HTML5ゲームプログラミング初心者向けJavaScript/HTML5ゲームプログラミング
初心者向けJavaScript/HTML5ゲームプログラミングKazuki Miyanishi
6K views68 slides
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門 by
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門Kohki Miki
52.9K views76 slides
Cocos2d-x(JS) ハンズオン #01 「はじめてのCocos2d-x (JS)」 by
Cocos2d-x(JS) ハンズオン #01 「はじめてのCocos2d-x (JS)」Cocos2d-x(JS) ハンズオン #01 「はじめてのCocos2d-x (JS)」
Cocos2d-x(JS) ハンズオン #01 「はじめてのCocos2d-x (JS)」Tomoaki Shimizu
3.5K views40 slides
Cocos2d-x(JS) ハンズオン #07「新エディタ Cocos Creator v1.0」 by
Cocos2d-x(JS) ハンズオン #07「新エディタ Cocos Creator v1.0」Cocos2d-x(JS) ハンズオン #07「新エディタ Cocos Creator v1.0」
Cocos2d-x(JS) ハンズオン #07「新エディタ Cocos Creator v1.0」Tomoaki Shimizu
8.6K views56 slides
Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合 by
Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合
Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合gree_tech
5.7K views57 slides
ポコロンダンジョンズとリアルタイム通信 -クライアント編- by
ポコロンダンジョンズとリアルタイム通信 -クライアント編-ポコロンダンジョンズとリアルタイム通信 -クライアント編-
ポコロンダンジョンズとリアルタイム通信 -クライアント編-Suguru Shirai
12.2K views46 slides

Viewers also liked(8)

初心者向けJavaScript/HTML5ゲームプログラミング by Kazuki Miyanishi
初心者向けJavaScript/HTML5ゲームプログラミング初心者向けJavaScript/HTML5ゲームプログラミング
初心者向けJavaScript/HTML5ゲームプログラミング
Kazuki Miyanishi6K views
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門 by Kohki Miki
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
Kohki Miki52.9K views
Cocos2d-x(JS) ハンズオン #01 「はじめてのCocos2d-x (JS)」 by Tomoaki Shimizu
Cocos2d-x(JS) ハンズオン #01 「はじめてのCocos2d-x (JS)」Cocos2d-x(JS) ハンズオン #01 「はじめてのCocos2d-x (JS)」
Cocos2d-x(JS) ハンズオン #01 「はじめてのCocos2d-x (JS)」
Tomoaki Shimizu3.5K views
Cocos2d-x(JS) ハンズオン #07「新エディタ Cocos Creator v1.0」 by Tomoaki Shimizu
Cocos2d-x(JS) ハンズオン #07「新エディタ Cocos Creator v1.0」Cocos2d-x(JS) ハンズオン #07「新エディタ Cocos Creator v1.0」
Cocos2d-x(JS) ハンズオン #07「新エディタ Cocos Creator v1.0」
Tomoaki Shimizu8.6K views
Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合 by gree_tech
Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合
Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合
gree_tech5.7K views
ポコロンダンジョンズとリアルタイム通信 -クライアント編- by Suguru Shirai
ポコロンダンジョンズとリアルタイム通信 -クライアント編-ポコロンダンジョンズとリアルタイム通信 -クライアント編-
ポコロンダンジョンズとリアルタイム通信 -クライアント編-
Suguru Shirai12.2K views
ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0 by Osamu Ohkubo
ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0
ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0
Osamu Ohkubo79.7K views
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門 by dena_study
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
ガールアックス マルチプレイのリアルタイム通信ゲーム開発入門
dena_study3.5K views

Similar to Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例

Cedec2015_「消滅都市」運用の一年 by
Cedec2015_「消滅都市」運用の一年Cedec2015_「消滅都市」運用の一年
Cedec2015_「消滅都市」運用の一年gree_tech
21.5K views90 slides
DeNA流cocos2d xとの付き合い方 by
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方dena_study
18.1K views44 slides
プライベートクラウド作ってみました by
プライベートクラウド作ってみましたプライベートクラウド作ってみました
プライベートクラウド作ってみましたKoji Hasebe
16.7K views56 slides
技術選択とアーキテクトの役割 by
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
42K views90 slides
消滅都市 Cocos2d-xでの演出・UIあれこれ by
消滅都市 Cocos2d-xでの演出・UIあれこれ消滅都市 Cocos2d-xでの演出・UIあれこれ
消滅都市 Cocos2d-xでの演出・UIあれこれShun Noguchi
12K views29 slides
Microsoft Intelligent Edge Technologies by
Microsoft Intelligent Edge TechnologiesMicrosoft Intelligent Edge Technologies
Microsoft Intelligent Edge TechnologiesTakeshi Fukuhara
425 views67 slides

Similar to Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例(20)

Cedec2015_「消滅都市」運用の一年 by gree_tech
Cedec2015_「消滅都市」運用の一年Cedec2015_「消滅都市」運用の一年
Cedec2015_「消滅都市」運用の一年
gree_tech21.5K views
DeNA流cocos2d xとの付き合い方 by dena_study
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方
dena_study18.1K views
プライベートクラウド作ってみました by Koji Hasebe
プライベートクラウド作ってみましたプライベートクラウド作ってみました
プライベートクラウド作ってみました
Koji Hasebe16.7K views
技術選択とアーキテクトの役割 by Toru Yamaguchi
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi42K views
消滅都市 Cocos2d-xでの演出・UIあれこれ by Shun Noguchi
消滅都市 Cocos2d-xでの演出・UIあれこれ消滅都市 Cocos2d-xでの演出・UIあれこれ
消滅都市 Cocos2d-xでの演出・UIあれこれ
Shun Noguchi12K views
Microsoft Intelligent Edge Technologies by Takeshi Fukuhara
Microsoft Intelligent Edge TechnologiesMicrosoft Intelligent Edge Technologies
Microsoft Intelligent Edge Technologies
Takeshi Fukuhara425 views
Mbed祭り 2017@春の新横浜 20170225 竹之下 by Koyo Takenoshita
Mbed祭り 2017@春の新横浜 20170225 竹之下Mbed祭り 2017@春の新横浜 20170225 竹之下
Mbed祭り 2017@春の新横浜 20170225 竹之下
Koyo Takenoshita944 views
Aerospike on IDCF Cloud by IDC Frontier
Aerospike on IDCF CloudAerospike on IDCF Cloud
Aerospike on IDCF Cloud
IDC Frontier8.1K views
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容 by Tomokazu Kizawa
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Tomokazu Kizawa1.3K views
ソニーのディープラーニングツールで簡単エッジコンピューティング by Ryohei Kamiya
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
Ryohei Kamiya2.4K views
「AROW」お披露目(実用編) by Drecom Co., Ltd.
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
Drecom Co., Ltd.2.3K views
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録” by Drecom Co., Ltd.
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
Drecom Co., Ltd.3.1K views
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~ by Web Technology Corp.
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
Windows 8 Developers カンファレンス by Kaoru NAKAMURA
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
Kaoru NAKAMURA2.1K views
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか? by Takashi Sogabe
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe5K views
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現 by UnityTechnologiesJapan002
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
UnityによるAR/VR/MR 開発体験講座 by Yuichi Ishii
UnityによるAR/VR/MR 開発体験講座UnityによるAR/VR/MR 開発体験講座
UnityによるAR/VR/MR 開発体験講座
Yuichi Ishii17.1K views

More from gree_tech

GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介gree_tech
229 views13 slides
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表gree_tech
1K views18 slides
アプリ起動時間高速化 ~推測するな、計測せよ~ by
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~gree_tech
1.9K views84 slides
長寿なゲーム事業におけるアプリビルドの効率化 by
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化gree_tech
347 views116 slides
Cloud Spanner をより便利にする運用支援ツールの紹介 by
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介gree_tech
689 views31 slides
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介 by
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介gree_tech
601 views28 slides

More from gree_tech(20)

GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by gree_tech
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech229 views
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by gree_tech
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech1K views
アプリ起動時間高速化 ~推測するな、計測せよ~ by gree_tech
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech1.9K views
長寿なゲーム事業におけるアプリビルドの効率化 by gree_tech
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech347 views
Cloud Spanner をより便利にする運用支援ツールの紹介 by gree_tech
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech689 views
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介 by gree_tech
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
gree_tech601 views
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について by gree_tech
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現についてSINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
gree_tech626 views
海外展開と負荷試験 by gree_tech
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
gree_tech593 views
翻訳QAでのテスト自動化の取り組み by gree_tech
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み
gree_tech305 views
組み込み開発のテストとゲーム開発のテストの違い by gree_tech
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い
gree_tech577 views
サーバーフレームワークに潜んでる脆弱性検知ツール紹介 by gree_tech
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech209 views
データエンジニアとアナリストチーム兼務になった件について by gree_tech
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件について
gree_tech308 views
シェアドサービスとしてのデータテクノロジー by gree_tech
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジー
gree_tech433 views
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて- by gree_tech
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
gree_tech1K views
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話 by gree_tech
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech1.1K views
比較サイトの検索改善(SPA から SSR に変換) by gree_tech
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech699 views
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行 by gree_tech
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech2.9K views
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜 by gree_tech
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
gree_tech399 views
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮) by gree_tech
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech753 views
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方- by gree_tech
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
gree_tech446 views

Recently uploaded

PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PC Cluster Consortium
29 views36 slides
定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf定例会スライド_キャチs 公開用.pdf
定例会スライド_キャチs 公開用.pdfKeio Robotics Association
154 views64 slides
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可 by
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可Hitachi, Ltd. OSS Solution Center.
13 views22 slides
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PC Cluster Consortium
68 views12 slides
光コラボは契約してはいけない by
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
30 views17 slides

Recently uploaded(7)

PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by PC Cluster Consortium
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by PC Cluster Consortium
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga30 views

Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例

  • 1. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. WRIGHT FLYER STUDIOS Cocos2d-x 3.0を使用したゲーム “消滅都市”の開発事例 Cocos2d-x talks #2 (March 13, 2015)
  • 2. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 渡部晋司 – リードエンジニア • 経歴 – 会津大学コンピュータ理工学部 性能評価学講座 – 任天堂株式会社 (2007年~) – グリー株式会社 (2012年~) • GREE Platform事業 • 消滅都市 自己紹介
  • 3. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. ゲーム紹介 • 現代を舞台にしたスマートフォンゲーム – iOS & Android • 2014年5月下旬にリリース • おかげさまで350万ダウンロードぐらい • CM放映中!
  • 4. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. 開発開始前の状況
  • 5. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. 開発体制 プロデューサー 1名 ディレクター 1名 PM 1名 クライアント プログラマー 4名 サーバー プログラマー 3名 アート 4名 テクニカル アート 1名 合計17名 ゲーム デザイナー 2名
  • 6. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. スケジュール 2013年 10月 2014年 11月 12月 1月 2月 3月 4月 5月 プロト開 発 α開発 - 主要機能完成 - β開発 - ひととおり 完成 - 全社 公開, 改善 QA G O A L 計7ヶ月 アジャイルQA
  • 7. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 3Dゲームだと厳しそうだった – 開発期間 – 開発メンバーの人数 • 本開発半年でのリリースが絶対条件 – ギャグかと思ったがマジだった 開発開始前の状況
  • 8. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 開発メンバーの構成 – C や C++ の開発経験者が多かった – Unityの開発経験者がいなかった • Cocos2d-x – 会社の内製プロダクトでは初の採用 – 少し触ってすぐに理解できた – 中が見えている安心感 なぜ Cocos2d-x を選択したのか
  • 9. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 消滅都市の開発開始当初 – 安定版 : 2.2.5 – 開発途中版 : 3.0 alpha0 • 判断基準 – 今後3.x系が主流になるのは見えてる – ロンチ時に正式版が出ているのか? Cocos2d-xのバージョン
  • 10. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 使用したCocos2d-xの推移 – v2.2.5 (プロトタイプのみに使用) – v3.0 alpha0 (本開発開始後) – v3.0 beta2 – v3.0 rc1 • 消滅都市ロンチ時のCocos2d-x – v3.0 rc1 – 必要なパッチのcherry-pick – 幾つかの改造 Cocos2d-xのバージョン
  • 11. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 苦労した点 – v2系とv3系だとクラスの名前が違う – v3.0 betaでディレクトリ構成が変わる – v3.0系最初の頃はやはり不安定だった • バージョンアップが結構つらかった – 作業に一週間弱程度かかった – ロンチ以降はバージョンアップはしていない Cocos2d-xのバージョン
  • 12. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. Cocos2d-xとの付き合い方 -開発環境と周辺ライブラリ-
  • 13. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • ゲームエンジン…? – というよりはゲームフレームワーク – ツール類は標準のものがない – 自由に組み合わせて使う • 長所 – アプリ仕様やメンバー構成に応じて自由自在 – サードパーティSDKの組み込みやすさ • 短所 – 組み合わせを考えるのが大変 – 仕組みのセットアップが必要になる 開発環境と周辺ライブラリ
  • 14. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 消滅都市における選定基準 – 納期に間に合うこと (本開発期間 半年) – メンバーの能力が最大限活きること – コストパフォーマンス • 時間的な意味とお金的な意味での 開発環境と周辺ライブラリ
  • 15. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • メインのコーディング環境 – C++ 11 – MacOSX + Xcode – iOSデバイス or シミュレータで開発を行う • Androidの開発環境 – IDE等は使用していない – 問題が起こったらprintfデバッグ (笑) • ※そもそもあまり問題が起こらなかった 開発環境と周辺ライブラリ
  • 16. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • libdispatch – バックグラウンド処理を書きやすく – 主に通信関係の処理の部分で使用 開発環境と周辺ライブラリ • Cricket Audio – マルチプラットフォーム – 基本的な機能を備えている – サポートが手厚い (英語のみ) – 低コスト (無料 or 低額) http://www.crickettechnology.com/
  • 17. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • LWF for Cocos2d-x – FlashデータをCocos2d-x上で再生 • 消滅都市での使用部分 – ゲーム中のキャラクター – 攻撃エフェクト – ガチャの演出 開発環境と周辺ライブラリ
  • 18. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. Cocos2d-xとの付き合い方 -UI制作環境-
  • 19. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • UI作成の環境整備 – ゲームの画面数が多い – UI制作スピードがプロジェクトの成否を左右 • Cocos2d-x向けのUIツール – Cocos Builder – Cocos Studio (旧称 : CocoStudio) – などなど UI制作環境
  • 20. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 新しいツールを覚えるのは負担… – そもそも画面デザインはPhotoshopで作る – 作ったのをツール上で再配置?するの?え? • 最初からPhotoshopで作れればいい – JSXでレイヤー構造をエクスポートする UI制作環境
  • 21. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. UI制作環境 PhotoshopによるUI制作
  • 22. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. UI制作環境 psdファイルのレイヤー構造
  • 23. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. UI制作環境 UI部分のプログラムを実装してゲーム画面に
  • 24. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • UI系アニメーション – Photoshopで全体的な画面構成は出来た – でもアニメーション付けは無理 • プログラマが適当につけた – 雰囲気で – 長さとか距離とかカーブとか適当に空気読んで – あまりにも酷い時はダメだししてもらう UI制作環境
  • 25. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • デザイナーの意向がそのままゲームに – ゲーム画面を直感的に作りこめた – 新しくツールを覚える必要がなかった • イマイチ – テクスチャがアトラス化されない (未対応) • やれば出来るけど本気出してないだけ – フォントの見た目が若干違う – エクスポートが遅い • 横展開 – Cocos2d-xで開発中の他ゲームでも使用 – レイヤー構造仕様にデザイナが慣れつつある UI制作環境
  • 26. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. パフォーマンス関連
  • 27. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 消滅都市はアクションゲーム – ぬるぬる動く状態(60FPS)を目指したい • パフォーマンス – CPU, GPU – データ入出力 (ディスク、ネットワークetc) – メモリ消費量 • 重要なこと – パフォーマンスに囚われるとゲームは出ない – 消滅都市は4月~5月に最適化を実施 パフォーマンス関連
  • 28. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • CPUパフォーマンスの向上 – Xcode Instrumentsを使用して調査 • アプリ側のコードでの問題を修正 – オブジェクトの頻繁な作成と削除 • Sprite / Node → うまく使いまわす • ゲーム用のオブジェクト – ゲーム中にディスクアクセスをしていた – 見えていないLWFアニメーションが動いてた パフォーマンス関連
  • 29. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • パーティクルエフェクトを削除 – ちょっとCPU的な負荷が大きかった – Cocos2d-xの最新版でどうなってるかな? – LWFアニメーションで代替 • SpriteBatchNodeの明示的な使用 – ドローコールを削減する機能 – 自動にドローコールをまとめる機能がある • Cocos2d-x 3.x系以降 – 明示的に使うとCPU負荷が下がった パフォーマンス関連
  • 30. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • GPUのパフォーマンス調査ツール – Xcode • フレームデバッガ機能 • Instruments – Adreno Profiler – PerfHUD ES パフォーマンス関連
  • 31. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • GPUパフォーマンスの向上 – 頂点 (2Dゲームの場合はほぼ考慮不要) – ピクセルフィル (大きく影響) – ドローコール数 • CPU最適化によっても…? – GPUがCPUの熱の影響を受ける – OS側から周波数ダウンのペナルティ • アプリ側が割り込む隙は無い パフォーマンス関連
  • 32. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. パフォーマンス関連
  • 33. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 消滅都市において見えてきた問題 – 無駄な透明レイヤーが表示されてた (oh…) – ピクセルのオーバードローが多かった • ステージ背景の描画方法を工夫して対処 – ドローコールがまとまっていなかった • 階層構造にしてしまった影響 パフォーマンス関連
  • 34. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 高速シェーダの追加 – ごく一部の端末に効果がある – Cocos2d-xの機能が制限される パフォーマンス関連 Cocos2d-xデフォルトのフラグメントシェーダ (出力色) = (テクスチャ色) × (頂点色) 高速化版 (出力色) = (テクスチャ色)
  • 35. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • glClearの呼び出し – レターボックスの範囲に留める • 全体を塗らなくすることで高速化 – 一部の端末で効果がある – 背景の絵などですべてのピクセルを塗る • 塗り忘れると悲惨なことに – Cocos2d-xを少し改造する必要 パフォーマンス関連
  • 36. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. パフォーマンス関連 glEnable(GL_SCISSOR_TEST); float bottomAreaHeight = viewRect.origin.y; if (bottomAreaHeight != 0.0f) { glScissor(0,0,frameSize.width, (int)bottomAreaHeight+1); glClear(GL_COLOR_BUFFER_BIT); } // (中略) glDisable(GL_SCISSOR_TEST);
  • 37. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 圧縮テクスチャの使用 – メモリ消費量の低減 / 高速化 – 品質劣化が起こる – 使用した箇所は限定的 • 背景 • エフェクト用テクスチャ – 各GPUごとにテクスチャを用意 • アルファチャンネルも使用するため パフォーマンス関連
  • 38. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • Android ハードウエアスケーラ – (ほぼ?) ノーコストで引き伸ばしが可能 – 高解像度端末で効果大 • 特にタブレット向け • FPS37→60弱まで改善した端末も – API呼び出しによりバッファサイズを変更 • SDK : setFixedSize • NDK : ANativeWindow_setBufferGeometry パフォーマンス関連
  • 39. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • Android ハードウエアスケーラ – Cocos2d-xの改造が一部必要 • 最新版では? – 改造方法 (コードは省略) • JNI経由で物理サイズとバッファサイズ両方渡す • GLViewProtocol::_screenSizeの意味を変える • タッチ位置座標の計算方法を変更 パフォーマンス関連
  • 40. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • Android ハードウエアスケーラ – 物理ピクセル数依存の計算に注意 • getFrameSizeの意味が変わる • 消滅都市のスワイプ判定はDPIで計算 – 消滅都市では3月末リリース予定 パフォーマンス関連
  • 41. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • フォントデータのスリム化 – 運用により肥大化していく問題 – テクスチャサイズを大きくすると • メモリ消費量の増大 • 速度低下? (実感としては無かった) –8bppにしても内部で32bppに変換される • Cocos2d-xを改造して8bppのまま扱えるように • 最新版では? パフォーマンス関連
  • 42. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • フォントデータのスリム化 – PNG_COLOR_TYPE_GRAY – PixelFormat::I8からPixelFormat::A8に変更 • I8の場合、その後32bppに変換される – フォントの場合のみA8を使用するように • 引数としてフラグを追加 パフォーマンス関連
  • 43. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 縁ありフォントの8bpp化 – Bitmap Font Generatorのオプション – ビット単位データの意味を変えられる • 4bitで縁、残り4bitでグリフ パフォーマンス関連 – 階調が少なくなる – 描画用シェーダの追加
  • 44. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. パフォーマンス関連 float texVal = texture2D(CC_Texture0, v_texCoord).a; float intensity = texVal > 0.5 ? texVal * 2.0 - 1.0 : 0.0; vec4 color = vec4(intensity, intensity, intensity, texVal > 0.5 ? 1.0 : texVal * 2.0); gl_FragColor = v_fragmentColor * color;
  • 45. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. カスタムシェーダとゲーム内表現
  • 46. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • セピア色にする機能 – そんなに複雑なことはしてないのですぐできる – ノベル画面の回想シーンで使用 – ※ネタバレ注意※ (ストーリーシナリオ4章) カスタムシェーダとゲーム内表現
  • 47. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • HSB調整シェーダ – そんなに複雑なことは(以下略) – 同一リソースをパラメータで色変え – レーザーバリア演出で使用 (上級者向けスキル) カスタムシェーダとゲーム内表現
  • 48. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • シェーダ追加の注意点 – Androidでシェーダの再生成が必要 • EVENT_COME_TO_FOREGROUNDのハンドリング – いろんなタイミングで発生 • スリープ復帰時 • クレードルに乗せたとき – 独自アプリが立ち上がるものがある – 忘れるとシェーダが無効なままゲーム続行 • クラッシュすることは無い • 絵が崩れる カスタムシェーダとゲーム内表現
  • 49. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. カスタムシェーダとゲーム内表現
  • 50. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. カスタムシェーダとゲーム内表現
  • 51. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. Cocos2d-xとアクションゲーム -設計失敗談-
  • 52. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 消滅都市 – グリー社内で初のCocos2d-xゲーム • 社内にノウハウが少ない – Cocos2d-xを使った「良い設計」とは…? • Cocos2d-xの便利な機能 “runAction” – これを使って書いていくのが”Cocos流” – 消滅都市でもたくさん使っていました – 普通のゲームではupdateで少しずつ更新 Cocos2d-xとアクションゲーム
  • 53. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • アクションゲームの部分でも多用 – 通常のupdate処理 + runActionを併用 – だんだんとワケガワカラナイヨ状態に… • なぜ? – 急に入るゲーム中の割り込み処理 – スキル発動時のカットイン演出 – チュートリアル – ポーズボタン Cocos2d-xとアクションゲーム
  • 54. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 割り込み対応 (ロンチ時) – ノードに対してpause関数を使用して止める • 問題が頻発 – 2回pauseしたあと1回resume – 動き出すタイミングでない状態での開始 • その場しのぎのパッチで乗り切る – だんだんとコードがカオス化 – QAで発覚するバグが頻発 (リリース遅延) – 「俺、ゲーム部分触りたくない」と言われる Cocos2d-xとアクションゲーム
  • 55. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 2014年秋にゲーム部分の全作り直し – ほぼ「消滅都市2」に – updateループによって動く設計に変更 • 止める場合はupdate呼び出さない • いわゆる「普通のゲーム」の作り方 – runActionを使用しないように • 引き続きゲーム画面以外では使用 Cocos2d-xとアクションゲーム
  • 56. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • とは言えrunActionは便利! – update駆動で停止再開系コードはスッキリ – 軌道計算等の記述が面倒に… • 裏ワザ? – update駆動にしつつActionを使用する – いいとこ取りできる Cocos2d-xとアクションゲーム
  • 57. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. Cocos2d-xとアクションゲーム アクションの開始コード pAction->startWithTarget(pSprite); pAction->retain(); 毎フレーム実行するコード pAction->step(delta); if (pAction->isDone()) { pAction->release(); }
  • 58. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. おまけ : iOS8とプチフリ問題
  • 59. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • iOS8以降でプチフリ問題が発生 – ゲーム開始5分後に1秒少々ハングする – 以後、ゲームを再起動するまで起きなくなる – アクションゲームでは致命的 • β版でも認識していた – 正式版で直るだろうと放置 – 正式版でも起こってしまい絶望 – その後のバージョンアップでも直る気配がない iOS8とプチフリ問題
  • 60. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • タイミングが悪かった (同時期) iOS8とプチフリ問題 – iOS8のリリース – 消滅都市のランキング機能追加 • 「プチフリのせいで失敗」報告が続出 • 本当にごめんなさいぃぃ…(´;ω;`) • 原因全く掴めず – 見当もつかない – 辛く憂鬱な年末年始を過ごす
  • 61. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 調査によって状況は判明 – EAGLContext presentRenderBuffer – 制御が返ってこなくなる • 30FPSに落とす実験 – プチフリが起こらなくなる(!) – とは言え、クオリティが低すぎて話にならない • 60FPSと30FPSの差異はなんだろう? – presentRenderBufferにかかる時間 iOS8とプチフリ問題
  • 62. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 修正方法を検討 – CPU負荷が高過ぎるのか… ? – GPU負荷が高過ぎるのか… ? – メモリ消費量が多すぎるのか…? – glFlushすると何とかなるのか…? – 適当にsleep入れてみればいいか? (ヤケクソ) iOS8とプチフリ問題
  • 63. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • 長期の調査によって修正方法が判明 iOS8とプチフリ問題 if (_skipNextFrame) { _skipNextFrame = false; return; } CFTimeInterval frameStartTime = CACurrentMediaTime(); [EAGLContext setCurrentContext: [(CCEAGLView*)director->getOpenGLView() ->getEAGLView() context]]; director->mainLoop(); CFTimeInterval elapsed = CACurrentMediaTime() - frameStartTime; CFTimeInterval frameTime = [(CADisplayLink*)_displayLink duration] * [(CADisplayLink*)_displayLink frameInterval]; _skipNextFrame = ( frameTime < elapsed );
  • 64. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. おまけ終わり ここから本編です
  • 65. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. • ネイティブゲーム開発者積極採用中 – 未だ見ぬIPを一緒に作り上げませんか? 本編 (宣伝) 詳細は http://jobs.gree.net/jp/ja/ まで!
  • 66. Copyright © 2015 Wright Flyer Studios, Inc. All Right Reserved. WRIGHT FLYER STUDIOS ご清聴ありがとうございました! このあと懇親会をお楽しみください!

Editor's Notes

  1. ・CEDEC2014における講演内容と一部かぶります。
  2. 動画見せたい (事前に読み込んでおく) https://www.youtube.com/watch?v=CWhbM_3vpKU https://www.youtube.com/watch?v=-IC5ihQzyGk https://www.youtube.com/watch?v=uezXbhGK4wY
  3. 改造箇所に関してはいくつかをこの先のページにて紹介します
  4. ・最初の頃に起こっていた問題としてビットマップフォントのグリフがないとクラッシュしていたなど ・最近もまだバージョンアップが辛いらしいという話は清水さんから聞いた ・普通に使えているのでバージョンアップのモチベーションが特にない ・必要であればcherry-pickして持ってきている ・改造は何箇所か追加した ・以降の話は Cocos2d-x 3.0での話。最新版だと状況が違っているかもしれないが確認はしてないです
  5. と、いうことで消滅都市においてどのようなものをCocos2d-xに組み合わせていったのかという紹介
  6. と、いうことで消滅都市においてどのようなものをCocos2d-xに組み合わせていったのかという紹介
  7. と、いうことで消滅都市においてどのようなものをCocos2d-xに組み合わせていったのかという紹介
  8. このあたりも常にプレアブルなアプリが用意出来ていたから可能だった
  9. アトラス化は現在検討中… フォントの見た目が違うのは仕様
  10. ゲームパフォーマンスに関する話。やった中で効果のあったことについてお話します。 とは言え、Cocos2d-x 3.0時代の話なので最近だとちょっと事情が違うかもしれない
  11. パフォーマンスのことを最初から考えすぎると先に進めなくなる (好きな人は好きっていうのは分かりますが)。 今日はCPU / GPUのネタを中心にお話します。
  12. SpriteBatchNodeを使用しなくてもCocos2d-x側でまとめてくれる機能がある
  13. 機能制限としてはsetColor等で色が変えられなくなる。FadeInやFadeOut等のActionが使えなくなる etc
  14. CCDirector.cppに改造を入れる
  15. CCImage.cppの中の話 PNG_COLOR_TYPE_GRAY (グレースケール) の場合通常I8として読み込まれるが、その処理をA8になるように変更した。
  16. コンシューマゲームならこれでもよかったかもしれませんが運用していくソーシャルゲームでは、この状況に陥るのが命取りでした。
  17. CCDirectorCaller.cppに改造を入れる 要は、directorのmainLoop呼び出しにフレーム時間以上に時間がかかったらdisplayLinkのdoCallerで次のフレームを実行するのをやめること 副作用としては若干カクつくことがあるけど、まぁプチフリ起こるよりはマシかなぁ…