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

  “林,根据你的要求,我们姑且是重新用N语言实现了一套2D地图网格。”

  麦克将项目的进度汇报了一下,把内容展示给林立新看。

  那是一个黑白相间的棋盘格,用来辅助测试,更容易用肉眼分辨坐标情况。

  画面上正有几个不同颜色的像素点正在移动。

  当麦克点击某一个格子时,游戏便会卡顿几秒钟,随后便会有一个颜色的像素点开始向这个位置移动。

  林立新眉头微微一皱。

  “我看看你寻路怎么做的。”

  噔噔咚。

  几人对视一眼,对这般查作业似的话一时间都有些麻爪。

  上学时忘记做试题都没有这么紧张过。

  “这部分是我写的。”

  亚伦主动接过话头,切出项目的源码展示给林立新看。

  他们三人组分工明确,弗兰克负责工作室的运营管理,麦克则是主要负责策划和硬件。

  至于主程,在西木的两位开发者过来之前,这里所有的程序工作基本都是由他负责的。

  也正因如此……

  亚伦现在压力爆缸!

  他小心翼翼地瞥了林立新一眼。

  皱眉了啊喂!

  半晌后,林立新在看完整段代码后,眉头忽然舒展开,也终于是露出了笑容。

  这让亚伦长舒了一口气。

  不过还没等他放松下来呢,林立新开口一句话直接给他打入了地狱。

  “嗯,这个不行,推倒重做吧。”

  林立新笑笑,说出了一句吓死人不偿命的话。

  说真的,林立新本人刚才的紧张可一点也不比亚伦差。

  刚才看到那个寻路光是一个单位就要动用数秒的计算时间,他还以为是硬件性能顶不上。

  这可不是什么小事儿。

  如果真的这么严重,那这整个项目等于说是就完全没有任何可行性了。

  不过好在是经过确认,只不过是代码写的不太行而已。

  “吓我一跳。”

  林立新直接拉过椅子来落座,

  “我没看错的话,这是A*算法吧?”

  一个六十年代末期就已经被提出,直到后世千禧年后也仍然是主流的寻路算法。

  能自己手搓出这玩意儿出来,不得不说亚伦的本事是有保障的。

  照理来说,这玩意儿的效率其实算最高效的那一档了。

  哪怕是近几年基于A*改良出的那一堆B算法、IDA*等算法,也不过是在A*思想的基础之上做出了些优化而已。

  “是的……有什么问题吗?”

  亚伦人已经晕了。

  为了能把林立新提出的寻路搞成,他可没少查资料。

  如今他实现的这个版本,在原有的基础之上,通过适应更高速的内存,以及将部分数据转移给显卡计算的模式,成功将效率又提升了一大截。

  没想到林立新开口第一句就给他否了。

  “哦,这个寻路模块还不赖,可以打包起来留给以后需要的地方,不过《命令与征服》不能用它。”

  林立新简单在代码里做了点修改。

  将寻路的范围直接扩大到了所有单位同时寻路。

  随后他重新编译运行,像之前那样随便点了个位置。

  这下子程序直接就卡死了。

  海量的运算量直接把频率本就可怜的处理器和显卡直接顶爆了。

  “你看,RTS游戏需要大量单位的同屏移动,你打算为每个单位都运行一套完整的寻路算法吗?”

  亚伦尴尬地挠了挠头。

  他其实早就注意到这一点了。

  只不过碍于想不出合适的解决办法,他才暂时先用刚才那种形式糊弄着。

  在有限的机能里搞出这些东西真的太难了……

  “为了我们的需求,我们不能再用A*了,而是要改用一套更加适合RTS游戏的寻路。”

  “我将其称为‘流场寻路算法(FlowFieldPathfinding)’。”

  “它的核心思想是:一次计算,万人同用。”

  亚伦目光一滞。

  如果林立新说的是真的,那他相当于是凭空搓出了一个效率提升了成千上万倍的新寻路算法。

  这……

  是否有点太离谱了?

第225章 全部回炉重做吧

  在传统情况下,A*算法简直是好用到不能再好用了。

  它会让单位精心规划出一条最优路径。

  并且每一步走出,它都会重新计算一次路线,确保计划可靠。

  这套系统一直运行得非常不错。

  直到,

  它碰到了成百上千个单位。

  如果有上千个单位都要去一处地点,那A*就得为每个单位都跑一遍寻路流程。

  这样恐怖的性能支出,绝不是现在的处理器能承受得住的。

  而流场算法的诞生,恰恰就是为了这种群体寻路问题。

  “一次计算……万人同用?”

  亚伦重复着林立新的话,尝试理解他的意思。

  “是的,我们不在游戏运行的时候实时计算路径,而是提前帮玩家算好。”

  林立新笑笑。

  这套算法虽然已经是2013年后的产物了,但它的价值在于先进的思想。

  即便是放在硬件羸弱的现在,它也同样具有可行性。

  “当我们编辑好一张游戏地图后,我们使用算法根据它的地形生成热度图。”

  “随后从目标点开始,像洪水似的向周围的格子扩散,依次计算出到达每一个格子的代价。”

  “综上,我们就可以得到一套完整的数据,供单位寻路时使用。”

  ……

  “等等?就这么简单?没别的了?”

  亚伦还在等待后文呢,却发现林立新已经不再继续多说什么,这才猛然惊醒。

  “昂,不然咧?”

  林立新耸耸肩。

  有的时候算法的革新就是这么巧妙。

  不在于多么高大上的复杂数学计算,也不在于多么先进的硬件性能。

  有的时候往往只需要一个灵光乍现的点子,却能够将效率提升无数倍。

  “天才……”

  亚伦嘴角扯了扯,这才意识到自己跟真正的高手到底还有多大的差距。

  怪不得林立新让他直接推翻现在的成果。

  亏他刚才还为自己辛苦迭代这么久做出来的成果而感到惋惜。

  现在看来……

  自己的方向从一开始就是错的。

  方向错了,再多的努力又有什么用呢?

  就算他再怎么把这个寻路优化到极致,哪怕是翻倍,也追不上这套新算法的角角。

  新的算法直接把计算从游戏本身摘了出去。

  设计师甚至可以提前为地图计算好对应的流场图保存在游戏文件里。

  届时单位想要寻路,只需要查表获取对应的方向就足够了。

  这是只有光碟时代恐怖的容量下才有可能诞生的新思想。

  ……

  寻路算法的迭代能带来的远不止是性能上的优秀。

  它会直接影响到设计师在游戏设计中的思想。

  就比如,在如今这种环境下,单个单位的重要性便直线下降。

  因为游戏有能力支持更大规模的团战了。

  “如此一来,咱们在设计单位的时候尽可能以兵种来设计,而不是强势的个人英雄。”

  部队之间的调度、对拼,靠着精湛的拉扯技术掐住头左右摇摆以少胜多……

  这种靠技巧获胜的过程,本就是游戏乐趣的一部分。

  “所以……之前那种操作方式当然也行不通了。”

  键鼠操作倒是还好说,但是NX的主要用户都还是习惯抱着手柄躺在沙发上玩。

首节 上一节 182/447下一节 尾节 目录