Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
第5回 渋谷Unity技術勉強会ゆるロボ製作所開発事例        – ドローコール削減技 n 連発! 株式会社ゲームポット スマートフォン開発部 吉谷幹人
自己紹介■吉谷幹人(ヨシヤミキト)と申します■ゲームポットでモバイル向けアプリを開発してます ・ソーシャルゲームの開発に関わったり ・社会人2年目奮闘中■Unity使い始めて半年 ・3Dゲームの開発経験はまったくありませんでした
今日お話すること■開発事例アプリ「ゆるロボ製作所」について■デザイナ巻き込んだスクラム開発の話■ドローコール削減について
ゆるロボ製作所
ゆるロボ製作所■放置系キャラコンプゲーム ・ロボ生産マシンに材料と燃料をセット ・経過時間に応じてロボが製造 ・図鑑コンプ目指す■ゆるカワ3Dキャラ ・30体固有アクション ■傾けて出荷 ・ロボを転がしてベルトコンベアに
ゆるロボ製作所■リリース3日でApp Store        ゲームカテゴリ(無料)1位■Google Play ゲームカテゴリ(無料)1位 ■完全無料 ・AdMobの広告のみ
デザイナ巻き込んだスクラム開発
スクラムで開発■開発手法としてスクラムを利用 ・アジャイル開発の一種 ・変化に柔軟に対応できる ・短期間の開発(スプリント)を何回もまわす ・スプリントごとにプレイ可能なゲームを作る
体制 ■開発体制     ・PM(スクラムマスター):1人 + 補佐1人     ・デザイナー:メイン1人、3Dキャラヘルプ1人     ・プログラマ:1人 ■期間     ・プロトタイピング:2週間     ・製品版:2ヶ月(4スプリント)
スクラムで開発 ■厳密なスクラムではない  ・小規模、開発人数が少ない  ・必要な要素のみ利用 ■実践したこと  ・プロダクトバックログでユーザーストーリー管理  ・ストーリーポイントでの見積もり  ・重要度による優先作業の明確化  ・デイリー...
使用したプラグインなど ■NGUI ・EZ GUIがEasyじゃないって何回も聴かされた ・他と比較した結果、使いやすさ・パフォーマンスが良かった
デザイナにもUnity使ってもらった ■全員が常にUnity上で最新版を確認 ・デザイナにもバージョン管理システム(Git)使ってもらった ■素材の受け渡し・適用のオーバーヘッドゼロ ・デザイナが素材をUnityにプロジェクトに追加 ・位置や細...
よくある開発の流れ   プログラマ                        デザイナ                               UIイメージ作成                UIイメージチームで共有    仮の素材でU...
各スプリント内容 ■ スプリント1  ・基本システムの実装  ・ロボ企画、3Dモデル(6体)  ・ミニマムで遊べる状態  ■ スプリント2  ・チュートリアル  ・ロボ行動ロジック  ・ロボデザイン、3Dモデル(30体)着手
各スプリント内容  ■ スプリント3  ・広告の差し込み  ・UIのブラッシュアップ  ・ロボ3Dモデル完成(30体)  ■ スプリント4  ・ソーシャルメディア投稿機能  ・ゲームバランス調整  ・社内テストフィードバック適用(3回)
デザイナと一緒にUnity使ってスクラム開発して ■とにかく速い ・調整にかかるコストが減った ■スプリントごとにブラッシュアップが楽 ・新しいUIの追加や改修が柔軟にできた ■各々の知識を補えた ・プログラマ(私)が全然グラフィック・3Dの知...
ドローコール削減
ゆるロボのゲームとしての要件 ■ いろんなキャラをたくさん歩かせる  ・15体ぐらいはわらわらさせたい ■いろんな機種でも対応させたい  ・Android  ・iPhone 3GS
ゆるロボのゲームとしての要件 ■ いろんなキャラをたくさん歩かせる  ・15体ぐらいはわらわらさせたい ■いろんな機種でも対応させたい  ・Android  ・iPhone 3GSドローコール減らす戦い
ドローコール数とは ■描画命令を送る回数 ■コール数減らせばFPSが上がる ■GameペインのStatsから見れる
実際のドローコール目標値  ■ 目安(iPhone4に関して)  ・200コール:15fps  ・100コール:30fps  ・50コール:60fps  ■ドローコール20を目標にした   ・低スペックマシンでの動作も想定
ゆるロボを何も考えずにつくると  ■ キャラ:32コール   ・ロボ15体:15コール   ・ねじこ(アシスタント):1コール   ・影16体分:16コール  ■ ロボ製造マシン:1コール  ■ 背景:3 - 5コール  ■ GUI:40 – ...
ゆるロボを何も考えずにつくると  ■ キャラ:32コール   ・ロボ15体:15コール   ・ねじこ(アシスタント):1コール   ・影16体分:16コール  ■ ロボ製造マシン:1コール  ■ 背景:3 - 5コール  ■ GUI:40 – ...
オーバーする主原因は?  ■Blob Shadow Projector1つで1コール    ・影の投影  ■スキンメッシュオブジェクト1つで1コール    ・ボーンアニメーションが入ってるオブジェクト  ■OnGUIの呼び出し    ・Unit...
改善法1:Blob Shadow Projector使わない  ■非スキンメッシュの影ポリを足元に配置     ・同じマテリアルならバッチ化され1コール   ■注意:なるべくRayは飛ばさない     ・地面の位置測定につかいたくなる     ...
改善法2:スキンメッシュオブジェクトをまとめる  ■背景オブジェクト全部まとめた   ・全部ひっくるめて1コールに  ■アニメーションはスクリプトで動かす   ・出荷口の開く・閉じる   ・ベルトコンベア   ・工場のガジェット(歯車など)
改善法3:NGUIをうまく使う  ■NGUI   ・ドローコールを減らすためのポイントがある  ■テクスチャをまとめる   ・テクスチャ(アトラス)ごとにコールされる   ・UIもフォントも一枚(1024x1024)におさめた  ■パネルをまと...
その他■スカイボックスを利用しない ・もし空を表現する場合は半球にテクスチャ張って代用■動かさないオブジェクトはStaticをOnに ・Static Batchingの対象にする■Dynamic Batching分断に注意 ・Transform...
n連発の結果  ■ キャラ:17コール   ・ロボ15体:15コール   ・ねじこ(アシスタント):1コール   ・影16体分:1コール  ■ ロボ製造マシン:1コール  ■ 背景:1コール  ■ NGUI:1コール
n連発の結果  ■ キャラ:17コール   ・ロボ15体:15コール   ・ねじこ(アシスタント):1コール   ・影16体分:1コール  ■ ロボ製造マシン:1コール  ■ 背景:1コール  ■ NGUI:1コール20コール達成!
まとめ
まとめ ■デザイナにもスクラムとUnity使ってもらった  ・オーバーヘッドが激減  ・ブラッシュアップが意欲的・柔軟にできる ■ドローコール減らすのが高速化の鍵  ・バッチ化でコールをまとめる  ・スキンメッシュオブジェクトに注意  ・NGU...
Upcoming SlideShare
Loading in …5
×

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

30,660 views

Published on

  • Be the first to comment

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

  1. 1. 第5回 渋谷Unity技術勉強会ゆるロボ製作所開発事例 – ドローコール削減技 n 連発! 株式会社ゲームポット スマートフォン開発部 吉谷幹人
  2. 2. 自己紹介■吉谷幹人(ヨシヤミキト)と申します■ゲームポットでモバイル向けアプリを開発してます ・ソーシャルゲームの開発に関わったり ・社会人2年目奮闘中■Unity使い始めて半年 ・3Dゲームの開発経験はまったくありませんでした
  3. 3. 今日お話すること■開発事例アプリ「ゆるロボ製作所」について■デザイナ巻き込んだスクラム開発の話■ドローコール削減について
  4. 4. ゆるロボ製作所
  5. 5. ゆるロボ製作所■放置系キャラコンプゲーム ・ロボ生産マシンに材料と燃料をセット ・経過時間に応じてロボが製造 ・図鑑コンプ目指す■ゆるカワ3Dキャラ ・30体固有アクション ■傾けて出荷 ・ロボを転がしてベルトコンベアに
  6. 6. ゆるロボ製作所■リリース3日でApp Store ゲームカテゴリ(無料)1位■Google Play ゲームカテゴリ(無料)1位 ■完全無料 ・AdMobの広告のみ
  7. 7. デザイナ巻き込んだスクラム開発
  8. 8. スクラムで開発■開発手法としてスクラムを利用 ・アジャイル開発の一種 ・変化に柔軟に対応できる ・短期間の開発(スプリント)を何回もまわす ・スプリントごとにプレイ可能なゲームを作る
  9. 9. 体制 ■開発体制 ・PM(スクラムマスター):1人 + 補佐1人 ・デザイナー:メイン1人、3Dキャラヘルプ1人 ・プログラマ:1人 ■期間 ・プロトタイピング:2週間 ・製品版:2ヶ月(4スプリント)
  10. 10. スクラムで開発 ■厳密なスクラムではない ・小規模、開発人数が少ない ・必要な要素のみ利用 ■実践したこと ・プロダクトバックログでユーザーストーリー管理 ・ストーリーポイントでの見積もり ・重要度による優先作業の明確化 ・デイリースクラム(朝会)の実施 ・タスクボードで進捗確認 ・スプリント最終日でデモ、KPTで振り返り × タスク分解、バーンダウンチャート (効果よりオーバーヘッドのほうが大きいと判断)
  11. 11. 使用したプラグインなど ■NGUI ・EZ GUIがEasyじゃないって何回も聴かされた ・他と比較した結果、使いやすさ・パフォーマンスが良かった
  12. 12. デザイナにもUnity使ってもらった ■全員が常にUnity上で最新版を確認 ・デザイナにもバージョン管理システム(Git)使ってもらった ■素材の受け渡し・適用のオーバーヘッドゼロ ・デザイナが素材をUnityにプロジェクトに追加 ・位置や細かいパラメータはデザイナが微調整
  13. 13. よくある開発の流れ プログラマ デザイナ UIイメージ作成 UIイメージチームで共有 仮の素材でUI実装 素材作成 素材Unityに取り込み Gitで反映 素材組み込み 微調整 朝会などで確認 フィードバック適用 フィードバック適用
  14. 14. 各スプリント内容 ■ スプリント1 ・基本システムの実装 ・ロボ企画、3Dモデル(6体) ・ミニマムで遊べる状態 ■ スプリント2 ・チュートリアル ・ロボ行動ロジック ・ロボデザイン、3Dモデル(30体)着手
  15. 15. 各スプリント内容 ■ スプリント3 ・広告の差し込み ・UIのブラッシュアップ ・ロボ3Dモデル完成(30体) ■ スプリント4 ・ソーシャルメディア投稿機能 ・ゲームバランス調整 ・社内テストフィードバック適用(3回)
  16. 16. デザイナと一緒にUnity使ってスクラム開発して ■とにかく速い ・調整にかかるコストが減った ■スプリントごとにブラッシュアップが楽 ・新しいUIの追加や改修が柔軟にできた ■各々の知識を補えた ・プログラマ(私)が全然グラフィック・3Dの知識ない
  17. 17. ドローコール削減
  18. 18. ゆるロボのゲームとしての要件 ■ いろんなキャラをたくさん歩かせる ・15体ぐらいはわらわらさせたい ■いろんな機種でも対応させたい ・Android ・iPhone 3GS
  19. 19. ゆるロボのゲームとしての要件 ■ いろんなキャラをたくさん歩かせる ・15体ぐらいはわらわらさせたい ■いろんな機種でも対応させたい ・Android ・iPhone 3GSドローコール減らす戦い
  20. 20. ドローコール数とは ■描画命令を送る回数 ■コール数減らせばFPSが上がる ■GameペインのStatsから見れる
  21. 21. 実際のドローコール目標値 ■ 目安(iPhone4に関して) ・200コール:15fps ・100コール:30fps ・50コール:60fps ■ドローコール20を目標にした ・低スペックマシンでの動作も想定
  22. 22. ゆるロボを何も考えずにつくると ■ キャラ:32コール ・ロボ15体:15コール ・ねじこ(アシスタント):1コール ・影16体分:16コール ■ ロボ製造マシン:1コール ■ 背景:3 - 5コール ■ GUI:40 – 50コールくらい?
  23. 23. ゆるロボを何も考えずにつくると ■ キャラ:32コール ・ロボ15体:15コール ・ねじこ(アシスタント):1コール ・影16体分:16コール ■ ロボ製造マシン:1コール ■ 背景:3 - 5コール ■ GUI:40 – 50コールくらい?20コールとか余裕でオーバー!
  24. 24. オーバーする主原因は? ■Blob Shadow Projector1つで1コール ・影の投影 ■スキンメッシュオブジェクト1つで1コール ・ボーンアニメーションが入ってるオブジェクト ■OnGUIの呼び出し ・UnityデフォルトのGUI処理系 ・ボタン表示等で1コール:OnGUI.Button();
  25. 25. 改善法1:Blob Shadow Projector使わない ■非スキンメッシュの影ポリを足元に配置 ・同じマテリアルならバッチ化され1コール ■注意:なるべくRayは飛ばさない ・地面の位置測定につかいたくなる ・Updateで行うと割と高負荷 ・通常は固定値、必要になったら飛ばすなど
  26. 26. 改善法2:スキンメッシュオブジェクトをまとめる ■背景オブジェクト全部まとめた ・全部ひっくるめて1コールに ■アニメーションはスクリプトで動かす ・出荷口の開く・閉じる ・ベルトコンベア ・工場のガジェット(歯車など)
  27. 27. 改善法3:NGUIをうまく使う ■NGUI ・ドローコールを減らすためのポイントがある ■テクスチャをまとめる ・テクスチャ(アトラス)ごとにコールされる ・UIもフォントも一枚(1024x1024)におさめた ■パネルをまとめる ・UIPanelごとにコールされる ・GameObjectでグループ構造作って一つのパネルに
  28. 28. その他■スカイボックスを利用しない ・もし空を表現する場合は半球にテクスチャ張って代用■動かさないオブジェクトはStaticをOnに ・Static Batchingの対象にする■Dynamic Batching分断に注意 ・Transform.scaleが(-1,1,1) と(1,1,1)の物 を交互に配置しない ・Renderer.receiveShadowsの設定が違う物
  29. 29. n連発の結果 ■ キャラ:17コール ・ロボ15体:15コール ・ねじこ(アシスタント):1コール ・影16体分:1コール ■ ロボ製造マシン:1コール ■ 背景:1コール ■ NGUI:1コール
  30. 30. n連発の結果 ■ キャラ:17コール ・ロボ15体:15コール ・ねじこ(アシスタント):1コール ・影16体分:1コール ■ ロボ製造マシン:1コール ■ 背景:1コール ■ NGUI:1コール20コール達成!
  31. 31. まとめ
  32. 32. まとめ ■デザイナにもスクラムとUnity使ってもらった ・オーバーヘッドが激減 ・ブラッシュアップが意欲的・柔軟にできる ■ドローコール減らすのが高速化の鍵 ・バッチ化でコールをまとめる ・スキンメッシュオブジェクトに注意 ・NGUIいいね おわりです

×