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

29,755 views

Published on

0 Comments
51 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
29,755
On SlideShare
0
From Embeds
0
Number of Embeds
4,921
Actions
Shares
0
Downloads
150
Comments
0
Likes
51
Embeds 0
No embeds

No notes for slide

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

  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いいね おわりです

×