Friday, February 1, 2008

Why PS3 Is Hard

I think there are a lot of misconceptions in the general gaming audience as to why it's so difficult to develop games on the playstation 3 versus the X Box 360 console. Generally, there is the concept that somehow the Cell architecture makes it very difficult to create PS3 games. This isn't really true. The Cell itself is a challenge to develop on, but it's not really much harder than creating a multithreaded engine that can fully utilize the 3 core X box 360 chip. The challenges are different, but not necessarily worse. The chip itself is insanely powerful and once you start to unlock the power, you can really do some cool stuff. However, the PS3 GPU, the RSX is actually not so good. It's slower at most things than the X box 360 GPU. That's probably the first thing that's tougher about the PS3. The GPU actually being slower than the X Box 360. A lot of the performance can be aided by clever use of the SPUs on the cell processor, but it's definitely something you do have to worry about on the PS3 that you don't have to worry about on the X Box 360. But even that's not so tough, developers have had situations like this before.

No, the real problem with the PS3 is the tools. And while it is Sony's fault, it's very difficult to blame them. Microsoft have given us an absolutely incredible, fantastic toolset for 2 console generations now. The fact that they make the development environment, debugger and compiler internally is a tremendous advantage. Not to mention their amazing APIs with fantastic documentation. Then you have other debugging tools like Pix and XBPerfView, and the lead becomes huge.

Sony, on the other hand doesn't have the tremendous software background that Microsoft has, so they don't control the development environment so perfectly, nor do they have a large team of engineers that they can just throw at any project. This leads to disjointed, poor tools. the compiler we use for PS3 development is GCC (the Gnu C++ Compiler), the debugger is SN Systems Pro DG debugger, the code editor we use is Visual studio. The compiler is incredibly slow, whereas on the X Box 360, a full compile of our game takes maybe 30 minutes, on PS3 it takes over an hour, and it completely pegs both of my cores at 100% utilization. Sony was kind enough to develop a network compilation solution similar to incredibuild, however (a definite lack from the Microsoft toolset). The fact that the debugger is disconnected from the game also leads to tons of minor frustration when I find a bug and want to edit code and can't type. The tools also frequently crash and are far more bug ridden than Microsoft's tools.

The debug hardware itself is actually better, 256 MB of debug RAM and Gigabit ethernet go a long way, but overall the software situation is just dire. And the hell of it is, it's gotten a LOT better from when the PS3 alpha and beta kits were being distributed.

This means that most cross-platform teams started working with X box 360, which is so much easier to start with. Most of us also assumed PS3 would be faster, so it'd be easier to port. Unfortunately, unlocking the power of the Cell is very difficult when starting from an X Box 360 codebase, whereas unlocking the multicore power of the X Box is relatively easy when starting from a cell-friendly architecture. So many teams basically did it backwards and then had to play catch-up on the PS3 with some truly miserable software tools. Now that the PS3's architecture is better understood and the tools are usable, if not fantastic, I think future games will start to have PS3 as the lead platform and then get ports to 360, and overall this will lead to higher quality PS3 games.