32
5渋谷Unity技術勉強会 ゆるロボ製作所開発事例 ドローコール削減技 n 連発! 株式会社ゲームポット スマートフォン開発部 吉谷幹人

ゆるロボ製作所開発事例 – ドローコール削減

Embed Size (px)

Citation preview

Page 1: ゆるロボ製作所開発事例 – ドローコール削減

第5回 渋谷Unity技術勉強会

ゆるロボ製作所開発事例 – ドローコール削減技 n 連発!

株式会社ゲームポット スマートフォン開発部

吉谷幹人

Page 2: ゆるロボ製作所開発事例 – ドローコール削減

自己紹介

■吉谷幹人(ヨシヤミキト)と申します

■ゲームポットでモバイル向けアプリを開発してます ・ソーシャルゲームの開発に関わったり ・社会人2年目奮闘中

■Unity使い始めて半年 ・3Dゲームの開発経験はまったくありませんでした

Page 3: ゆるロボ製作所開発事例 – ドローコール削減

■開発事例アプリ「ゆるロボ製作所」について

■ドローコール削減について

■デザイナ巻き込んだスクラム開発の話

今日お話すること

Page 4: ゆるロボ製作所開発事例 – ドローコール削減

ゆるロボ製作所

Page 5: ゆるロボ製作所開発事例 – ドローコール削減

・ロボ生産マシンに材料と燃料をセット ・経過時間に応じてロボが製造 ・図鑑コンプ目指す

■放置系キャラコンプゲーム

■傾けて出荷

■ゆるカワ3Dキャラ

・ロボを転がしてベルトコンベアに

・30体固有アクション

ゆるロボ製作所

Page 6: ゆるロボ製作所開発事例 – ドローコール削減

■完全無料 ・AdMobの広告のみ

■リリース3日でApp Store ゲームカテゴリ(無料)1位

ゆるロボ製作所

■Google Play ゲームカテゴリ(無料)1位

Page 7: ゆるロボ製作所開発事例 – ドローコール削減

デザイナ巻き込んだスクラム開発

Page 8: ゆるロボ製作所開発事例 – ドローコール削減

■開発手法としてスクラムを利用 ・アジャイル開発の一種 ・変化に柔軟に対応できる ・短期間の開発(スプリント)を何回もまわす ・スプリントごとにプレイ可能なゲームを作る

スクラムで開発

Page 9: ゆるロボ製作所開発事例 – ドローコール削減

■開発体制 ・PM(スクラムマスター):1人 + 補佐1人 ・デザイナー:メイン1人、3Dキャラヘルプ1人 ・プログラマ:1人

■期間 ・プロトタイピング:2週間 ・製品版:2ヶ月(4スプリント)

体制

Page 10: ゆるロボ製作所開発事例 – ドローコール削減

・小規模、開発人数が少ない ・必要な要素のみ利用

■厳密なスクラムではない

■実践したこと ・プロダクトバックログでユーザーストーリー管理 ・ストーリーポイントでの見積もり ・重要度による優先作業の明確化 ・デイリースクラム(朝会)の実施 ・タスクボードで進捗確認 ・スプリント最終日でデモ、KPTで振り返り × タスク分解、バーンダウンチャート (効果よりオーバーヘッドのほうが大きいと判断)

スクラムで開発

Page 11: ゆるロボ製作所開発事例 – ドローコール削減

■NGUI ・EZ GUIがEasyじゃないって何回も聴かされた ・他と比較した結果、使いやすさ・パフォーマンスが良かった

使用したプラグインなど

Page 12: ゆるロボ製作所開発事例 – ドローコール削減

■全員が常にUnity上で最新版を確認 ・デザイナにもバージョン管理システム(Git)使ってもらった

デザイナにもUnity使ってもらった

■素材の受け渡し・適用のオーバーヘッドゼロ ・デザイナが素材をUnityにプロジェクトに追加 ・位置や細かいパラメータはデザイナが微調整

Page 13: ゆるロボ製作所開発事例 – ドローコール削減

プログラマ

よくある開発の流れ

デザイナ

仮の素材でUI実装 素材作成

素材Unityに取り込み

素材組み込み

微調整

UIイメージ作成

朝会などで確認

UIイメージチームで共有

フィードバック適用 フィードバック適用

Gitで反映

Page 14: ゆるロボ製作所開発事例 – ドローコール削減

・基本システムの実装 ・ロボ企画、3Dモデル(6体) ・ミニマムで遊べる状態

■ スプリント1

■ スプリント2 ・チュートリアル ・ロボ行動ロジック ・ロボデザイン、3Dモデル(30体)着手

各スプリント内容

Page 15: ゆるロボ製作所開発事例 – ドローコール削減

■ スプリント3 ・広告の差し込み ・UIのブラッシュアップ ・ロボ3Dモデル完成(30体)

■ スプリント4 ・ソーシャルメディア投稿機能 ・ゲームバランス調整 ・社内テストフィードバック適用(3回)

各スプリント内容

Page 16: ゆるロボ製作所開発事例 – ドローコール削減

■とにかく速い ・調整にかかるコストが減った

デザイナと一緒にUnity使ってスクラム開発して

■スプリントごとにブラッシュアップが楽 ・新しいUIの追加や改修が柔軟にできた

■各々の知識を補えた ・プログラマ(私)が全然グラフィック・3Dの知識ない

Page 17: ゆるロボ製作所開発事例 – ドローコール削減

ドローコール削減

Page 18: ゆるロボ製作所開発事例 – ドローコール削減

■ いろんなキャラをたくさん歩かせる

■いろんな機種でも対応させたい ・Android ・iPhone 3GS

ゆるロボのゲームとしての要件

・15体ぐらいはわらわらさせたい

Page 19: ゆるロボ製作所開発事例 – ドローコール削減

■ いろんなキャラをたくさん歩かせる

■いろんな機種でも対応させたい ・Android ・iPhone 3GS

ゆるロボのゲームとしての要件

・15体ぐらいはわらわらさせたい

ドローコール減らす戦い

Page 20: ゆるロボ製作所開発事例 – ドローコール削減

■描画命令を送る回数

■コール数減らせばFPSが上がる

ドローコール数とは

■GameペインのStatsから見れる

Page 21: ゆるロボ製作所開発事例 – ドローコール削減

■ 目安(iPhone4に関して)

■ドローコール20を目標にした

・200コール:15fps ・100コール:30fps ・50コール:60fps

実際のドローコール目標値

・低スペックマシンでの動作も想定

Page 22: ゆるロボ製作所開発事例 – ドローコール削減

■ キャラ:32コール

ゆるロボを何も考えずにつくると

■ 背景:3 - 5コール

・ロボ15体:15コール ・ねじこ(アシスタント):1コール ・影16体分:16コール

■ GUI:40 – 50コールくらい?

■ ロボ製造マシン:1コール

Page 23: ゆるロボ製作所開発事例 – ドローコール削減

■ キャラ:32コール

ゆるロボを何も考えずにつくると

■ 背景:3 - 5コール

・ロボ15体:15コール ・ねじこ(アシスタント):1コール ・影16体分:16コール

■ GUI:40 – 50コールくらい?

20コールとか余裕でオーバー!

■ ロボ製造マシン:1コール

Page 24: ゆるロボ製作所開発事例 – ドローコール削減

オーバーする主原因は?

■Blob Shadow Projector1つで1コール

■スキンメッシュオブジェクト1つで1コール

■OnGUIの呼び出し

・影の投影

・ボーンアニメーションが入ってるオブジェクト

・UnityデフォルトのGUI処理系 ・ボタン表示等で1コール:OnGUI.Button();

Page 25: ゆるロボ製作所開発事例 – ドローコール削減

改善法1:Blob Shadow Projector使わない

■非スキンメッシュの影ポリを足元に配置

■注意:なるべくRayは飛ばさない ・地面の位置測定につかいたくなる ・Updateで行うと割と高負荷 ・通常は固定値、必要になったら飛ばすなど

・同じマテリアルならバッチ化され1コール

Page 26: ゆるロボ製作所開発事例 – ドローコール削減

■背景オブジェクト全部まとめた

改善法2:スキンメッシュオブジェクトをまとめる

・全部ひっくるめて1コールに

■アニメーションはスクリプトで動かす ・出荷口の開く・閉じる ・ベルトコンベア ・工場のガジェット(歯車など)

Page 27: ゆるロボ製作所開発事例 – ドローコール削減

■パネルをまとめる

改善法3:NGUIをうまく使う

・UIPanelごとにコールされる ・GameObjectでグループ構造作って一つのパネルに

■テクスチャをまとめる ・テクスチャ(アトラス)ごとにコールされる ・UIもフォントも一枚(1024x1024)におさめた

■NGUI ・ドローコールを減らすためのポイントがある

Page 28: ゆるロボ製作所開発事例 – ドローコール削減

■動かさないオブジェクトはStaticをOnに

■スカイボックスを利用しない

・Static Batchingの対象にする

その他

・もし空を表現する場合は半球にテクスチャ張って代用

■Dynamic Batching分断に注意 ・Transform.scaleが(-1,1,1) と(1,1,1)の物 ・Renderer.receiveShadowsの設定が違う物

を交互に配置しない

Page 29: ゆるロボ製作所開発事例 – ドローコール削減

■ キャラ:17コール

n連発の結果

・ロボ15体:15コール ・ねじこ(アシスタント):1コール ・影16体分:1コール

■ 背景:1コール

■ NGUI:1コール

■ ロボ製造マシン:1コール

Page 30: ゆるロボ製作所開発事例 – ドローコール削減

■ キャラ:17コール

n連発の結果

・ロボ15体:15コール ・ねじこ(アシスタント):1コール ・影16体分:1コール

■ 背景:1コール

■ NGUI:1コール

■ ロボ製造マシン:1コール

20コール達成!

Page 31: ゆるロボ製作所開発事例 – ドローコール削減

まとめ

Page 32: ゆるロボ製作所開発事例 – ドローコール削減

■デザイナにもスクラムとUnity使ってもらった ・オーバーヘッドが激減 ・ブラッシュアップが意欲的・柔軟にできる

■ドローコール減らすのが高速化の鍵 ・バッチ化でコールをまとめる ・スキンメッシュオブジェクトに注意 ・NGUIいいね

まとめ

おわりです