When the PS3 launched I would often see articles talking about how difficult writing efficient code for the PS3 is. At the time I was working on office productivity software and had no experience with the cell, however it never felt right that so many developers would say that their games are sub-par because the architecture is too difficult. After more than 4 years I would expect most people to have adapted and to understand how to exploit the cell, but, for whatever reason, I still see people talking about how hard the PS3 is to make a game on.
After a conversation I had the other day, I tried to figure out what the big complaints about the PS3 really are. From what I can find the most common fears come from the fact that to efficiently use the cell you are forced to think in a multithreaded manner, while the other commonly cited complaint is about the split memory architecture. Every architecture is going multithreaded so this is not something that should shock any programmer, while a split memory architecture can cause some problems but I don’t see it being a major roadblock to development.
Those complaints are at least rational. I recently had someone claim that the PS3 is harder to program for because it “requires so much more code because you have to DMA from main memory and be careful about memory alignment in LS.” I’m not sure where this comes from. Clearly you need to design your code for the architecture, but to specifically say that the code size is significantly increased because of DMAs and alignment is just silly. Doing a DMA clearly doesn’t take an excessive amount of code, and memory alignment is nothing new. Sure most compilers will take care of alignment for you but it’s something that an engineer should be familiar with and adding an __attribute__ ((aligned(n))) isn’t that much extra work.
After thinking about it I can think of some ways that making a game for the PS3 can be harder. If you are a PC centric developer who has an established code base it may be hard to find the time to rework core systems so they run efficiently on the SPU. I imagine it would be hard for the executives to justify spending more money to hire engineers specifically for the port, and to possibly delay one platform release to wait for a port that may be technically inferior. But let’s not kid ourselves, those problems come from the architecture being different and your code base not fitting well with it, it’s not because one is harder than another.
Ultimately I can’t imagine that these statements actually come from any of the engineers actually doing the work, and I know no one on this blog has ever complained about the PS3 being too hard. After all an engineers job is to solve problems, and frankly if you don’t enjoy exploring and exploiting the hardware then I don’t know why you want to be an engine programmer. Obviously digging into the hardware isn’t for everyone, some people just want to make really cool web apps and rely on the browser developers to deal with the hardware interaction. It may take use time to fully understand how to best use the pieces of the hardware that we touch, but that’s what we do.
People need to stop saying that one hardware is “harder” than another. There are differences of course, and I won’t fault anyone for saying that one is more expensive to develop for than the other, or to say that porting from one to the other can be difficult, but ultimately it’s just another piece of hardware we get to play with.