izaaz101 said: crumas2 said: MikeB said: The PS3 isn't that hard to program for, it's much more easier to code for than for the PS2. However most often porting 360 games to the PS3 is hard. The best approach is developing for the PS3 first and then port the game to the 360, this will usually result in a better 360 version as well. With regard to legacy game engines the major roadblock is mainly breaking up the engine to be suitable for running on the SPUs. Building a new engine from scratch isn't that hard, you can make all the right design decisions from the start and this won't hinder cross development to other platforms, actually this should make things more efficient and powerful for other systems as well. |
I've been programming for 27 years and I've *never* seen a situation where developing software for one platform then porting it to another results in a better user experience from the ported version as opposed to developing directly on the latter platform. How is this possible? |
Yeah, I don't really get that either. If you make a 360 game, and have it optimized for the 360, I don't see how a port from a ps3 version will be better. A 360 port may be better quality than a ps3 port, but a lead 360 cannot be worse than a 360 port. |
This because the SPUs require you to design your code efficiently and well structured, the CPUs aren't that different with regard to running well optimed code. Once you have a PS3 with the YDL6 installed do some coding. It's not hard, but you will be able to spot inefficiencies easily and this is crucial for the SPUs.
Some quotes from developers:
Insomiac Games:
"Conclusions
* It's not that complicated.
* Good data and good design works well on the SPUs (and will work well anywhere)
- Sometimes you can get away with bad design and bad data on other platforms
-...for now. Bad design will not survive this generation.
*Lots of opportunities for optimization."
http://www.insomniacgames.com/tech/articles/0208/files/insomniac_spu_programming_gdc08.ppt
Article being discussed here at Beyond3D:
http://forum.beyond3d.com/showthread.php?t=47057
A PC/360 games dev responded:
"Regardless of managed memory or cached memory, the concepts and methods Mike has presented is highly portable. In the case of cached memory, that method results in optimized cache locality and cache utilization (something extremely important when multiple threads are sharing L1 on a single core, and multiple cores are sharing L2), and a predictable way to optimally prefetch. Good data locality, minimal sync points, branch elimination, and vectorization are all required to be able to extract great performance out of the 360 as well.""
Sony finally made a statement with regard to this as well, something I have been saying for a long time:
"Third party publishers and developers are moving away from using Xbox 360 as their primary development platform. They understand that developing on PlayStation 3 first makes more sense and, in fact, will make the Xbox 360 version look better."
Nostromo (Ninja Theory) developer at NeoGAF:
"Using PS3 as a 'lead platform' is the right thing to do if you are going to make a game that has to run on 360 and PS3. The reason is very simple: on PS3 designing your data structure in the proper way is paramount to achieve decent performance (and to scale up..), while your PS3 friendly data will be also 360 friendly data in the vast majority of cases.
This is a big win cause you will definitely be able to get the most from BOTH platforms."
Another multi-platform games developer posting at Beyond3D (admitted their initial games were just "quick & dirty ports from 360, still doing a game on 360 first but should change in the future):
"We all agree given the time we'd like to architect for the SPU's first then work back... giving us cache-friendly algorithms by design "
Note SPU friendly code is cache friendly on the PC/360.
Some quotes from a dev working on Tomb Raider Underworld (from E-mpire forums):
"asset-wise 360 was around first, so we made stuff keeping the 360 in mind first."
"Well, that all depends on your definition. Writing code optimized for the PS3 and using threading policies that are suited the SPUs is a given, because not doing so would not be acceptable at all. All our multithreading is done on PS3 first without exception, and other platforms emulate SPURS."
"Secondly, the matters of multithreading policies, the whole job queue architecture, encapsulation of jobs and their corresponding data packets, etc. that work on the PS3 are indeed more than applicable of the 360/PC. And as I've mentioned before, they work better than anything and everything that Microsoft recommends (so far without exception for us). The problems lie in the fact that that work is an absolute necessity on the PS3, whereas they're not entirely necessary on any other platform."
Do you understand now?