The procedural planet tech demo looked great. What are some of the challenges in getting us to the point where players can actually land anywhere on Crusader?
TL;DRSean Tracy says the main challenges are dynamically loading physics per client for huge planets, rendering seamless scale from orbit to ground, syncing dynamic terrain over the network, and streaming landing zones without pop-in.
There are so many challenges. Wow. That's a pretty broad question. So I guess I'll pick a couple points that we're dealing with right now. One of the hardest things to deal with, obviously, is the physics of this. So not so much in terms of the scale, but... Okay. So the way physics really works within the game, you've got a bunch of render mesh, and then you've got a physical proxy, which is a way, way lower res representation of whatever you want to collide with. The reason it's got to be so much lower res is that you are doing so many more calculations on that than you are on a render mesh or something like this. Eventually you'll just render it, but in physics we're interacting with it, we're shooting things at it, we're crashing into it, we're doing all kinds of different things. So the problem is with a planet of 10,000 kilometers or something like that, you cannot possibly load that entire physics mesh all the time. And even worse, even if you tried to do that, the sheer count of that, even if it was lower res, would be so high. So what we have to do is dynamically load this physics. And we've got to load it on a sort of a per-client basis, because typically on a server you'll actually load all your physics data all at once. You'll have it all just sitting there. You won't stream the physics in or out. It'll just be sitting there. And obviously we can't do this on a 10,000 kilometer planet that has mountains and hills and all sorts of different things. So that's one of the biggest challenges that we have, but we've already got it working, which is pretty neat to know. I don't know when we'll show that, but we've got something quite nice working for that. We'll calculate it on a per-client basis. So that was one of the biggest hurdles to actually making this playable for the players, because obviously if you don't have physics on a terrain, you fly right through it and it'll kind of ruin the whole experience. So that was one of the bigger ones.
On top of that, of course, is just the visuals of the planet itself. How does that look? And again, the scale is just insane. How does it look when you're 300,000 kilometers out from that planet? You've got to go from this planet just inheriting one pixel on the screen, to it taking up the entire screen, to it being like you are inside of a level. So being able to transition through the atmosphere, making that look hyper real, was really, really challenging.
How many LODs are involved in that?
It's actually way more complicated than that. And I wish I could say there was like six LODs or something like this. No, there are so many different levels of processing that happen on the way in. So sure, there's a bunch of LODs as you're approaching. But once you get in there, it is a dynamically tessellated object. So essentially what you're doing is you're only going to tessellate the objects that are really close to you, or the sectors even that are really close to you. And most game engines have a terrain system that works this way. Unreal has a, CryEngine has a base sort of terrain system that works on this dynamic amount of tessellation. The trick is to get that to convolve around a sphere, first of all. And then second of all, is to be able to synchronize this all over the network. And again, that's got to lend itself to physics. That's got to go across different clients. There's a lot of challenges when it comes to this.
And then maybe the last one that I'll talk about is the actual objects on the surface itself. Now, I'm not talking about procedural objects or trees and rocks and things like this. I mean landing zones. To give you an idea, Area 18, that level right now, we're talking four to six gigs of data within that level. So imagine flying up to one of these planets, which is pretty heavy by itself, and then also having to load that landing zone on the way in. To be able to stream that amount of data, you can absolutely do this, but can you do it seamless? Can you make it look like it's not just pop, pop, pop, pop, a bunch of objects sort of streaming in? That's a huge challenge. So that's something that we're working on on the engineering front with these things that Chris talks about on occasion called object containers and these sort of things. So we've got a very unique game where we basically have to be able to stream everything out and everything in at runtime. So it's a very, very challenging thing to do. Very few level loads, so you can't just sit there and load everything behind the scenes.
Challenging, but we have our plan in place, and it's starting to work.
Yes, absolutely. Carl Jones, our CEO here at CIG, we had a saying when we both used to work for Crytek, and that was: difficult takes a day and impossible takes a week. So this one is on the level of impossible, but we're absolutely going to achieve it.