美利坚:游戏制作教父 第516节

  因为不管是赫尔墨斯还是NX,都有容量足够大的内存和显存。

  只要能提前把需要的东西缓存好,绝大部分时候其实都不会有太严重的割裂感。

  非常绿皮,但也非常好用。

  但这次这套方案有些走不通了。

  数据量太大了。

  机器里这点寄存器指定是不够用的。

  让玩家为了玩这个游戏专门升级4MB显存和内存?

  那实在是太过丑陋了。

  卢卡斯若有所思地点点头。

  身为一名先锋派的制片人,他对计算机技术的理解并不算特别浅薄。

  “预读取呢?把数据提前加载好缓存下来?”

  “恭喜你,已经追上我们几年前的技术了。”

  林立新调侃了一句,随即摇摇头,

  “要是这样就能解决那还好了呢,缓存容量不够用的。”

  “好吧,我也就是随口一说。”

  卢卡斯耸了耸肩,专业的人干专业的事。

  就比如他,作为一名制片人,能把这里的拍摄现场管好就算是兢兢业业了。

  “把那堆泡沫板都堆到高地的棚子里去,这边太潮了……”

  他指挥着,让一帮人把零落在地上的乱七八糟的东西都收拾起来。

  一旁的林立新看着忙碌的众人,忽然眼神一亮。

  “嘿,我早该想到的。”

  “这次又怎么了?”

  “优化啊,我知道怎么从软件层面解决这件事了。”

  林立新看着场地上的零碎,

  “一直以来,我们游戏的编译都是交给编译器来做的,为了游戏的性能,它会对文件系统进行彻底到底层的处理。”

  “这种处理就像是……就像是一位工程师和他的工作台那样,扳手、螺丝刀、钻头散落在各处。”

  “虽然看起来很乱,但工程师自己知道什么东西在什么位置,伸手就能拿到,效率奇高。”

  “我们可以从这里入手,让他的老妈来把工作台收拾干净。”

  听着林立新的话,卢卡斯眨巴眨巴眼,完全没明白是怎么一回事。

  林立新也不着急,耐心给他解释着:

  “你看,老妈跟这位工程师的思路不一样,牺牲一点随手就能拿到的便利性,换来的是极其刻板的‘整齐’。”

  “第一关的数据就摆在第一关的资源包里,在这个资源包下,图片又跟图片放在一起,声音也跟声音放在一起。”

  “这样一来,玩家在进入一个场景时,绝大部分的资源都是紧密排列的甚至是连续排列的。”

? 第515章 一晚上渲染一帧(四更求月票喵)

  秩序跟效率,有的时候并不是同一个方向。

  GAMENOVA,开发部。

  面对着电脑上解包出来的文件结构,林立新眉头微微一蹙。

  “优化过于激进了啊……”

  开发组的技术力是绝对是全业界毫无争议的最强一档。

  但面对这次的《Myst》项目,这过强的技术力反倒是成了一个累赘。

  要知道当年Cyan工作室在开发《Myst》的时候,那也是标速的CD-ROM。

  理论上来说不可能有这种人家能行他们GAMENOVA做不到的情况。

  更何况当年Cyan用的还是苹果的QuickTime技术和HyperCard技术。

  在底层性能上,无论如何也不可能他们GAMENOVA这种技术栈完整的超级大厂的对手。

  现在解包一看,这才算是彻底明了。

  按照开发流程,一个游戏软件在开发完成后需要进行编译工作。

  将N语言转译成硬件能够理解的机器码。

  同时,编译器会尝试理解开发者的意图,并尽可能地优化。

  很多时候菜鸟程序员写出来的屎山在性能表现上却意外不错的原因就在这儿了。

  编译器一直在替铸币们负重前行。

  作为一个立项之初就面向未来的现代架构,N语言以及它的编译器在编译优化这方面做了大量的工作。

  其中甚至有一大部分还是杰拉德在离职前留下的遗产。

  加上林立新和卡马克长年累月的优化。

  如今的N语言的SDK甚至要比那些专业软件更加庞大复杂。

  而它的作用也是非常强大。

  最简单的优化逻辑自然就是常量折叠和消除无效死代码这些节约文件大小的操作。

  比如程序员为了可读性书写了大量的变量和计算。

  但在编译器判断后发现,这些实际上可以直接用固定常量的方式一行搞定,就会直接优化掉。

  循环的处理、函数的调用等等。

  很多时候,他们在开发过程中是要优先保证代码的可读性的。

  毕竟不是人人都是林立新。

  如果让林立新自己放开手脚编写程序,的确能做到完全从机器的视角来进行编写。

  毕竟他的大脑本身就是一台性能爆表的湿件超算。

  但这种操作放在五年前可以,放在现在却不行。

  因为游戏开发已经不是他自己一个人的事了。

  大量的工作人员参与其中,必须要确保大部分人都能一眼读懂某一部分的作用。

  于是乎这里便到了编译器发挥神力的时候。

  如此的小伎俩在N语言的编译器中比比皆是。

  不过真正让他们感到骄傲的机制,同时也是出现这次问题的幕后元凶。

  文件系统。

  为了确保游戏效率,引擎会判断游戏内资源的使用频率,并对它们进行碎片化的整理。

  所有的文件都以1和0的二进制流形式,完全打碎在游戏文件里。

  考虑到缓存和帧数表现,这套模式绝对是最顶级的优化思路。

  但对CD-ROM来说,这就是一场纯粹的灾难了。

  “没想到有一天会栽到过度优化的坑里。”

  林立新撇了撇嘴。

  到底还是经验不足。

  这大概就是开挂给他带来的一点负面影响了。

  经常出现这种因为进步过快反而扯到蛋的尴尬情况,非常蛋疼。

  不过一体两面的。

  只要知道问题在哪,那林立新理论上来说就是无敌的。

  想要修复它,其实非常非常之容易。

  甚至都不需要其他人参与,也不需要改动原有代码。

  只需要做一件事……

  ‘哒’

  林立新在键盘上敲了一下,将编译工具的‘文件优化系统’关闭。

  Done。

  就这么简单。

  《Myst》是个慢节奏看环境玩解谜的游戏,对帧数压根没有什么要求。

  直接把这些过度优化的东西全部关掉,一切就都迎刃而解了。

  当然,这样做只能解决一部分问题。

  剩下要怎么在这个基础之上优化,那的确还是需要精心设计一番的。

  ……

  仔细盘算一下,《Myst》也算是GAMENOVA历史上开发周期最长的作品之一了。

  不同于《Quake》这类游戏,《Myst》在程序上没有太多的讲究。

  绝大部分的工期都用在了建模和渲染上。

  这些工作不像写代码,没法靠着技术节约工期快速推进。

  好在是换装了新款的显卡,在渲染速度这方面有了不少的提升。

  半个月的时间,GAMENOVA影视基地的其中一座岛已经捯饬起了一片临时的办公区。

  几组集装箱房和简易房车,在已经夯实找平了的土面上聚集着。

  水电通信网络都已经跑通。

  整个建模团队和道具组便干脆打包直接搬了过来,省得天天跑往返浪费时间。

  邻近工作岛的隔壁一座略小几圈的岛则是被道具组完全打扮成了另一幅模样。

  大量的泡沫模型和板材伪装出来的遗迹已经初具规模。

  此刻正在调试打光和摄影机机位。

  “差不多就是这儿吧,图书馆的入口就设置在这里,机关不用着急,让建模组来搞就行。”

  林立新后退一步,伸手比量着,满意地点点头,

首节 上一节 516/587下一节 尾节 目录