不管是飙血还是声音还是震动,必须要打磨到极致。
在这个门派下甚至还有《GameFeel》这种专门研究‘感觉’的典籍存在,也算是某种意义上的宗门秘籍了。
第三派则是主张沉浸感优先,追求极致的代入感和氛围营造,让玩家仿佛真正置身于那个世界中。
第四派跟沉浸感有些相似,主张叙事第一。
追求电子游戏更加‘电影化’,以导演的角度去看待和处理游戏中的问题,设计镜头、设计演出,高度重视情绪的表达。
而《战地》算是哪一派呢?
答案是每种都沾一点。
但游戏性大概是它最重要的部分。
那种区别于其他FPS的大战场协同作战正是它的灵魂所在。
为了这个真正的核心,其他所有东西都可以做出一定的让步。
不过……
为了有限的硬件而妥协,从而阉割游戏本身,从来都不是GAMENOVA的作风。
不然林立新为什么还要费这么大的劲专门成立一个引擎部门?
优化可是门大学问。
“关于大战场的问题,我其实有几个思路。”
林立新默默来到白板前。
如何在有限的显示性能中尽可能地塞下更大的世界,一直以来都是开发者们热衷于处理的问题。
他没有急着在白板上写什么,而是先扫视了在场的众人。
在这里的都是图形学和硬件领域的佼佼者,算是GAMENOVA最重要的技术智囊团队。
但越是这样的情况,考虑问题时就越容易‘工程化’,忽略了那些其实很简单的东西。
“第一,我们其实并不需要做太复杂的地图,因为这一次的题材是……海湾危机。”
为什么一个地图会占用那么多的资源?
因为地图需要被整个塞进内存里。
玩家在加载进地图的时候,首先需要先把它们缓存下来,这样才能确保接下来的游戏过程中丝滑的体验。
如果内存不够大,那么开发者就需要考虑一些邪道的手段来解决这个问题。
比如……分块。
典型自然就是MC的区块加载机制。
仅加载必要的区块,卸载掉无用的部分,确保内存不会被一直塞入越来越多的东西直到爆缸。
当然因为MC的逆天优化和部分Mod的内存泄漏问题,偶尔还是会出现不论分配多少内存都会被吃光的情况,这就完全是论外了。
这种流式加载策略在电子游戏中非常常见。
世嘉的《刺猬索尼克》,其实也是通过类似的思想将地图动态加载,从而实现了流畅顺滑的高速体验。
所谓的爆内存,其实很多时候就是这么一回事。
不管是CPU还是显卡,都需要内存这个高速缓存来辅助存储数据。
否则所有的内容都从硬盘读的话,实在是慢到让人想要撞墙。
显存也是这么一回事。
如果频繁使用的资源在显存里,那显存在渲染画面的时候就可以就地使用,读取速度快到飞起。
反之亦然,如果从内存读,速度就要慢得多了。
而若是从硬盘读呢?
那就完全是一场彻彻底底的灾难了。
就此看来,面对一个大地图,内存绝对是最大的问题所在。
那么寻找突破点自然也要从这里开始。
这次的题材为林立新提供了一个绝佳的机会。
海湾战争是什么地方?
那是中东大沙漠。
而沙漠……恰恰是一种最节约性能的选择。
一个游戏地图里最占资源的东西,往往就是那些复杂的模型,大量的遮挡、阴影、光照、纹理过渡……
如果是一个欧洲城市战场,成吨的楼房会直接把可怜的显卡和内存都干爆。
但沙漠就不一样了。
别说是建筑物了,就连树都找不着。
高低起伏平缓有序,没有混乱复杂的光照关系。
纹理几乎完全一致,整张地图的地面甚至都可以用同一个纹理解决,显存不需要缓存更多复杂的东西。
节约下来的性能,拿来在沙漠上加点建模简单的堡垒或是防空炮,完全足够了。
“的确如此……沙漠天然就是一个元素稀少简单的环境,很适合电子游戏使用。”
“不对。”
卡马克摇了摇头。
林立新说的这些一点儿不假,沙漠的确是比正常的城镇要好做的多。
但也存在着一个非常致命的问题。
“视距怎么办?沙漠里可没有任何东西遮挡,渲染剔除根本就没有意义。”
这特么的,沙漠那地界,万里无云的天气。
一个雷霆大跳站在沙丘上,两眼一张罗怕不是能瞄出去几英里远。
直接就给GPU吓哭了好吗?
“嘿嘿……这就是我接下来要说的重点。”
林立新没有急着反驳他,而是开口反问道,
“卡马克你去过真正的沙漠吗?”
“怎么说?”
“Heat Haze(热霾),当地表受到太阳辐射加热后,空气密度变化导致光线发生折射,远处的景物就会变得模糊扭曲,难以辨析。”
闻言,卡马克一愣,随即眼神放光。
这哪用去真正的大沙漠看?
加州这破地方,一年到头的都是那么热,尤其是南加州,大太阳直接烤在地上,很容易就能看到那些热霾现象。
“你是说……把远处的东西模糊化?”
“没错。”
林立新哈哈一笑,伸手在白板上写下了第一行字。
【Levels Of Detail—— LOD】
LOD技术并不是什么新鲜概念了,早在1976年,LOD就已经在计算机图形学领域有过一定的应用。
只不过在电子游戏上使用,那还的确是头一回儿。
它的思想非常简单,每个模型都有多种精度的版本,根据玩家的距离动态切换。
离得越近,模型精度越高,细节越丰富,反之亦然。
将那些本来在远距离就难以观察到的东西全部抹去,仅保留一个极粗的低模,这就足够了。
“除此之外,我们还可以加入一个东西,跟它打配合。”
林立新再度抬起手,写下了第二行。
【Distance Fog(雾效)】
第544章 简单的优化,5倍的性能提升
雾,现代电子游戏必备技术。
只不过在如今这个90年代,大家还没有意识到雾效的重要性。
原因无他,在8位时代,想要运行一个稍大点的地图,就需要可怜的内存不断进行数据交换。
几KB的内存,完全不足以创造出庞大的世界。
哪怕是到了16位时代,大世界也仍然还是一个伪命题。
几MB的内存容量,虽然已经可以支撑那些瓦片式的大规模地图,但也就仅此而已了。
但《战地风云》不一样。
它是一个真正3D大战场。
这意味着整个世界不可能像以前那样,仅仅保存一点儿瓦片数据。
【x:0-y:1-tile:0】
以往的时候,只需要这样三个参数,就能完整保存下一整格的信息。
客户端在尝试渲染时,可以直接从内存里拉取对应的瓦片,拍在坐标所对应的位置。
当然还要加上一点位移变换和视野剔除。
这一招在2D的时代屡试不爽,尤其是在有了显卡这样一个天生擅长批量并行处理的硬件之后,瓦片的性能更是呈几何倍数上升。
如果用现在这个规格的硬件去开发《超级马力欧》,瓦片的密度甚至能翻几个倍,同时还能确保帧数稳定。
3D时代,地图的渲染逻辑完全改变了。
这也是林立新很确信3DO注定失败的原因。
3DO的赛璐璐叠画法看起来似乎很巧妙,似乎是个绕开三角形计算限制的巧思。
但真正深入到几何空间之中就不难看出,这条路绝对是走不通的。
或许在未来,等到AI技术高速发展,补帧、帧生成技术趋于完善之后,它还会重新被提起来。
但至少在短期内,在未来几十年内,三角形都是3D计算的绝对主流。
计算机理解3D空间,靠的是……顶点。
除了x和y的坐标点外,又多了一层z轴。
它们互相配合,就足以在计算机中构建一个真正包含深度的3D空间。
那么问题来了,这么多的顶点,计算机怎么知道要如何把它们渲染出来?