[心得] 游戏的"缩水" 与 TLOUR的平行运算技术

楼主: cjcat2266 (CJ Cat)   2015-06-08 09:01:40
不少游戏初期公布的实机技术demo与最终成品有明显画质落差,为什么?
本文将借由说明在初期技术展示与最终成品阶段的技术差别,来回答这个问题
顺便介绍一些The Last of Us Remastered (PS4)压榨硬件资源的技术
简而言之:游戏最终成品,通常所需运算资源种类与量,会比初期技术展示多
一个AAA游戏成品在实机执行的时候,运算资源大致分配给以下几项作业
1. 游戏机制(CPU)
2. AI(CPU)
3. 物理(CPU and/or GPU)
4. 动画(CPU)
5. 粒子(CPU and/or GPU)
6. 绘图逻辑(CPU)
7. 绘图执行(GPU)
初期实机技术demo,通常不会有多少1/2,可能会有3
4不会像最终成品消耗CPU与内存
所以大部分的运算资源都可以用在5/6/7
不要小看1/2/3消耗的资源量
这几项在最终成品的资源消耗可以占到CPU的50%以上
所以4/5/6/7能够使用的硬件资源(粗估)只剩下初期技术demo的50%
如果在制作初期实机技术demo的时候
把100%硬件资源拿来展现4/5/6/7
那么后来新加入1/2/3的资源消耗,势必会产生"视觉上缩水"的情况
为了初期吸引观众目光,这几乎是必然的结果
这样是否表示AAA游戏开发者不诚实? 见仁见智
不管是初期技术展示还是游戏成品,硬件资源一定是几乎被榨光的
制作初期demo的时候是否可以估计到之后会额外用到的资源? 非常难
不管是哪家工作室,应该都不想只用50%以下的硬件资源做技术展示demo吧
我个人是有了以上的认知之后
看到初期技术demo与最终成品的画质落差
虽然会失望,但觉得比较可以接受这个事实了
接下来介绍TLOUR的一些压榨硬件资源的技术
之前有提到,Naughty Dog为了从PS3跨到PS4
重新设计了一个平行运算的系统
负责人Christian Gyrling于今年GDC有个专题讲座
强烈推荐给有兴趣的资工领域朋友
影片连结 http://bit.ly/1eX5mb1
投影片连结 http://bit.ly/1HgtGQ9
TLOUR的硬件资源配置,可分为以下三种
1. 游戏逻辑(CPU) 包含:游戏机制、AI、物理、动画、粒子
2. 绘图逻辑(CPU) 生成绘图指令,丢给GPU执行
3. 绘图执行(GPU) 执行2生成的绘图指令
一个单执行序的游戏
1/2/3是串在一起,在同一个frame内线性依序执行的
如果要达到60fps,那1/2/3总共的运算时间就不可以超过16ms
<A方案>
CPU 游戏逻辑 -> 绘图逻辑
GPU -> 绘图执行
|
作者: yearnway (..)   2015-06-08 09:53:00
谢谢分享~~又学到一些东西了~~
作者: yhn0tgb60 (呦厚厚)   2015-06-08 10:12:00
过去2个frame有击中都算 所以逻辑资料会保留2个frame囉这样会对内存造成负担吗 或是其实资料量很少 没影响
楼主: cjcat2266 (CJ Cat)   2015-06-08 10:14:00
既然游戏生得出来,就表示内存可以负担吧XD
作者: cowbaying (是在靠北喔)   2015-06-08 10:24:00
如果GPU的时脉拉到2GHz以上我推测可以用来算AI游戏这种hard real time运算 对于平行后的资料蒐集
作者: yhn0tgb60 (呦厚厚)   2015-06-08 10:25:00
我的想法是 通常这个frame的资料出来时
作者: cowbaying (是在靠北喔)   2015-06-08 10:25:00
是相当严苛的...
作者: yhn0tgb60 (呦厚厚)   2015-06-08 10:26:00
上个frame的资料应该就丢了 甚至释放了所以这作法 必须保留3个frame 的资料
作者: cowbaying (是在靠北喔)   2015-06-08 10:28:00
或许是硬件特性的问题 目前开发的HSA项目
楼主: cjcat2266 (CJ Cat)   2015-06-08 10:28:00
当然不是所有资料全保留啊,只保留绘图相关资料而已
作者: cowbaying (是在靠北喔)   2015-06-08 10:29:00
在GPU时脉800Mhz下 简易四则运算的回应时间是
楼主: cjcat2266 (CJ Cat)   2015-06-08 10:29:00
我们已经三个人在平行发言了XD
楼主: cjcat2266 (CJ Cat)   2015-06-08 10:33:00
顽皮狗做的游戏都是单人线性剧情走向,所以没问题的XD
作者: akilight (OWeeeeeeeee~)   2015-06-08 12:07:00
不过TLOU和uncharted不是都有多人对战吗?对人对战的部份也是用这种2 frame方式处理,还是改以反应速度为优先考量呢?
楼主: cjcat2266 (CJ Cat)   2015-06-08 12:45:00
是使用同一套系统,毕竟射击游戏的被攻方错误容许度高攻方如果发现有瞄准到的敌人没有攻击判定,会很明显而被攻方受到攻击判定,也就只能认了一般也不会觉得 "明明自己躲过瞄准了,怎么还被打到?"因为被攻方也看不到攻方的准星是否有瞄到自己
作者: akilight (OWeeeeeeeee~)   2015-06-08 13:55:00
了解XD
作者: wyvernlee (wyvernlee)   2015-06-08 14:43:00
专业文!
作者: holymars   2015-06-08 16:22:00
试着回答内存的问题:通常逻辑部份并不占多少内存理论上,多存两个frame的逻辑状态并不会增加多少内存需求,至少和texture/audio之类动不动就上百MB比起来是很小的问题
楼主: cjcat2266 (CJ Cat)   2015-06-08 16:32:00
也不用存逻辑状态,只要存绘图需要的transform就好
作者: azureblaze (AzureBlaze)   2015-06-08 19:26:00
内存几乎就是texture的意思了 其他比起来都是渣XD
作者: lemmii   2015-06-08 23:27:00
推好文
作者: wangm4a1 (水兵)   2015-06-09 02:16:00
作者: yoyoleo0505 (leo)   2015-06-09 08:51:00
作者: yhn0tgb60 (呦厚厚)   2015-06-09 13:24:00
逻辑资料的内存 的确是非常小没错只是想到 videogame的内存也是寸土寸金 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com