There’s a very interesting interview with Tim Sweeney at Team Xbox. It’s quite old, so chances are you already read it, if not - do it now. The part that caught my eye is where Tim says that programming for multicore architectures is, just, hard. What’s more, from their experience it seems that in this generation, writing an engine system designed for multicores takes about double the effort as single threaded. It gets even worse with more exotic architectures like Cell. In his own words: “Whereas, some of the other hardware trends are even worse than that, like programming for Cell, we found, had a [five-times] productivity divisor. It’s five times harder and that really starts to hit’“. Those are scary numbers, really. It’s one of the reasons why we’re starting to see ~200+ people teams with 40-50 coders (Ubisoft isnt alone in this BTW, Paul Senzee reports that Madden had team of similar size).
On the other hand there are still many studios where bosses seem to think that developing multiplatform game is just a little bit harder than single platform. I guess they suspect it’s a matter of recompiling the engine or some other dirty “programming trick”. The thing is, even if you decide to “only” support PC, X360 and PS3 - those are 3 very different platforms with different coding philosophies. You can probably create an engine that will run on them, but that’s it. Run. As my friend put it (he deals with porting games to/from various platforms): “no one tried to code games for C=64 and Atari 65XE with the same engine, yet people try to do it with X360 and PS3”. Even platform differences aside, there’s multicore problem. If it’s hard for Epic coders, you can bet it’ll be hard for your company as well. It’s difficult to find programmers with experience in multithreaded/parallel programming. It requires a completely different mindset, whole set of additional issues to care about. It creates a whole new generation of bugs and moves debugging difficulty to another level. Of course, it becomes easier as you gather experience, most bugs can be solved by checking some usual suspects, but learning curve isnt particularly flat… Big teams are here to stay, at least for a while.
PS. Make sure to check out Insomniac’s SPU presentation for some more info about PS3 coding. SPU shaders are neat, they remind me a little bit of runtime compiled blitters I did a while ago, just 10x more insane…