CEDEC2014 SpriteStudio
-
Upload
jin-ichiro-okuda -
Category
Engineering
-
view
242 -
download
0
description
Transcript of CEDEC2014 SpriteStudio
ヘキサドライブ流 OPTPiX SpriteStudio の最適化術!
自己紹介
ヘキサドライブ
株式会社ヘキサドライブ 2007年2月設立
本社 大阪開発、東京開発
社員数 約60名
ヘキサドライブ 開発実績 The 3rd Birthday (PSP)
株式会社スクウェア・エニックス
METAL GEAR SOLID SNAKE EATER 3D (3DS)株式会社コナミデジタルエンタテインメント
大神 絶景版 (PS3)株式会社カプコン
ZONE OF THE ENDERS HD EDITION (PS3)株式会社コナミデジタルエンタテインメント
MONSTER HUNTER PORTABLE 2nd G for iOS (iOS)株式会社カプコン
etc...
ヘキサドライブ
移植屋じゃないです!
講演者紹介
奥田仁一郎 Jin-ichiro Okuda
SEGA
Crazy Taxi (physics)
WCCF (chief programmer)
etc...
HEXADRIVE
The 3rd Birthday (lead programmer)
会社行くよ~
帰るよ~
ウォーキング中
呑むよ~
拡散性ミリオンアーサー
拡散性ミリオンアーサー
スマートフォン用のゲームアプリ
100万人のアーサー王と100万本のエクスカリバーが存在する世界でプレイヤーがアーサー王の一人となって戦うファンタジーRPG
販売:スクウェア・エニックス
©2012,2013 SQUARE ENIX CO., LTD. All Rights Reserved.
タイトル概要
基本無料、アイテム課金
カードバトルタイプのソーシャルゲーム
iOS・Android両対応
ネイティブアプリ
2D表示のみ
Vita版もあるが本件とは直接関係ありません©2012,2013 SQUARE ENIX CO., LTD. All Rights Reserved.
経緯
新しい運営・開発会社がローンチの会社から運営・開発を引き継いだ
新しい要素を追加する事が困難
テコ入れしたいが、運営維持で手が回らない
ヘキサドライブがお手伝い
ミッション
クライアントアプリのバージョンアップ サーバーは変更しない
基本的にはベタ移植
アップデートを容易にする
出来ればVita版にある揺れに対応したい
アセットワークフローの改善 旧開発会社内製のアニメーションツールからの脱却
構成
オリジナル OpenGLES 1.x
独自フレームワーク
新クライアント Cocos2D-X
CocosBuilder
SpriteStudio
CocosBuilder と SpriteStudio の組み込み
サンプル通りやれば両方簡単に組み込めた
Spriteクラスをそれぞれ継承するので共存できる
出すだけなら簡単!
問題になったところ
レイヤー化 二つの環境を総合的に管理することをあきらめた
レイヤー指定はプログラマーがハードコーディング
アーティストが口頭で指示w
SpriteStudioCocosBuilder
問題になったところ
情報の欠落 ループ等の設定がコンバート後、データから欠落していた
文字列対応 ダメージの数字、スキル名などの文字列への対応が無い
ユーザーデータで対応 情報をユーザーデータに格納して対応
ユーザーデータが文字列しか対応してないとか不備が多い
問題になったところ
ランタイム(SSプレイヤー)の処理が重い 本セッションのメインディッシュ
SSプレイヤーの最適化(CPU)
毎フレームSpriteが生成されていた
事前に生成するよう変更
軽量化!!
何か重い
PCだと平気だが実機だと重い
表示物も少ない単純なシーンでも重い
描画面積じゃね?
スマホあるある
コンシューマに迫るスペック
解像度とスペックのバランスが悪い
フルHD以上の解像度!?
表示面積がネックになる事が多い
じゃぁ、我々のタイトルは?
表示面積がネックになってそう
いやいや、オリジナルと同じモノしか出してないし
SpriteStudioが最適化されていないΣΣ(゚д゚lll)
そもそもオリジナルは余裕で表示できてるよ!?
SSプレイヤーの最適化(GPU)
ピクセル(フラグメント)シェーダーに分岐処理がorz
vec4 pixel = texture2D(u_texture, v_texCoord);
float rate = v_fragmentColor.a;
vec4 blend = v_fragmentColor * rate;
int selecter = u_selector;
vec4 _blend = (selecter == 3) ? -blend : blend;
vec4 _color = (selecter <= 1) ? pixel * (1.0 -rate) : pixel;
_color+=(selecter==1) ? (pixel * blend) : _blend;
pixel.rgb = _color.rgb ;
pixel *= u_alpha;
gl_FragColor = pixel;
SSプレイヤーの最適化(GPU)
ミックス
乗算
加算
減算
ポリゴン
テクスチャ
SSプレイヤーの最適化(GPU)
特化する事で分岐を排除 アルファブレンドと加算ブレンドしか使わない
カラーブレンドは乗算のみ
それ以外の表現を使うと再現されない
SSプレイヤーの最適化(GPU)
ミックス
乗算
加算
減算
ポリゴン
テクスチャ
SSプレイヤーの最適化(GPU)
フル機能使っている場合は?
SSプレイヤーの最適化(GPU)
ミックス
乗算
加算
減算
カラー
テクスチャ
mul add
SSプレイヤーの最適化(GPU)
フル機能使っている場合は? データ構造を見直すべき
データを見直せなくてもCPUで事前計算可能
最悪バーテックスシェーダーで処理
ダイコン王の野望ッッッン!!
ダイコン王の野望ッッッン!!
ダイコンの!ダイコンによる!
ダイコンのためのダイコンゲーム!
スマートフォン用のゲームアプリ
ヘキサドライブオリジナルタイトル
Copyright © 2014 HEXADRIVE Inc.
タイトル概要
画面は開発中のものです
多くのキャラクターが動き回るタワーオフェンス型のゲーム
各キャラクターは10~45のパーツで構成されていて多彩なアニメーションをする
2D表示のみCopyright © 2014 HEXADRIVE Inc.
構成
Unity
NGUI
SpriteStudio
SSプレイヤーの最適化(CPU)
GCによる強烈なスパイク
Newの撤廃
とにかくランタイム内のNewが多いorz
SSプレイヤーの最適化(CPU)
初回フレームの処理負荷が高い
ロジックの見直し
(゚д゚)Σ 2回呼ばれている!!
SSプレイヤーの最適化(CPU)
とにかく呼び出し関数が多い
各パラメータ参照のオーバーヘッド見直し
アニメーション更新処理が重い
パラメータのキャッシュ化やロジックの最適化
SSプレイヤーの最適化(CPU)
アニメーション参照処理負荷が高い
初期化時にインデックス化
(゚д゚)Σ 総当りで文字列比較してる!!
SSプレイヤーの最適化
他にも… 使用しない機能はバンバンカット
コリジョン判定処理
サブアニメーション機能
etc...
まとめ
SSプレイヤーの最適化まとめ
最適化はされていない!
とりあえず動く状態だと思え
凝ったゲームを作ろうとすると最適化が必要
要望
Editorで出力したファイルをprefab化する機能が欲しい 作っちゃったYO
Drawcallが多くなる 自動でアトラス化とか欲しいなぁ~
要望
アーティストが仕様を守ってくれない (^^; プロジェクト毎にデフォルトや機能のマスクを定義して配布
できる仕組みが欲しい!
実はできるらしい…orz
GitHub
オープンソース
https://github.com/SpriteStudio
って事らしいです
みんなで最適化してアップしてよ
質疑応答
ご清聴ありがとうございました