3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 5401|回复: 12
打印 上一主题 下一主题

[分享] 每天在说的优化优化到底是什么,节选A9《顽皮狗和它的神海冒险》

  [复制链接]

136

主题

6329

帖子

4543

积分

游戏精英

Rank: 8Rank: 8

贡献度
216
金元
36791
积分
4543
精华
0
注册时间
2010-4-8
跳转到指定楼层
主题
发表于 2014-3-25 09:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下只是一台相当于7800GTX显卡的PS3的游戏开发一角,性能弱(相对于现在的PC),专有平台,这些是其关键词
从中我们只要知道一台专有平台的设备,都需要这么多人,这么投入,花这么多时间去研究,何况我们的开放平台(通用平台确实开发难度小,但问题就是没有人围着我们不同的配置去针对开发!),以及可以看到我们在PC认识到的7800GTX性能和在这样开发下专有平台上的7800GTX有些本质的区别,对自己一直在说的“优化”有个大致的了解


如果没有记错的话,那句著名的“使用了30%机能”的话出自Christophe Balestra,顽皮狗的现任联席总裁之一。取决于你的立场,你可以把这句话理解成PS3潜力巨大或者是PS3难以开发。为此在各个游戏新闻网站唇枪舌剑的玩家不在少数。如何精确的给出这样一个数字来描述游戏使用了主机性能的百分比,确实是一个匪夷所思的问题。后来顽皮狗联席总裁中的另一位,Evan Wells,给这个说法园了场。他的描述更加具体一些:《神秘海域》时,顽皮狗所写的代码只能让PS3 的Cell处理器在大约30%的时间全力运转。想来这多少是拜Cell不对称多核结构的诡异体质所赐。幸好索尼手下有顽皮狗这帮狂热的技术宅,在经过了两年的进一步探索,优化之后,在《神秘海域2》中,按Evan Wells的话说:“Cell处理器至少是100%的时候都在工作了,而不至于像一代那个时候有70%处理器时间闲置。”当然,100%的时间都在工作也未必就是实现了100%的效率,好比你可以一周只工作3天,也可以一周工作7天,但也许这7天时间你其实都在办公室上网。但无论如何那6个SPU不再只是充当啦啦队员的角色了。我们所看到的从一代到二代的巨大进步,和顽皮狗对Cell编程孜孜不倦的优化密不可分。从二代到三代,虽然也有进步,但就不再那样的显著。这一次的进化主要是依赖对程序细节的优化,不光要让Cell 100%的忙起来,还要忙得有效率。顽皮狗曾经公开过一个内部程序员培训的ppt,长达114页的幻灯从理论到实例向招进来的新手们介绍SPU的编程和优化。介绍其中的具体内容既超出了我的能力,我想也超出了99%的读者的兴趣,但我还是想引用一下这个ppt最后的一句话:“Why on earth can’t the compiler do a better job?”


在绝大多数PS3开发者选择对这个做不好本职工作的编译器投降听之任之的时候,顽皮狗选择了手工优化。从下面两张图里,你可以形象的了解在游戏的某个具体时刻,Cell的工作状况和顽皮狗调教SPU的工作量。ICE小组是一个专门负责底层软硬件支持的小组,不制作具体的游戏,只负责核心技术开发和协助。他们和顽皮狗也是在同一栋楼里工作。






还有一些技术上的细节同样体现了顽皮狗对游戏质量的追求。比如HDR和SSAO。这里所需要的智慧和调教SPU不同。对SPU代码的优化是实打实的纯技术,如果一般的“码农”干不了,顽皮狗和ICE的“码神”们可以代劳。而对HDR和SSAO效果的调教更多的是“艺术感”上的追求。《神秘海域2》采用了电影风格的色调映射,来实现更加饱、清晰的暗部,同时避免高光部分的偏色。SSAO是另一个顽皮狗重点微调的效果。SSAO所提供的“地面附着”效果对于光照环境多元而复杂的《神秘海域》系列来说非常重要,同时也可以强化暗部的效果。综合起来,游戏画面的层次感和真实干大大提高。顽皮狗认为这方面的优点大大超过了其带来的诸如景深不连续和“白边”的副作用(这些副作用在3代里非常明显,效果本身也略显过度)。和一般的猜测不同,SPU处理SSAO负担很小。下面是另一张处理器线程分析图,这里只标明了全屏光照和SSAO,你可以看到他们占用SPU的比例。顺便一说,顽皮狗非常不喜欢Xbox360的Gamma曲线。他们认为Xenon的HDR在暗部太过于明亮,而最终的输出曲线对比高过了头。







在合作方面,除了前面提到的ICE,他们还从Insomniac和Guerrilla那里学习triple-buffer v-sync。而在这之前游戏的屏幕撕裂现象要严重得多。


《神秘海域2》中的火车关卡是很多玩家印象深刻的一幕场景。这幕场景背后,顽皮狗付出了很多的辛劳。举两个简单的例子。第一,这是一列真正在运动的有着很多节车厢的火车。你可能觉得这是一句废话。但从程序的角度来说,这是一个巨大挑战。传统而言,将火车做成固定的而让背景卷动是容易的多得方式。而顽皮狗也完全可以把所有火车车厢设计成一个整体。但在实际游戏中,车厢之间是存在真正的牵引关系的。这些机制上的改变极大的增强了玩家体验的真实感。第二,这个关卡直接导致了游戏射击判断程序的全盘推翻重写。原因很简单,原本的程序在弹道计算和目标位置计算之间存在一帧的延迟。《神秘海域2》游戏30帧每秒,当你躲在掩体后面射击的时候,这个延迟当然不是什么大问题。但当敌人跟着火车一起高速运动的时候,这样的延迟足以让玩家无所适从。(一个简单的计算可以告诉你这相当于1~2米的误差,具体数字取决于目标运动的速度和游戏的帧数。)


索尼给PS3打造了一个“机能领先”的形象,然而受限于开发工具的落后和机器构架的“非主流”,玩家似乎很长时间找不到一个能够对得起那宣传中的高高在上的机能的实际的游戏。在这方面,顽皮狗的辛勤付出给索尼带来的积极影响是巨大的。在《神秘海域》的开发中,顽皮狗放弃了之前自己独特的以Lisp为基础GOAL语言,回到了当初因为效率低下而被他们抛弃的C++上。这么做并非因为顽皮狗突然间爱上了C++,而是因为作为索尼新成立的全球工作室的一员,他们必须使用通用的编程工具来保持和其他索尼旗下第一方工作室的交流。如此的改变即使对于顽皮狗这样的天才程序员群落来说也是痛苦的,以至于他们不得不在开发进展到将近一年的时候彻底放弃原先的工具,掉头回来重新建立游戏的引擎。好在成果最终被继承下来,并在随后自己的游戏开发中一再得到积极的验证。有些讽刺的是,索尼曾经试图在第一方范围内推广神海的游戏引擎,最终却发现除了顽皮狗自己,没有其他任何小组能够用的起来。不知道应该说是顽皮狗智商太过超常,还是他们的代码写的太有“创意”。


除了对Cell,顽皮狗也是索尼蓝光政策的积极支持者。《神秘海域3》在游戏制作过程中使用的数据量达到了25000G,游戏曾经一度考虑过使用不止一张的蓝光碟(超过50G)发行。虽然大并不一定意味着好,但就《神秘海域》这个具体的例子而言,顽皮狗塞进光碟的东西(视频,原画,配音等等)基本上还都是物有所值的。《神秘海域》本身也是一个注重演出效果和产品价值的游戏,在音画效果上堆积容量并不算偏离它的特质。游戏也先后支持了六轴手柄和3D电视,游戏一直反复强调标配硬盘对于实现无缝读取的重要性。综合来看,顽皮狗的《神秘海域》是索尼PS3世代当仁不让的第一男模,身上穿戴了所有索尼大肆宣传的PS3 的技术卖点。

评分

1

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-4-9 13:50 , Processed in 0.770175 second(s), 17 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表