GDC'15: Multithreading the Entire Destiny Engine (Vid 59:34) (Destiny)
by INSANEdrive, ಥ_ಥ | f(ಠ‿↼)z | ᕕ( ᐛ )ᕗ| ¯\_(ツ)_/¯, Sunday, January 22, 2017, 21:21 (2812 days ago)
GDC'15: Multithreading the Entire Destiny Engine (Vid 59:34)
by Ragashingo , Official DBO Cryptarch, Monday, January 23, 2017, 01:21 (2812 days ago) @ INSANEdrive
Neat stuff.
A bit hard to explain if you don't know about the challenges of multithreading, but this seems to be an area where things went relatively well for Destiny's development. Basically, Bungie enforced rules on their programmers that made it much easier to prevent Destiny from crashing. These rules helped ensure the many different parts of the Destiny engine (AI, physics, graphics, networking, etc) and the many many things each part has to do to get a frame of gameplay up to your TV didn't mess with the data that other parts were currently using.
At the end there were a few other interesting GDC 2015 talks listed. I hope those get released as well!
GDC'15: Multithreading the Entire Destiny Engine (Vid 59:34)
by Pyromancy , discovering fire every week, Monday, January 23, 2017, 18:52 (2811 days ago) @ INSANEdrive
edited by Pyromancy, Monday, January 23, 2017, 19:39
Barry G. mentions a couple of times another talk by Natasha / Natalya Tatarchuk which would be great to watch.
---edit---
I think I found it here:
Natalya helped as far back as ODST and Reach and gave a fascinating talk a few years ago at GDC, SIGGRAPH, or one of the other conferences. I remember it as being one of the more interesting looks into the 'behind the scenes' of the "Tiger" graphics and lighting systems prior to Destiny game release. (I could be wrong on the timeline)
Never Forget #KickassTigerShaderBall
Someone over on Reddit pointed out that she just recently left Bungie to go work for Unity. Good for her! A bit of a bummer there though, Bungie is losing another brilliant mind.
Awesome. Will watch when I get home! :)
by Ragashingo , Official DBO Cryptarch, Monday, January 23, 2017, 20:59 (2811 days ago) @ Pyromancy
- No text -
GDC'15: Multithreading the Entire Destiny Engine (Vid 59:34)
by Ragashingo , Official DBO Cryptarch, Tuesday, January 24, 2017, 04:01 (2811 days ago) @ Pyromancy
Ok, again, very cool stuff!
This video has a lot about how Bungie split up the process of drawing all the stuff in each frame in order to make the most of the CPU and GPU resources each console had.
A few notes:
- For Reach, the 6 virtual CPUs (2 per real, physical CPU) of the Xbox 360 tended to not be utilized super well. One virtual CPU would constantly be busy with simulating the next frame's AI and physics and unit movement logic while the next virtual CPU would be mostly doing very little. Then you'd have one doing most of the work lining everything up for the GPU to do its graphical magic while virtual CPU 4 might be busy only half the time because all it was doing was processing sounds.
- This approach would not work for Destiny for a number of reasons. Destiny does a lot more (like matchmaking at all times). Destiny's worlds and graphics are a lot more complex. Etc. And, of course, the PS3 was even less powerful than the 360 that Reach ran on. And its power is split up differently (just two main CPUs and six really fast but really tiny SPUs that don't do a lot but do specific small tasks really quickly).
- Balancing the load of all of Destiny's systems across all the CPUs and GPUs of each console was absolutely essential. The PS3 and even the 360 would not be able to run Destiny at 30fps if it had been built in the same fashion as Reach was. Just looking at this one chart early on that shows roughly half the 360's CPU power being underutilized I'd guess that Destiny would not have run at 10fps if Bungie hadn't put in all the work it did to spilt up the total workload across all the CPU and GPU cores.
- They showed a graph later on where the PS3's two main CPUs and six SPUs were basically busy at all times during each game tick of Destiny. There were little gaps all over the place as one task ended and another began but there were no significant pockets of time (and remember, time here is measured in units at least as small as milliseconds if not smaller) that any given resource of the PS3 wasn't busy.
- One neat thing Bungie did was to spit up the game state from the information needed to draw each new frame. In Reach, they had to basically duplicate the state of the world (which includes everything like where you and all the other characters were, what each NPC's AI was doing, what the physics system was doing to each object and character, etc) and use one copy to render the current upcoming frame while another copy was used to start simulating how everything moved and changed in preparation to draw the next frame. But this meant that a lot of data that the GPU and the graphics system didn't care about (like what target an Elite was focused on) came a long for the ride.
- In Destiny, they split things up so that the graphics rendering system only had access to and only needed access to the information necessary to draw the world. So, it needs which direction you are looking and which enemies are in your field of view, but the graphic system does not have to worry about if a Vandal's AI is currently telling it to duck because a grenade landed nearby. By making this split they reduced the amount of information they had to duplicate from roughly 10MB to 1MB. That might not seem like much, but when every CPU cycle and every bit of memory is important, a 10x reduction in the memory use of a costly part of the rendering system is a very big deal.
Once again, like the other video in this thread, while it seems like Bungie got too clever with their in house development tools and that might have stolen years of development time away from Destiny, it appears that they made some big, deep architectural improvements to the way Destiny's engine worked that were very impressive and that allowed it to perform extremely well even on the last gen consoles.
GDC'15: Multithreading the Entire Destiny Engine (Vid 59:34)
by Cody Miller , Music of the Spheres - Never Forgot, Tuesday, January 24, 2017, 04:16 (2811 days ago) @ Ragashingo
I am waiting for Des2ny to fix all of the problems and utilize the current gen machines even more. It could be amazing.