• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
ゆるロボ製作所開発事例 – ドローコール削減
 

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

on

  • 20,419 views

 

Statistics

Views

Total Views
20,419
Views on SlideShare
17,114
Embed Views
3,305

Actions

Likes
43
Downloads
122
Comments
0

16 Embeds 3,305

http://d.hatena.ne.jp 3057
https://twitter.com 97
http://webcache.googleusercontent.com 48
http://192.168.1.15 29
http://www.trident-game.com 27
http://www.trident-onlinegame.com 19
http://us-w1.rockmelt.com 9
http://favtile.com 6
https://www.chatwork.com 3
http://translate.googleusercontent.com 3
http://wiki.aether-inc.local 2
http://wiki.aether-inc.jp 1
http://cache.yahoofs.jp 1
https://si0.twimg.com 1
http://tweetedtimes.com 1
http://baba-s.hatenablog.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • 第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スプリント)
    • スクラムで開発 ■厳密なスクラムではない ・小規模、開発人数が少ない ・必要な要素のみ利用 ■実践したこと ・プロダクトバックログでユーザーストーリー管理 ・ストーリーポイントでの見積もり ・重要度による優先作業の明確化 ・デイリースクラム(朝会)の実施 ・タスクボードで進捗確認 ・スプリント最終日でデモ、KPTで振り返り × タスク分解、バーンダウンチャート (効果よりオーバーヘッドのほうが大きいと判断)
    • 使用したプラグインなど ■NGUI ・EZ GUIがEasyじゃないって何回も聴かされた ・他と比較した結果、使いやすさ・パフォーマンスが良かった
    • デザイナにもUnity使ってもらった ■全員が常にUnity上で最新版を確認 ・デザイナにもバージョン管理システム(Git)使ってもらった ■素材の受け渡し・適用のオーバーヘッドゼロ ・デザイナが素材をUnityにプロジェクトに追加 ・位置や細かいパラメータはデザイナが微調整
    • よくある開発の流れ プログラマ デザイナ UIイメージ作成 UIイメージチームで共有 仮の素材でUI実装 素材作成 素材Unityに取り込み Gitで反映 素材組み込み 微調整 朝会などで確認 フィードバック適用 フィードバック適用
    • 各スプリント内容 ■ スプリント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 – 50コールくらい?
    • ゆるロボを何も考えずにつくると ■ キャラ:32コール ・ロボ15体:15コール ・ねじこ(アシスタント):1コール ・影16体分:16コール ■ ロボ製造マシン:1コール ■ 背景:3 - 5コール ■ GUI:40 – 50コールくらい?20コールとか余裕でオーバー!
    • オーバーする主原因は? ■Blob Shadow Projector1つで1コール ・影の投影 ■スキンメッシュオブジェクト1つで1コール ・ボーンアニメーションが入ってるオブジェクト ■OnGUIの呼び出し ・UnityデフォルトのGUI処理系 ・ボタン表示等で1コール:OnGUI.Button();
    • 改善法1:Blob Shadow Projector使わない ■非スキンメッシュの影ポリを足元に配置 ・同じマテリアルならバッチ化され1コール ■注意:なるべくRayは飛ばさない ・地面の位置測定につかいたくなる ・Updateで行うと割と高負荷 ・通常は固定値、必要になったら飛ばすなど
    • 改善法2:スキンメッシュオブジェクトをまとめる ■背景オブジェクト全部まとめた ・全部ひっくるめて1コールに ■アニメーションはスクリプトで動かす ・出荷口の開く・閉じる ・ベルトコンベア ・工場のガジェット(歯車など)
    • 改善法3:NGUIをうまく使う ■NGUI ・ドローコールを減らすためのポイントがある ■テクスチャをまとめる ・テクスチャ(アトラス)ごとにコールされる ・UIもフォントも一枚(1024x1024)におさめた ■パネルをまとめる ・UIPanelごとにコールされる ・GameObjectでグループ構造作って一つのパネルに
    • その他■スカイボックスを利用しない ・もし空を表現する場合は半球にテクスチャ張って代用■動かさないオブジェクトはStaticをOnに ・Static Batchingの対象にする■Dynamic Batching分断に注意 ・Transform.scaleが(-1,1,1) と(1,1,1)の物 を交互に配置しない ・Renderer.receiveShadowsの設定が違う物
    • n連発の結果 ■ キャラ:17コール ・ロボ15体:15コール ・ねじこ(アシスタント):1コール ・影16体分:1コール ■ ロボ製造マシン:1コール ■ 背景:1コール ■ NGUI:1コール
    • n連発の結果 ■ キャラ:17コール ・ロボ15体:15コール ・ねじこ(アシスタント):1コール ・影16体分:1コール ■ ロボ製造マシン:1コール ■ 背景:1コール ■ NGUI:1コール20コール達成!
    • まとめ
    • まとめ ■デザイナにもスクラムとUnity使ってもらった ・オーバーヘッドが激減 ・ブラッシュアップが意欲的・柔軟にできる ■ドローコール減らすのが高速化の鍵 ・バッチ化でコールをまとめる ・スキンメッシュオブジェクトに注意 ・NGUIいいね おわりです