somewhatspecial

Unite 2018 Mirishita Presentation Notes

May 8th, 2018
558
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Please refer to the slides when reading these notes, otherwise they won't make any sense.
  2.  
  3. This is a (rather rough) TL of the Unite 2018 Mirishita presentation. It contains a lot (and I mean A LOT) of
  4. technical terms, so I apologize in advance - I'm no master of Unity.
  5.  
  6. I hope this helps you understand what went into the development process at least!
  7. _______________________________________________________________________________________________________________________________________
  8.  
  9. Nanto! Unite!
  10. What is this "AKANE Great Strategy" that supports Mirishita?
  11.  
  12. Presented by:
  13. Hayato Ikeda: Bandai Namco Studios/Lead Programmer
  14. Masaki Katou: Bandai Namco Studios/Programmer
  15.  
  16. - Hayato Ikeda:
  17. - Entered Bamco in 1996 as a hardware engineer
  18. - In 2003, became a programmer for mobile apps
  19. - Is the client engineer for Mirishita, manages version control via Perforce
  20. - Is a Noriko, JuliaP
  21.  
  22. - What is Mirishita?
  23. - iDOLM@STER Million Live! Theater Days: A Bandai Namco Entertainment Android/iOS Idol Live and Produce Game, aka Mirishita
  24.  
  25. - Live Information
  26.  
  27. - At release
  28. - 5 idols on stage dancing together
  29. - Can change positions and outfits at will
  30. - 5 people have specific motions when dancing to a song (formation)
  31. - 51 characters with different vocal parts for certain songs
  32. - Special appeal (with a new motion) during Lives
  33. - During game's lifetime
  34. - Lives with 4, 3 and 2 people singing and dancing
  35. - 52 characters with different vocal parts for certain songs
  36. - Songs with transformations in them
  37. - Latest addtion
  38. - Songs with 13 idols on stage
  39.  
  40. - Model data
  41. - Each model is made of 10,000 polygons (1,500 for face, 3,000 for hair, 5,500 for body)
  42. - Costume textures are one 1024x1024 page
  43. - Facial expressions are made via blend shapes.
  44. - Stage data
  45. - Each stage is made of about 15,000 polygons (10,000 for the stage, 5,000 for the performance effects)
  46. - Stage textures are two 1024x1024 pages
  47. - The audience's concert lights are made of 1 mesh, making graphical load light.
  48.  
  49. - Post-effects and resolution
  50. - Depth of Field (DoF)
  51. - Bloom
  52. - Blur
  53. - Flare
  54. - Unity Image Effects, while high-quality, are too heavy for mobile, so they created their own lightweight, independent shaders
  55. - Uses an intermediary buffer to save memory
  56. - Realizes DoF by creating depth textures while rendering without passing
  57. - Resolution: 1280x720
  58. - Low resolution + MSAA (multisample antialiasing)
  59. - Created low resolution mode for devices with low GPU output, but heavily scrutinised due to jagged edges
  60. - While it does increase GPU load, in scenes with large draw distances the effects of low-res are higher, so there is a merit
  61.  
  62. - Timing sheet (for Stage events)
  63. - Timeline tool is a new tool for the Home version of Unity
  64. - Used to stage the Live scenes
  65. - Continuously improved with input from the Game Designer and Visual Artist
  66. - Complete control over camera, character positions, character expressions, stage movements, concert lights
  67. - 2 kinds, for Camera and Stage Direction
  68.  
  69. - Songs with seperate vocals
  70. - For home iM@S titles, there is a function where the vocals of a song change with the idol in a specific position (for this game, eg. Thank You, Welcome, etc.)
  71. - With 52 idols and 5-man units, number of permutations is 52P5 (311,875,200 total). With each song being about 2.5 minutes, it would require 46.5 billion seconds to listen to them all (that's about 1474 years, or 538194 days!)
  72. - Sound tools: CRIWARE ADX2
  73. - To accommodate this, each vocal file is given its own channel, and different vocals are achieved by muting the other channels.
  74.  
  75. - Development schedule
  76. - Apr 2016: Engineer and Technical Artist implement a 3D Live prototype build
  77. - Jun 2016: Version α1, implemented Title Screen -> Theater Menu -> Story -> Live functions
  78. - Nov 2016: Version α2, implemented all necessary functions
  79. - Jan 2017: Began Optimization Project
  80. - Apr 2017: Version β1, began use of AssetBundle/Server communication
  81. - May 2017: Version β2, began review of the entire game
  82. - 26th Jun, 2017: Last minute Unity version update, submitted app to the store
  83. - 28th Jun, 2017: Started distribution
  84. - 29th Jun, 2017: Began service
  85.  
  86. - Mobile development process
  87. - Developed on the latest model of iPhone, worked fine
  88. - Problem: does not work correctly on iPhone 5s, Android
  89. - Since it cannot be released without dealing with these issues, independent from the development project, the Optimization Project was set up.
  90.  
  91. - "AKANE Great Strategy"
  92. - Optimization project to make Mirishita work on Android
  93. - Started around the end of development cycle, with a seperate line from the development team (a special team)
  94. - Codenamed "AKANE Great Strategy"
  95. - Android Kousaku-ka And NativE-ka Great Strategy (Android Work And Native Strategy)
  96. - AKANE consists of:
  97. - 2D Drawing Bench
  98. - 2D Drawing Lightweight Memo
  99. - Getting POV of the in-house team
  100. - AKANE Great Strategy/Is String.StartsWith too slow?
  101. - AKANE Great Strategy/Latest (6/19) Live Processing Load
  102. - AKANE Great Strategy/Character Motion Capacity Reduction
  103. - AKANE Great Strategy/Theater, Mid-Commu Debug Button
  104. - AKANE Great Strategy/Testing Benchmark Data
  105. - AKANE Great Strategy/Model, Bone Investigation
  106. - AKANE Great Strategy/Live UI and Improvements
  107. - AKANE Great Strategy/Increasing Live UI speed
  108. - AKANE Great Strategy/Mid-Live Debug Button
  109. - AKANE Great Strategy/Reducing Load Times
  110. - AKANE Great Strategy/Verifying Data Items in the List
  111. - AKANE Great Strategy/Independent Application of Animation System
  112. - AKANE Great Strategy/Background Effect List
  113. - AKANE Great Strategy Minutes
  114. - AKANE Great Strategy Weekly Report
  115. - Summary of other Android models
  116. - Android model trends
  117. - Review version summary
  118. - Criteria for small loads on characters
  119. - Screenshots
  120. - Questions for those in other professions
  121. - Theater・ADV Analysis page
  122. - Summary of procession load of each game part
  123. - Regarding the settings of each Rendering Mode
  124. - Measurement results (XperiaZ4)
  125. - Regarding how to read time measurement
  126. - Load Countermeasure Information
  127.  
  128. - "AKANE Great Strategy" Approach
  129. - Review project settings
  130. - Speeding up 3D rendering
  131. - Have to look at CPU and GPU to measure efficiency
  132. - Speeding up 2D rendering
  133. - From Canvas to Sprite, cannot have useless rendering of transparent parts, image atlases, etc.
  134. - Scheme to prevent spikes
  135. - Must reduce GC (Garbage Collection)
  136.  
  137. - "AKANE Great Strategy" Goals
  138. - To reduce SetPassCall(DrawCall)
  139. - Reduce load of GPU
  140. - Introduce texture atlases (aka spritesheets)
  141. - Integration of Index buffers
  142. - Reduce adjustment times for Material Rendering
  143. - Reduce CPU load
  144. - Increase processing speed to deal with shaking objects
  145. - Processing threads (will not work if CPU does not work)
  146. - Optimizing memory
  147. - Any scheme to ensure no GC?
  148. - In the end, managed to get within 16.6666....ms of 60FPS.
  149.  
  150. - "AKANE Great Strategy" Policy
  151. - Do not reduce visual quality
  152. - Make sure it can work on many models (draw settings)
  153. - Must do your best with the engineers until the final moments
  154. - "No post effects...shaking objects...review LoD...Frame skips...reducing render resolution...reduce number of Bone influences..."
  155.  
  156. - Profile
  157. - Rough CPU processing can be seen with UnityProfiler
  158. - GPU is analysed with SnapdragonProfiler, distributed by Qualcomm
  159. - Preparing analysing environment, digitize and compare
  160. - Cannot measure anything worth if the optimization is blindly implemented, must profile and make comparisons with every change
  161. - Major changes will not affect much, but minor changes have a big influence. It is important to monitor and analyze the environment every time.
  162. - Must know the habits of each terminal
  163. - Performance and operational habits depends on the model, must have the mindset that everything that happens is an everyday occurence
  164. - Must understand system clock to understand heat generation
  165.  
  166. - Improvement Idea
  167. - Various ideas for "AKANE Great Strategy" were put in a list.
  168. - If we can reduce even by a few micro-seconds, it is worth a try
  169. - Important not to aim for victory, but to dare to try
  170. - May work out for different things!
  171. - Must try with your hands, not just with your head
  172.  
  173. - Implementation and testing
  174. - P: Prioritize ideas for optimization
  175. - D: Implement
  176. - C: Build and Measure (Profile)
  177. - A: Come up with further ideas
  178. - ※Plan → Do → Check → Act
  179. - For easier testing, have the ability to turn ON/OFF optimization data
  180. - Easier for the visual artist to check
  181. - Test with heavy (load-wise) characters (5 of them)
  182.  
  183. - Regarding Unity
  184. - Despite knowing how to program a game engine, many things I still need to learn
  185. - Just learnt how to perform multi-thread
  186. - Won't do things that cannot be implemented in a short time
  187. - Also, many Unity functions to deal with
  188. - Unite's forum videos, Unity tutorials were very useful
  189. - Also used Unity Forum and Unity Issue Tracker
  190. - Cannot update Unity after release, so had to be careful with that
  191. - Tried to use the latest versions as much as possible during development
  192.  
  193. - Daily improvements
  194. - Optimization still going on even after release!
  195. - Post-effect repairs
  196. - Material integration
  197. - Stage direction optimizations
  198. - Reducing data size by implementing an independent animation system
  199. - Reducing GC
  200. - Profile is done periodically due to the implementation of these new functions
  201.  
  202. - 13 Man Live
  203. - Around the end of 2017, there were discussions: "Can we have more that 5 people in a Live?"
  204. - Since they had prepared testing tools for 5 or more characters, they performed a project that could have 15 people on stage at once.
  205. - Due to this, 13-Man implementation was created within 3 months
  206. - No special memory reduction or load reduction functions for 13 Man
  207. - The accumulation of the above optimizations
  208.  
  209. END OF FIRST HALF
  210. _______________________________________________________________________________________________________________________________________
  211. SECOND HALF (Refer to the slides - this part gets quite confusing even with them)
  212.  
  213. - Profile: Masaki Katou
  214. - Visual Programmer
  215. - Works with motions, graphics. It is not as cool as you think. (w)
  216.  
  217. - Mission:
  218. - Reduce the number of draw calls for characters
  219. - Do not "rebuild assets" without changing the appearance
  220.  
  221. - REPORT
  222. - Integration of submesh
  223. - Reduced number of draw call for a character from 25 to 17
  224. - Command Buffer
  225. - Can ensure fine control of model rendering
  226.  
  227. - What a character model consists of
  228. - Costume, Sequins, Skin, Character Color (refer to slides for illustration)
  229. - Shader:
  230. - Pass 1: Actual form
  231. - Pass 2: Border outlines
  232. - Border outlines
  233. - Render with inverted polygons
  234. - Expand using vertex shaders
  235. - Share objects with meshes
  236.  
  237. - Submesh obstacles
  238. - Draw call - certain objects don't make it past the submesh wall!
  239.  
  240. - How rendering works
  241. - Vertex buffer
  242. - Vertex position, UV
  243. - Index buffer
  244. - Order to join vertices
  245. - Materials necessary for rendering
  246. - Material
  247. - (Omitted for now)
  248.  
  249. - Mesh Class - System Method
  250. - Submesh designation
  251. - Need: SetIndices(), Index, Topology
  252. - Don't need: SetVertices(), SetNormals(), SetTangents(), SetUVs(), SetColors(), boneWeights(), Position, UV, Tangent, Normal vector, Color, Influence
  253. - Vertice-related methods do not require submesh designation (Note: Unity 5.6 used)
  254.  
  255. - "Mesh" and "Submesh"?
  256. - Go look up Unity mesh and submesh lol
  257.  
  258. - Native Implementation
  259. - Ensure only 1 index buffer
  260. - Render part or whole based on index range specifications
  261.  
  262. - Is it OK to add SubMesh?
  263. - Combine all submeshes into 1
  264.  
  265. - Testing
  266. - Adding submeshes - no changes
  267. - Expand range of materials, add materials with outlines - Comes out properly!
  268.  
  269. - Result
  270. - 25 ->17
  271. - Not really decreased by much?
  272. - 5 people (now 13!)
  273.  
  274. - Before Optimization, 44 cycles
  275. - After, 36 cycles (reduced by 8)
  276.  
  277. - Next goal
  278. - Material LoD, combine Costume and sequins, reduce 1 draw cycle
  279. - Use Command Buffer, render submesh unit
  280. - CommandBuffer.DrawRenderer
  281.  
  282. - How to turn off SkinnedMeshRenderer rendering?
  283. - Wrong: Set enabled to false - won't stop until skinning
  284. - Correct: Leave Renderer.materials [] empty
  285. - Skinning and frustum culling occur
  286.  
  287. - Applications:
  288. - Ensure submesh units are visible
  289. - Wire on shade (for debug purposes)
  290.  
  291. - Optimization concept - "AKANE Great Strategy"
  292. - Realizing common rendering methods in Unity
  293. - Not enough to know Unity's specs, must know native implementation to speed up performance
  294. - Is Unity a "Black Box"? It's not "Mystery Technology"
  295.  
  296. - Frequently Asked Question - Why the "AKANE Great Strategy"?
  297. - Began accelerating development around New Year's 2017
  298. - 2017 Zodiac was the rooster (酉)
  299. - 西 ← 酉 → 茜(Akane)
  300. - Thus "AKANE Great Strategy" was named! (It's a lie~)
RAW Paste Data