Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
COLOPL Unity night!Unityとスマートフォンアプリの最適化    Kuma the bear準備室                                               2012年4月     ©201...
Boot Camp帰りの皆様      おつかれさまでした!                   2
Kuma the bearとは・・・オフラインで動作するアプリである事 デバイスや通信環境に依存しないプラットフォームとして。 できるだけ多くの端末をカバーするため。グローバルである事 App Store / Google Playのプラットフ...
Kuma the bearタイトルのご紹介きらきらドロップ!       the射的!リズムコイン!          わっさーゾンビ!                            4
Kuma the bear新タイトル「むしアミ!」                        むしvs女の子                        13種類の敵キャラ                        6種類のウェポン ...
という訳で・・・ものづくりのお話           6
Kuma the bearタイトルのメンバー こんな感じで一つのプロジェクトを回しています!                       基本はスモールチーム(3-4人)                           プロジェクト初動は、...
Kuma the bearのメンバー技術のメンバーはUnityを中心にメンバーの特性(バックグラウンド)を生かす!        iOS                          Unityそのものに     ネイティブ周り      ...
今回の主題スマートフォンアプリでの最適化             9
つくる上での基本構成基本は1シーンすぐに始められるゲームを目指すために、必ずワンシーンにする。シーンロードは避けるようにつとめる。そのためにResources.Load/UnloadUseAssetは使ってメモリロードはフレキシブルに。プロジェ...
基本のターゲットプラットフォーム                   Armv6                   Armv7           遅い。iOS4.2で動く           [v6 + v7]はバイナリがでかいのでv6  ...
基本のターゲットプラットフォーム参考までに、リファレンス機  Galaxy S 2010年10月発売   iPhone 3GS 2009年 6月                                              12
ところが、3月7にがらりと変わりました。             13
App Storeの3G回線ダウンロード制限が  20MBから50MBに!                   14
アプリの省サイズ化小技とか、お話ししようかと思いましたが今回は割愛します!   でも、アプリの省サイズ化には努めましょう。 テクスチャサイズとかパフォーマンスに影響しますので。                              15
という訳で、直近の3タイトルからの実例紹介とさせていただきます!               16
リズムコイン!2012年 2月           17
リズムコイン ∼ここでハマった∼問題 その1. 全体的に遅い、もっさりしている。  ➡ Profilerで見ると、CPU UsageがほとんどPhysics関係。問題 その2. フィーバーモード突入時に一部Android端末で落ちる。  ➡ クマ...
リズムコイン ∼問題その1 物理系が遅い∼問題 その1. 全体的に遅い、もっさりしている。   ➡ Profilerで見ると、CPU UsageがほとんどPhysics関係。疑いその1. Mesh Colliderの頂点数が多いんじゃない?   ...
リズムコイン ∼問題その1 突如落ちる∼問題 その2. フィーバーモード突入時に一部Android端末で落ちる。  ➡ クマの後ろで出しているRendererテクスチャが原因じゃないか?                  どうやらテクスチャの初...
わっさーゾンビ! 2012年 3月            21
わっさーゾンビ! ∼ここでハマった∼問題 その1. ここでも全体的に遅い、もっさりしている。   ➡ Skinned Mesh Renderer 使っているしDrawCall 数はゾンビの数   だけ発生。あと、やはりPhysicsが重い。問題...
わっさーゾンビ ∼ パフォーマンス調整∼問題 その1. ここでも全体的に遅い、もっさりしている。➡ Skinned Mesh Renderer 使っているしDrawCall 数はゾンビの数だけ発生。Physicsも遅い。            ...
わっさーゾンビ ∼ ゲームバランス調整∼問題 その2. 実時間ベースでのゲームバランス調整は正直きつい。 ➡ツールやシミュレーションベースの方法を使ってテスト。 ➡Time.timeScaleでの設定でx倍速モードでテストできるように構成をして...
わっさーゾンビ ∼iOSでの問題∼問題 その3. iOS上でプチフリが発生。 (iPad / iPhone 3GS / iPhone4 )   ➡データ保存のポーリングの中で発生。   ➡ゲームの特性上、PlayerPrefsが肥大化、   ま...
むしアミ!2012年 4月   26
むしアミ! ∼ここでハマった∼問題 その1. ここでも全体的に遅い、もっさりしている。  ➡ Skinned Mesh Renderer 使っているしDrawCall 数はむしの数だ  け発生。あと、やはりPhysicsが重い。問題 その2. ...
むしアミ! ∼パフォーマンスチューニング∼問題 その1. やっぱり遅い。➡今回もキャラクターはSkinned Mesh Renderer使っています。Physicsは衝突はさせていませんが、Triggerには使ったりしています。  ➡Physi...
むしアミ! ∼ステージ調整∼問題 その2. 全ステージ300ステージ  ➡Inspector上からの調整は誤入力などがでそうで、正直怖い。  CSV必要でやる事に決めた。  ➡Export / Import スクリプトをEditorスクリプトで...
あとは、小技とEzGUITipsを紹介                 30
EzGUI Localize Tips! その1 フォントスプライトシートの出力でMac上であれば、 BMGlyphかGlyphDesignerで。 両方ともEzGUI用のExport設定あり。 文字の装飾はGlyphDesignerが奇麗に出...
EzGUI Localize Tips! その2GUIのスプライトシートは無圧縮16bit画像につき、メモリの圧迫サイズが大きいのでシステム言語環境に応じて初期化のタイミングで、Resources.LoadしてMaterialのMainText...
Android メモリ小技Androidの実行メモリの使用量につき、OSによりActivityが終了させられる事があります。メモリの使用量は、AdmobなどNativeまわりもう考慮してUnity単体で100MB以下までおさえる必要があります。...
Android Native連携 小技プロジェクト序盤ではUnityから直接APKを作っていて問題ありませんが、後半では、Native側の連携が重要となり、なおかつ実機テストが必要となります。いちいちEclipseを通してのパッケージングは面倒...
まとめ1.パフォーマンスがらみは直面から勝負するよりも分析。またSCMで必ずさかのぼれるようにして、原因の差分を比べる。Profiler, Instruments,OpenGL ES Perfomance Detective, adbを駆使。2....
クマベアチームはメンバー募集中です。スマートフォンのゲーム好きなプログラマーの人スマートフォンで勝負したい3Dモデラーの人スマートフォンUIにこだわりあるデザイナーの人   WELCOME!                          36
本日はお忙しい中ご来場いただき 誠にありがとうございました。 See you next time!                      37
Prochain SlideShare
Chargement dans…5
×

109

Partager

Unityとスマートフォンアプリの最適化

"COLOPL UnityNight" (2012/04/13開催) の発表資料です。

Unityを用いたスマートフォン向けゲーム開発の体制や、"Kuma the Bear"ブランドで発表している各ゲームの制作時の最適化について説明させていただきました。

Unityとスマートフォンアプリの最適化

  1. 1. COLOPL Unity night!Unityとスマートフォンアプリの最適化 Kuma the bear準備室 2012年4月 ©2012 COLOPL, Inc. All Rights Reserved.
  2. 2. Boot Camp帰りの皆様 おつかれさまでした! 2
  3. 3. Kuma the bearとは・・・オフラインで動作するアプリである事 デバイスや通信環境に依存しないプラットフォームとして。 できるだけ多くの端末をカバーするため。グローバルである事 App Store / Google Playのプラットフォームで展開する以上、 ローカライズも積極的に。ゲームとして面白いものである事 スマートフォンデバイスの性能から、携帯の付加機能のゲームではな く、ゲームプラットフォームそのものとして考える。 3
  4. 4. Kuma the bearタイトルのご紹介きらきらドロップ! the射的!リズムコイン! わっさーゾンビ! 4
  5. 5. Kuma the bear新タイトル「むしアミ!」 むしvs女の子 13種類の敵キャラ 6種類のウェポン 5種類のサブウェポンを組み合わジフル せて、戦うディフェンス系シュー普段はフィギュアだけど ティングゲーム!むしから家を守るため立ち上がった! 武器選択・主人公のステータス振 り分け可能! 全300ステージ、かなりやりごた えあります! 5
  6. 6. という訳で・・・ものづくりのお話 6
  7. 7. Kuma the bearタイトルのメンバー こんな感じで一つのプロジェクトを回しています! 基本はスモールチーム(3-4人) プロジェクト初動は、 ・エンジニアがプロトタイピング ・ディレクターとデザイナーが企画を ディレクター 固める 後半に別のプログラマーがジョイン プログラマー デザイナー 意思決定は早く! 3Dモデラー プロジェクト終盤は皆でプログラマー ゲームバランスの調整 みんなUnityを使ってます! 7
  8. 8. Kuma the bearのメンバー技術のメンバーはUnityを中心にメンバーの特性(バックグラウンド)を生かす! iOS Unityそのものに ネイティブ周り 超詳しい に強い AssetStoreオタク iTunes Connect Android ネイティブ周り 3Dに強い に強いコンシューマー Google play あがり Unity EditorScript でツール作りGLとか解ってる チームメンバーのUnityに関するナレッジはフラットに! 8
  9. 9. 今回の主題スマートフォンアプリでの最適化 9
  10. 10. つくる上での基本構成基本は1シーンすぐに始められるゲームを目指すために、必ずワンシーンにする。シーンロードは避けるようにつとめる。そのためにResources.Load/UnloadUseAssetは使ってメモリロードはフレキシブルに。プロジェクト毎にツールは作成プロジェクトに応じたツールはEditorScript・Shellなど作成する。ゲームパラメーターの調整には必須。EzGUIは使っています悪名名高いライブラリですが、パフォーマンス改善・省サイズには効きます。うまく使えばMVCのモデルにできてスッキリ。ひとつのバイナリで他言語に対応EzGUIの機能を使って、ワンバイナリで他言語対応を実装。Nativeのソースは流用しまくるXCODE/Eclipseの外側のプロジェクトは全てのプロジェクトで使えるように標準のXMLでの定義化をきちんとしておく。 10
  11. 11. 基本のターゲットプラットフォーム Armv6 Armv7 遅い。iOS4.2で動く [v6 + v7]はバイナリがでかいのでv6 N/AGL ES1.1 のみで。 とほぼ同じだが、 やや遅い。実行環境にゆらぎが少ない。 動作速度は早い、海外製の一部端末 ほぼ全てのArmのAndroid端末で稼働。 が対象外となってしまう。 iOS4.3からの対応。早い。 N/AGL ES2.0 3G/iOS4.2以下は完全に切り捨て。 端末によって、性能のゆらぎが大きい。 端末によって、性能のゆらぎが大きい。 かなり遅くなる事も。 対応端末を多くするために省サイズを意識して、 ミニマム構成での動作を想定した作りに! 11
  12. 12. 基本のターゲットプラットフォーム参考までに、リファレンス機 Galaxy S 2010年10月発売 iPhone 3GS 2009年 6月 12
  13. 13. ところが、3月7にがらりと変わりました。 13
  14. 14. App Storeの3G回線ダウンロード制限が 20MBから50MBに! 14
  15. 15. アプリの省サイズ化小技とか、お話ししようかと思いましたが今回は割愛します! でも、アプリの省サイズ化には努めましょう。 テクスチャサイズとかパフォーマンスに影響しますので。 15
  16. 16. という訳で、直近の3タイトルからの実例紹介とさせていただきます! 16
  17. 17. リズムコイン!2012年 2月 17
  18. 18. リズムコイン ∼ここでハマった∼問題 その1. 全体的に遅い、もっさりしている。 ➡ Profilerで見ると、CPU UsageがほとんどPhysics関係。問題 その2. フィーバーモード突入時に一部Android端末で落ちる。 ➡ クマの後ろで出しているRenderTextureが原因じゃないか? 18
  19. 19. リズムコイン ∼問題その1 物理系が遅い∼問題 その1. 全体的に遅い、もっさりしている。 ➡ Profilerで見ると、CPU UsageがほとんどPhysics関係。疑いその1. Mesh Colliderの頂点数が多いんじゃない? Primitive Colliderではどうしようもできないので、 8面のCollider用のMeshを別途作成 ➡結果ほんの少しだけ軽くなったけど、基本は変わらない!疑いその2. そもそもコインが重くって場に残り過ぎなのが問題では? コインのPhysics Materialの摩擦係数を軽くして、土台から流れやすくする 事で、結果的に衝突回数を減らせて、Physicsの抱える問題を解決! ➡当たり!軽くなったけど、ゲームバランスをもう一度見直す事に。 パフォーマンス調整でゲームバランスへの影響をする事は多いので段階 的にパフォーマンスチェックも随時すべし! 19
  20. 20. リズムコイン ∼問題その1 突如落ちる∼問題 その2. フィーバーモード突入時に一部Android端末で落ちる。 ➡ クマの後ろで出しているRendererテクスチャが原因じゃないか? どうやらテクスチャの初期化で落ちるのは GalaxyS で再現性が取れた。 ➡動的にスクリーンのMaterialにSetTextureをし ていたのが問題。 ・初期化のタイミングでRenderTextureを割り当 てて、動作中にActiveのON/OFFで切り替えるよ うにした。 RendereTextureの使用そのものを控えるべきですが、 その他 IS03 など一度に複数のRenderTextureが使えない端末もありました。 GPUに依存するところが大きいです。 20
  21. 21. わっさーゾンビ! 2012年 3月 21
  22. 22. わっさーゾンビ! ∼ここでハマった∼問題 その1. ここでも全体的に遅い、もっさりしている。 ➡ Skinned Mesh Renderer 使っているしDrawCall 数はゾンビの数 だけ発生。あと、やはりPhysicsが重い。問題 その2. 実時間ベースでのゲームバランス調整は正直きつい。 ➡ツールやシミュレーションベースの方法を使ってテスト。問題 その3. iOS上でプチフリが発生。 (iPad / iPhone 3GS / iPhone4 ) ➡データ保存のポーリングの中で発生。 22
  23. 23. わっさーゾンビ ∼ パフォーマンス調整∼問題 その1. ここでも全体的に遅い、もっさりしている。➡ Skinned Mesh Renderer 使っているしDrawCall 数はゾンビの数だけ発生。Physicsも遅い。 ➡ ボーン入りのキャラクターアニメーショ ンを使っている都合上、 SkinnedMeshRenderer を切る事は不可 能。 ➡ キャラクターはRigidBody同士の衝突と なっているが、既にプリミティブのCollider となっている。➡ やや乱暴だが、Time設定のFixedDeltaTimeを調整する事でPhysics.simulateの演算回数を減らす事で対応。その他アプリケーションのフレームレート上限を30に指定。描画コスト減。アクション性・物理特性がゲーム性に影響しないタイトルにのみ使用可能 23
  24. 24. わっさーゾンビ ∼ ゲームバランス調整∼問題 その2. 実時間ベースでのゲームバランス調整は正直きつい。 ➡ツールやシミュレーションベースの方法を使ってテスト。 ➡Time.timeScaleでの設定でx倍速モードでテストできるように構成をしてお く。 ➡シミュレーター上からゲームの進行ログをConsoleだけでなく、CSVではけ るようにしておく。経過時間とイベント発生をグラフ化して、ゲーム内の進行状 況に偏りが出ないようにする。 段階の箇所で なんらかのイベ ント発生 24
  25. 25. わっさーゾンビ ∼iOSでの問題∼問題 その3. iOS上でプチフリが発生。 (iPad / iPhone 3GS / iPhone4 ) ➡データ保存のポーリングの中で発生。 ➡ゲームの特性上、PlayerPrefsが肥大化、 またゲームの特性上更新頻度が上がってしまった事が原因。 ➡PlayerPrefsの保存は全ての処理が一時停止するため、まず は保存の項目の省サイズ化に努める。 ➡OnApplicationPauseとOnApplicationQuitできちんとセー ブしてあげれば、問題無し。 ポーリングでデータ保存すると、壊す可能性も否定できないた め要注意! 25
  26. 26. むしアミ!2012年 4月 26
  27. 27. むしアミ! ∼ここでハマった∼問題 その1. ここでも全体的に遅い、もっさりしている。 ➡ Skinned Mesh Renderer 使っているしDrawCall 数はむしの数だ け発生。あと、やはりPhysicsが重い。問題 その2. 全ステージ300ステージ ➡Inspector上からの調整は正直難しい。 CSV必要でやる事に決めた。 27
  28. 28. むしアミ! ∼パフォーマンスチューニング∼問題 その1. やっぱり遅い。➡今回もキャラクターはSkinned Mesh Renderer使っています。Physicsは衝突はさせていませんが、Triggerには使ったりしています。 ➡Physicsの計算をはしょったりFPSを落としたりできない!➡やられやポイント取得などのエフェクトの拡大縮小などをモデルとアニメーションが行われいたためそこでのDrawCallをバッチングさせるために、テクスチャのOffsetアニメーションなどで実装。演出もEzGUIで実装。 ➡Draw Callのバッチングが効くケースと効かないケースを しっかり把握しておく事。➡全体的に敵の流れが良くなるように、ゲームのバランスを調整。➡結果として真っ向勝負せず、パフォーマンスを改善。 28
  29. 29. むしアミ! ∼ステージ調整∼問題 その2. 全ステージ300ステージ ➡Inspector上からの調整は誤入力などがでそうで、正直怖い。 CSV必要でやる事に決めた。 ➡Export / Import スクリプトをEditorスクリプトで調整。 パフォーマンスを考慮して、EditorスクリプトからPrefabを書き換え る形に。 ➡Excelでグラフ化しながら大雑把に調整。 ➡300ステージでのパラメータ入力にあたり、難易度にゆらぎ・誤入力 が出ないように、Editorスクリプト上でバリデーションを実装。 Inspectorでの配列操作は100くらいまでが上限かと、、 それ以上のパラメーターはCSVとの連携が可視化の意味でオススメ! 29
  30. 30. あとは、小技とEzGUITipsを紹介 30
  31. 31. EzGUI Localize Tips! その1 フォントスプライトシートの出力でMac上であれば、 BMGlyphかGlyphDesignerで。 両方ともEzGUI用のExport設定あり。 文字の装飾はGlyphDesignerが奇麗に出せるので、こちらを推奨します! 31
  32. 32. EzGUI Localize Tips! その2GUIのスプライトシートは無圧縮16bit画像につき、メモリの圧迫サイズが大きいのでシステム言語環境に応じて初期化のタイミングで、Resources.LoadしてMaterialのMainTextureを変更する。言語間の共通のUIはそのまま共有。 日本語版のGUIリソース 英語版のGUIリソース 32
  33. 33. Android メモリ小技Androidの実行メモリの使用量につき、OSによりActivityが終了させられる事があります。メモリの使用量は、AdmobなどNativeまわりもう考慮してUnity単体で100MB以下までおさえる必要があります。端末のタスクマネージャーに表示される数字については、端末毎に異なった数字がかえってくるので、あてにはなりません。(Galaxy S2とか)adb shell top | grep package nameadbを使えば、正しいメモリ使用量が取得できますので、adbを使って実際のメモリの使用量として参考にしてください。 33
  34. 34. Android Native連携 小技プロジェクト序盤ではUnityから直接APKを作っていて問題ありませんが、後半では、Native側の連携が重要となり、なおかつ実機テストが必要となります。いちいちEclipseを通してのパッケージングは面倒くさいので、UnityBuild後にAnt でコマンドラインビルドをするようにしました。UNITY_PROJECT=~/Documents/unity/title/ECLIPSE_PROJECT=~/Documents/Eclipse/title/cp -r ${UNITY_PROJECT}/Temp/StagingArea/assets ${ECLIPSE_PROJECT}ant cleanant releaseUnity3.5では、Temp以下のコピーがうまく動かない問題がありましたが、Unity3.5.1ではOK。InAppBillingのテストなど署名つきビルドをする時には、署名のパスフレーズもBuild.propertiesに書いておけば入力しないで済むので超便利! 34
  35. 35. まとめ1.パフォーマンスがらみは直面から勝負するよりも分析。またSCMで必ずさかのぼれるようにして、原因の差分を比べる。Profiler, Instruments,OpenGL ES Perfomance Detective, adbを駆使。2.特定の問題の出やすい端末を把握しておく事が必要。IS03, Arrows X , Infobar , Galaxy , iPhone3GS ... more3.UnityのEditorScriptはエクスポート・インポートだけでなく、パラメーターとの調整にもバリデーションにも使える。汎用性の高いものを目指しがちだけど、プロジェクト毎でも起こす価値がある。SerializeしてInspectorでの調整は便利だけど、数の多い配列はCSVも考慮して。4.ゲームとしての面白みにこだわるための近道は常に確保。AssetStoreは眺めるだけで楽しいもんです。5.ツールを作るのはプログラマ的に、超楽しい。 35
  36. 36. クマベアチームはメンバー募集中です。スマートフォンのゲーム好きなプログラマーの人スマートフォンで勝負したい3Dモデラーの人スマートフォンUIにこだわりあるデザイナーの人 WELCOME! 36
  37. 37. 本日はお忙しい中ご来場いただき 誠にありがとうございました。 See you next time! 37
  • rrRamses

    Dec. 23, 2020
  • ShunsukeOhba

    Apr. 27, 2020
  • onedannitori

    May. 30, 2017
  • takashiohsaka

    Feb. 19, 2017
  • tomofusa

    Jul. 11, 2016
  • ShigekiTomisawa

    Jun. 11, 2016
  • dishizuka

    Dec. 22, 2015
  • yuresun

    Dec. 17, 2015
  • ssuser37fd51

    Nov. 30, 2015
  • pochyy

    Aug. 19, 2015
  • ssuser7b0ff9

    Jul. 24, 2015
  • TakashiIkemori

    Jun. 25, 2015
  • ssuserb0a561

    Jun. 12, 2015
  • yoshifuji

    Jun. 2, 2015
  • peroon

    May. 7, 2015
  • junaramaki910

    Apr. 22, 2015
  • Collonville

    Apr. 4, 2015
  • akasha_chronik

    Mar. 31, 2015
  • TomiutiKouta

    Mar. 4, 2015
  • Fogcatlab

    Feb. 24, 2015

"COLOPL UnityNight" (2012/04/13開催) の発表資料です。 Unityを用いたスマートフォン向けゲーム開発の体制や、"Kuma the Bear"ブランドで発表している各ゲームの制作時の最適化について説明させていただきました。

Vues

Nombre de vues

75 443

Sur Slideshare

0

À partir des intégrations

0

Nombre d'intégrations

28 367

Actions

Téléchargements

0

Partages

0

Commentaires

0

Mentions J'aime

109

×