吐两句神机的槽

    今天看到Carmack的一篇采访,卡神对比了PS3和X360的机能,他说PS3确实拥有比360更强大的原始机能,但代价确实PS3更难开发。鉴于最近修了两个很坑爹的bug,不得不跟了很多PS3底层的代码,对这PS3难于开发这一点颇有感悟。

     3内部分两种处理器,PPU和SPU,PPU和一般的CPU差不多,比如用来处理游戏逻辑,而6个spu负责渲染等。基于SCE的edge库的流程大致是,ppu创建一个command buffer,然后传给spu,每个spu有一个自己的内存池,用来放command buffer信息,同时还可以访问主内存。所以渲染就是ppu创建指令,spu来执行,听起来不错对吧,一套高效的流程。可问题在于,如果碰到了crash,并且crash在spu,那么就非常难debug,卡神用了crappy这个词来形容debug ps3,因为你很难debug跟进spu的代码,即使进去了也都是cell库的指令,其次你很难知道哪个步骤导致了程序宕机,主线程已经完全跑到了其它地方,而spu这边只是一个个微命令。你能得到的信息基本上只有rsx的dump,可以通过gpad来分析,但通常一无所获,于是不得不人工用内存地址把前后一段的command buffer提取出来,再通过gpad来猜测问题所在。一个逻辑并不复杂的内存bug就修了我足足两周,而99%的时间被用来找出问题。这样的话,开发成本明显就比x360要高出不少,我想这也很可能是大部分跨平台游戏的ps3版画质都比360版略逊一筹的原因。

     很难说SCE为了提高性能而使用一些比较tricky 牺牲易开发性的做法是对是错,或者说是否值得,毕竟不久前神机总销量已经超过了360,个人观点神机上的独占游戏也确实比360的给力,但对于跨平台游戏的开发者来说,ps3始终是令人讨厌的存在。

 

posted on 2012-03-21 20:41  鱼雷  阅读(242)  评论(0)    收藏  举报

导航