Your SlideShare is downloading. ×
[GREE Tech Talk #07] Unityカジュアルゲーム・ケーススタディ
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

[GREE Tech Talk #07] Unityカジュアルゲーム・ケーススタディ

25
views

Published on

「Unityカジュアルゲーム・ケーススタディ」稲森 亮介(グリー株式会社) …

「Unityカジュアルゲーム・ケーススタディ」稲森 亮介(グリー株式会社)

※GREE Tech Talk #07「Unity Performance Casual Talk」での登壇資料です。
http://techtalk.labs.gree.jp/07/

Published in: Technology

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

No Downloads
Views
Total Views
25
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Copyright © GREE, Inc. All Rights Reserved. カジュアルゲーム・ケーススタディ Unity グリー株式会社   稲森亮亮介
  • 2. Copyright © GREE, Inc. All Rights Reserved. ⾃自⼰己紹介 PC向けソーシャル ゲームのクライアン トプログラマ
  • 3. Copyright © GREE, Inc. All Rights Reserved. グリーにおけるUnity
  • 4. Copyright © GREE, Inc. All Rights Reserved. “Garage”からリリースされたプロダクト
  • 5. Copyright © GREE, Inc. All Rights Reserved. Amy the Starry Archer
  • 6. Copyright © GREE, Inc. All Rights Reserved. Amy the Starry Archer Demo
  • 7. Copyright © GREE, Inc. All Rights Reserved. Amy the Starry Archer 11⽉月 Director Programer 12⽉月 1⽉月 2⽉月 3⽉月 Programer (Junior) Artist Artist (3D Designer) (Effect Designer) (Sound Designer)
  • 8. Copyright © GREE, Inc. All Rights Reserved. • iOS7以降/デバイスはiPhone5以降 • Android4.0以降/デバイスは2年以内に発売された機種 • ただしQA結果で対応コストの高いデバイスは切る • タブレット端末も対応 対応デバイス
  • 9. Target Frame Rate
  • 10. Copyright © GREE, Inc. All Rights Reserved. “you don't gain that much from 60 fps and it doesn't look like the real thing.” - Nicolas Guérin(Ubisoft) http://www.techradar.com/news/gaming/viva-la-resoluci-n-assassin-s-creed-dev-thinks-industry-is-dropping-60-fps-standard-1268241 “基本75FPS以上” ※75Hzモードの場合 - CEDEC2014「Oculus Panel Discussion ∼Oculus Riftを用いたゲーム制作∼」 30 fps? 60 fps? or...?
  • 11. Copyright © GREE, Inc. All Rights Reserved. Target Frame Rate • iPhone5s∼、Nexus5∼等は60fpsをターゲットに • 最低ラインは30fps • 見た目だけじゃなくて、操作感度・難易度にも影響する為やや 注力 • Application.targetFramerateを動的に変える
  • 12. Copyright © GREE, Inc. All Rights Reserved.
  • 13. Copyright © GREE, Inc. All Rights Reserved. • Graphics • static batchingを有効に • dynamic batchingを有効にする為の諸条件を満たす • ピクセルライティングを使わない • そもそもリアルタイムライティングをなるべく減らす • テクスチャ圧縮 • アルファテスト、アルファブレンディング最小化 • Scripts • Object PoolingでInstantiate()を避ける • new を減らしてGCを減らす • Physics • Colliderはなるべくプリミティブコライダを組み合わせる • fixedDeltaTimeは可能な範囲で小さく 基本のおさらい
  • 14. Clouds
  • 15. Overdraw多過ぎ
  • 16. • 雲を空間埋める近景オブジェクトとして使うとやっかい • 基本半透明だし、ある程度細かくないと雲間を通り抜けるよう な表現をした時不自然 Overdraw多すぎ
  • 17. Overdrawを減らす
  • 18. Overdrawを減らす
  • 19. • 全体的に雲をカメラから遠くに置き、スプライトを⼤大きく   • 中景⽤用、遠景⽤用の雲に分け、遠景の雲はより⼤大きくして画⾯面を埋める before after Overdrawを減らす
  • 20. Copyright © GREE, Inc. All Rights Reserved. Sprites/Default • Sprite⽤用シェーダの不不要な処 理理を削ってみたりもしたもの の、フラグメントシェーダは 削れなかったのでほぼ効果無 し   • 検証環境:  SC-‐‑‒04E/Android4.4.2   • フラグメントシェーダのColor 処理理も削りたかったが、雲出 現時にフェードインさせる必 要があった為削れず
  • 21. Copyright © GREE, Inc. All Rights Reserved. まとめ • 雲のように、アルファブレンディングが発生するSprite(Particle 含む)で画面を埋める場合、Overdrawをいかに減らすか工夫す る • 絵がチープにならない範囲で1枚あたりのSpriteを大きくし、枚 数を減らす
  • 22. Lighting
  • 23. Copyright © GREE, Inc. All Rights Reserved. ライトマップを直接編集 • Asset Storeの3D背景素材は、ライ トマップに使われたLightが削除され ている事がある • 1からLightを配置し直すのはしんど いので、ライトマップテクスチャ自体 を調整すると楽
  • 24. Copyright © GREE, Inc. All Rights Reserved. ライトマップを直接編集 • exrファイル(OpenEXR)は一部の画 像編集ソフトで編集可能
  • 25. Copyright © GREE, Inc. All Rights Reserved. ライトマップテクスチャ解像度度 1024px(700KB)
  • 26. Copyright © GREE, Inc. All Rights Reserved. ライトマップテクスチャ解像度度 512px(170KB)
  • 27. Copyright © GREE, Inc. All Rights Reserved. ライトマップテクスチャ解像度度 256px(43KB)
  • 28. Copyright © GREE, Inc. All Rights Reserved. ライトマップテクスチャ解像度度 512px(170KB) 1024px(700KB) 256px(43KB)
  • 29. Copyright © GREE, Inc. All Rights Reserved. 動的にライトマップ解除 • lightmapIndexはLightmapSettings.lightmapsのインデックスだが、-‐‑‒1は ライトマップが割り当てられていない事を表す初期値   • どこかのバージョンで1バイトから2バイトに変更更された模様
  • 30. Copyright © GREE, Inc. All Rights Reserved. その他Lightingについて • 敵キャラクターは頂点ライティングのみ • 常に動きまわってて、しかも遠目なのでそこまで気にならない • でもまっすぐDirectional Lightを当てるだけだと安っぽいので、 Point Lightを複数使う • Light Probesは使わず • ライトマップは256px(43KB) 10枚前後 シーン数 • あんまり背景の一箇所を見つめる機会の無いゲームなので
  • 31. Scripting
  • 32. Copyright © GREE, Inc. All Rights Reserved. 検証
  • 33. Copyright © GREE, Inc. All Rights Reserved. 検証 • Galaxy S4(SC-04E)/Android4.4.2 • Unity4.6.2 • 10万回ループさせて計測 • if文のオーバヘッドは無視できる程度
  • 34. Copyright © GREE, Inc. All Rights Reserved. cachedTransform transform GetComponent(typeof(Transform)) 0.0009226 0.0003179 0.0001484 0.0005000 0.0002500 0.0007500 0.0010000 sec   (loop:100k)
  • 35. Copyright © GREE, Inc. All Rights Reserved. GetComponent(typeof(Transform)) Function Find Raycast 0.0005000 0.0002500 0.0007500 0.0010000 sec   (loop:100k) (無視できるレベル)
  • 36. Copyright © GREE, Inc. All Rights Reserved. Raycast() • 弓はUnityの衝突判定を使わず、 毎フレームRaycast()で処理 • RaycastAll系は、衝突する順に返 してくれるわけではない点に注意 • 当ゲームでは仕様上、都度RaycastHit[]を ソートで十分にワーク
  • 37. Copyright © GREE, Inc. All Rights Reserved. 検証 • 重たいとされるFind()系の中でも、FindObjectsOfType()が段 違いに重かった(7 10ms/call) • Raycast()はColliderの数、Find()系はヒエラルキーに影響され るはずなので、実際に使うScene上で実測してみる
  • 38. Enemy Move
  • 39. Copyright © GREE, Inc. All Rights Reserved. Enemy Move • 敵の動きが静的な場合ってどんな実装がメジャーなんでしょう ね? • とりあえず手付けで制御点置いてくような作業はしたくなかっ た • でも難易度設計上、少し複雑な動きもさせたい
  • 40. Copyright © GREE, Inc. All Rights Reserved. Enemy Move 線分(-‐‑‒5,0,10)(5,0,10) + = 中⼼心(5,0,10)の円 Player(Camera) Player(Camera) Player(Camera)
  • 41. Copyright © GREE, Inc. All Rights Reserved. Enemy Move    中⼼心(0,0,50),  半径10の円   +   中⼼心(0,0,10),  半径1の円   (θ:0→1080°) = Player(Camera)
  • 42. Copyright © GREE, Inc. All Rights Reserved. Enemy Move さらに⼩小さな円運動を合成 Player(Camera)
  • 43. Copyright © GREE, Inc. All Rights Reserved. Enemy Move
  • 44. Copyright © GREE, Inc. All Rights Reserved. Enemy Move 少数のパラメータで様々な動きを実現
  • 45. Copyright © GREE, Inc. All Rights Reserved. Enemy Move • フォーメーションを組んでるような動きは、同じ軌道の敵で出 現座標をずらせばOK • 同じ軌道と同じ出現位置で、出現時間をずらせば、1つの軌道上 を連なって動く表現 • 補助機能を用意して生産性は上がったが、直感的に設定しづら いので、慣れるのには時間がかかる
  • 46. Copyright © GREE, Inc. All Rights Reserved. Happy Tuning!
  • 47. Copyright © GREE, Inc. All Rights Reserved. インターネットを通じて、
 世界をより良良くする。
  • 48. Copyright © GREE, Inc. All Rights Reserved.