Parallel programming when you do it like this is more difficult. And anything that makes the game development process more difficult is not a terribly good thing. So the decision that has to be made there, is the performance benefit you get out of the this worth the extra development time and there's sort of an inclination to believe that, and there's some truth to it, Sony sort of takes this position where, "ok, so it's going to be difficult, maybe it's going to suck to do this but the really good game developers will just suck it up and make it work." And there's some truth to that. There will be the developers that go ahead and have a miserable time and do get good performance out of some of these multi-core approaches - and Cell is worse than others in some respects here. But I do somewhat question whether we might have been better off in this generation having an OoO main processor rather than splitting it all up into these multicore processors systems on here. It's probably a good thing for us to be getting with the programme now. The first generation games for both platforms will not be anywhere close to taking advantage of all this extra capability. But maybe by the time the next generation consoles roll around, the developers will be a little bit more comfortable with all this and be able to get more benefit out of it. But it's not a problem that I actually think is going to have a solution, I think it's going to stay hard. I don't think there's going to be a silver bullet for parallel programming. There have been a lot of very smart people researchers and so on that have been working this problem for 20 years,and it doesn't really look any more promising than it was before.
So that was one thing that I was pretty surprised when talking to some of the IBM developers of the Cell processor on there. I think that they made to some degree a misstep in their analysis of the performance would actually be good for where one of them explicitly said, basically "now that graphics is essentially done, what we have to be using this is for physics and AI", Those are the 2 poster childs for how we're going to use more CPU power. But the contention that graphics is essentially done, I really think is way off base. First of all, you can just look at it from the standpoint of "are we delivering everything a graphics designer could possibly want to put into a game, with as high a quality as they could possibly want?" And the answer is no. We'd like to be able to do Lord of the Rings quality rendering realtime. We've got orders of magnitude performance that we can actually soak up in doing all of this. There are, what I'm finding personally in my development now is that the interfaces that we've got to the hardware, the level of programmability that we've got, you can do really pretty close to whatever you want as a graphics programmer on there but what you find moreso now than before is that you get a clever idea for a graphics algorithm that will look really awesome and make a cool new feature for a game, you can go ahead and code it up and make it work, make it run on
the graphics hardware, but ultimately too often I'm finding that well this works great but
it's half the speed that it needs to be or a quarter of the speed, or I start thinking about
something "well, this would be really great but that's going to be one tenth the speed of
what we'd really like to have there". So I'm looking forward to another order of magnitude or two in graphics performance because I'm absolutely confident we can use it. We can actually suck that performance up and do something that will deliver a better experience for people there.
Which if you say, "well here's 8 cores or later it's going to be 64 cores or whatever,"do some physics with this that's going to make a game better"", or even worst "do some AI that'll make the game better". The problem with those, both of those,is that both fields have been much more bleeding edge than graphics has been, and do some degree that's
exciting where people in the games industry are doing very much cutting edge work in many cases, it is THE industrial application for alot of that research that goes on, but it's been tough to actually sit down and think how we'll turn this into a real benefit for the game. Let's go ahead, how do we use this however many gigaflops of processing performance to try and do some clever AI that you now, winds up using it fruitfully. And especially in AI, it's one of those cases where most of the stuff that happens in especially single player games is much more of a director's view of things. It's not a matter of getting your enemies to think for themselves, it's a matter of getting them to do what the director wants and putting the player in a situation you are envisaging in the game. Multiplayer focussed games do have much more of a case - you do want better bot intelligence, which is more of a classic AI problem, but the bulk of the games still being single player, it's not at all clear how you use incredible amounts of processing power to make a character do something that's going to make the gameplay experience better, I mean i keep coming back to examples from the really early days of Doom, where we would have characters that are doing this incredibly crude logic that fits inside a page of C code or something, and characters are just kind of bobbing around doing stuff, and you get people playing the game that are believing that they have devious plans and they're sneaking up on you and they're lying in wait and this is all just people taking these minor minor cues and incorporating them in their heads into what they think is happening in the game. And the sad things is, you could write incredibly complex code that does have monsters sneaking up on you, hiding behind corners, and it's not at all clear that that makes the gameplay better with some of these sort of happenstance things that happen with emergent behaviour. So until you get into cases where you think of games like the sims or MMO games where you really do what these sort of autonomous agent AIs running around doing
things, but then that's not really even a client problem, that's more of a server problem,
and that's not really where the multicore consumer cpus are going to be a big help.
Now, physics is sort of the other poster child of what we're going to do with all this CPU power, and there's some truth to that, certainly some of things we've been doing on CPUs for the physics stuff, it's gotten a lot more intensive on the CPU, where we find that things like ragdoll physics and all these different objects moving around, which is one of these "raise the bar" issues, every game now has to do this and it takes a lot of power. And it makes balancing some of the game things more difficult. When we're trying to crunch things to get our performance up, because it's not ..the problem with physics is, it's not scaleable with levels of detail in the way graphics are. Fundamentally when you're rendering an image of a scene, you don't have to render everything to the same level. It'd be like forward texture mapping which some old systems did manage to do but essentially what we have in graphics is a nice situation where there's a large number of techniques that we can do that we can fall off and degrade gracefully. Physics doesn't give you that situation in a general case. If you're trying to do physical objects that affect gameplay you need to simulate pretty much all of them all the time. You can't have cases where you start knocking some things over and you turn your back on it, and you stop updating the physics or even drop to some lower fidelity where you get situations where you know that if you hit this and turn around and run away, they'll land in a certain way, and if you watch them they'll land in a different way. And that's a bad thing for game development. And this problem is fairly fundamental. If you try to use physics for a simulation that's going to impact the gameplay, things that are going to block passage and things like that, it's difficult to see how we're going to be able to add a level of richness to the physical simulation world that we have for graphics without adding a whole lot more processing power. And it tends to reduce the robustness of the game, and bring on some other problems. So what winds up happening in the demos and things you'll tend to see on PS3 and the physics accelerator hardware. You'll wind up seeing a lot of stuff that effectively are non-interactive physics, this is the safe robust thing to do but it's a little bit disappointing when people think about "i want to have this physical simulation of the world". It makes good graphics when you can do things like, instead of the smoke clouds have the same clip into the floor that we've seen for ages on things, if you get smoke that pours around all the obstructions, if you get liquid water that actually splashes and bounces out of pools and reflects on the ground, this is neat stuff but it remains kind of non-core to the game experience. An argument can be made that we've essentially done that with graphics, where all of it is polish on top of a core game, and that's probably what will happen with the physics, but I don't expect any really radical changes in the gameplay experience from this. And i'm not really a physics simulation guy so that's one of those things were a lot of people are like damn this software for making us spend all this extra time on graphics, I'm one of those people who's like "damn all this software for making us spend all this extra time on here". But I realise things like the basic boxes falling down, knocking things off, bouncing around the world, ragdolls, that's all good stuff for the games, but I do think it's a mistake for people to try and go overboard and try and do a real simulation of the world, because it's a really hard problem, and you're not going to give really that much real benefit to the actual gameplay on there. You'll tend to make a game that may be fragile, may be slow, and you'd better have done some really really neat things with your physics to make it worth all of that pain and suffering on there. And I know there are going to be some people that are looking at the processing stuff with the cells and the multicore stuff and saying "well, this is what we've gotta do, the power is there, we should try and use it for this", but I think that we're probably going to be better served trying to just make sure all of the gameplay elements that we want to do, we can accomplish at a rapid rate, respectable low variance in a lot of ways. Personally I would rather see our next generation run at 60 frames per second on a console, rather than add a bunch more physics stuff. I actually don't think we'll make it, I think we will be 30fps on the consoles for most of what we're doing. Anyways, we're going to be soaking up a lot of CPU just for the normal housekeeping type of things we'll be doing.