First thing: I wish you'd say something about how manage parallel programming on 360, since you completely skipped those questions.
Trust me I do wish I had the time to write all these nice things.
If you can't afford to work for a few weeks on something that is going to save you months then someone took the wrong decision here. Sony makes mistakes, MS makes mistakes..and developers make mistakes too.
And it's great that your team had few nice chaps to sit down and design that system, and lucky for you you had 3+ years exclusive platform development.
?? I worked exclusively on PS3 for 19 months.
in 6 months we went from "the game barely compiles on PS3" to the first E3 demo.
The important thing about X360 and I'll repeat that again is that "It Just Works".
Sorry but I strongly disagree, expecially on the CPU side of things. Your junior programmer is not going to write code that just works, and if it does it will run like crap. No amount of prefetching or unrolling will make turn some O(N^N) implementation into a O(logN) one
And that takes very little time because of the nature of unified memory address space. [edit - and by that I mean that the multiple cores all see the same memory, can read and write to it within the same address space, the only "problem" being you need to protect(syncronize) any shared resources]
You can do exactly the same on SPUs as well, if you want to. Just cause a memory access to external memory is not direct it doesn't mean it can't be done (abstract it!)
Moreover if you plan for it since the beginning you will greatly improve performance on BOTH platforms.
I wanna remind you that on B3D we were discussing this stuff 3 years ago when we knew nothing about SDKs and stuff like that, and we already knew what kind of problems we were going to meet with these new in order multicore CPUs.
Were we fortune tellers? I don't think so.
On the contrary, on PS3, you need top engineers devoted just to get basic stuff off the ground, and you NEED to use SPUs to get decent performance out of RSX.
Emh? There are a few PS3 shipped games out there, globally praised for their graphics/3D engine, that strongly disagree with your opinion. (they don't use SPUs in exotic ways to speed up RSX)
Is it easier to extract performance from Xenos than RSX? You can bet on that!
Do you need to pull the most amazing tricks in the world to have good performance
on RSX? Hell no!
And let me go back to the topic of SPU programming since I forgot to mention few aspects of it. The SPU has local address space so any pointers in your data have to be translated, DMAed etc, which is PITA.
I didn't know that spending 10 minutes to write a stupid function to generate a DMA transfer given start and end addresses is PITA. I guess we have different definition/vision of what our job is.
The memory is limited so you have to partition the problem.
Which is generally a good thing.
The code might not even fit initially, and you might not be able to run a debug version of the code.
Reduce your dataset in those cases, this is how I worked around this particular problem.
and now you have to find the SPU code in memory before it gets uploaded and set a break point there, very similar to VU programming back in the day.
Put a breakpoint explictely in the code and you're done.
A "HALT" on the SPU could mean anything
Sure, if you don't know what to do/where to look..
especially if it's inside a middleware SPU job.
So what do you do when some middleware code linked with no symbols crashes on 360? Do you blame MS?
It could be their bug, or yours, someone stomping the code or data, or it could be stack overflow. You get basically zero tolerance for error. That is not what I call "It Just Works".
Again, this happens with any middleware on any platform.
Sony with all their open source/Linux fundamentals, how can they screw it up so bad that they have worse offering than MS?
Personally I don't think Sony screwed up on the tools level, they're doing a much better job now than what they did during the PS2 era and you can't expect big companies to change overnight.
Maybe their biggest mistake was not to offer an easy path for multiplatform developers, a kind of best practices manual to make your code run well on PS3 and the 'other platforms'.