“林,根据你的要求,我们姑且是重新用N语言实现了一套2D地图网格。”
麦克将项目的进度汇报了一下,把内容展示给林立新看。
那是一个黑白相间的棋盘格,用来辅助测试,更容易用肉眼分辨坐标情况。
画面上正有几个不同颜色的像素点正在移动。
当麦克点击某一个格子时,游戏便会卡顿几秒钟,随后便会有一个颜色的像素点开始向这个位置移动。
林立新眉头微微一皱。
“我看看你寻路怎么做的。”
噔噔咚。
几人对视一眼,对这般查作业似的话一时间都有些麻爪。
上学时忘记做试题都没有这么紧张过。
“这部分是我写的。”
亚伦主动接过话头,切出项目的源码展示给林立新看。
他们三人组分工明确,弗兰克负责工作室的运营管理,麦克则是主要负责策划和硬件。
至于主程,在西木的两位开发者过来之前,这里所有的程序工作基本都是由他负责的。
也正因如此……
亚伦现在压力爆缸!
他小心翼翼地瞥了林立新一眼。
皱眉了啊喂!
半晌后,林立新在看完整段代码后,眉头忽然舒展开,也终于是露出了笑容。
这让亚伦长舒了一口气。
不过还没等他放松下来呢,林立新开口一句话直接给他打入了地狱。
“嗯,这个不行,推倒重做吧。”
林立新笑笑,说出了一句吓死人不偿命的话。
说真的,林立新本人刚才的紧张可一点也不比亚伦差。
刚才看到那个寻路光是一个单位就要动用数秒的计算时间,他还以为是硬件性能顶不上。
这可不是什么小事儿。
如果真的这么严重,那这整个项目等于说是就完全没有任何可行性了。
不过好在是经过确认,只不过是代码写的不太行而已。
“吓我一跳。”
林立新直接拉过椅子来落座,
“我没看错的话,这是A*算法吧?”
一个六十年代末期就已经被提出,直到后世千禧年后也仍然是主流的寻路算法。
能自己手搓出这玩意儿出来,不得不说亚伦的本事是有保障的。
照理来说,这玩意儿的效率其实算最高效的那一档了。
哪怕是近几年基于A*改良出的那一堆B算法、IDA*等算法,也不过是在A*思想的基础之上做出了些优化而已。
“是的……有什么问题吗?”
亚伦人已经晕了。
为了能把林立新提出的寻路搞成,他可没少查资料。
如今他实现的这个版本,在原有的基础之上,通过适应更高速的内存,以及将部分数据转移给显卡计算的模式,成功将效率又提升了一大截。
没想到林立新开口第一句就给他否了。
“哦,这个寻路模块还不赖,可以打包起来留给以后需要的地方,不过《命令与征服》不能用它。”
林立新简单在代码里做了点修改。
将寻路的范围直接扩大到了所有单位同时寻路。
随后他重新编译运行,像之前那样随便点了个位置。
这下子程序直接就卡死了。
海量的运算量直接把频率本就可怜的处理器和显卡直接顶爆了。
“你看,RTS游戏需要大量单位的同屏移动,你打算为每个单位都运行一套完整的寻路算法吗?”
亚伦尴尬地挠了挠头。
他其实早就注意到这一点了。
只不过碍于想不出合适的解决办法,他才暂时先用刚才那种形式糊弄着。
在有限的机能里搞出这些东西真的太难了……
“为了我们的需求,我们不能再用A*了,而是要改用一套更加适合RTS游戏的寻路。”
“我将其称为‘流场寻路算法(FlowFieldPathfinding)’。”
“它的核心思想是:一次计算,万人同用。”
亚伦目光一滞。
如果林立新说的是真的,那他相当于是凭空搓出了一个效率提升了成千上万倍的新寻路算法。
这……
是否有点太离谱了?
第225章 全部回炉重做吧
在传统情况下,A*算法简直是好用到不能再好用了。
它会让单位精心规划出一条最优路径。
并且每一步走出,它都会重新计算一次路线,确保计划可靠。
这套系统一直运行得非常不错。
直到,
它碰到了成百上千个单位。
如果有上千个单位都要去一处地点,那A*就得为每个单位都跑一遍寻路流程。
这样恐怖的性能支出,绝不是现在的处理器能承受得住的。
而流场算法的诞生,恰恰就是为了这种群体寻路问题。
“一次计算……万人同用?”
亚伦重复着林立新的话,尝试理解他的意思。
“是的,我们不在游戏运行的时候实时计算路径,而是提前帮玩家算好。”
林立新笑笑。
这套算法虽然已经是2013年后的产物了,但它的价值在于先进的思想。
即便是放在硬件羸弱的现在,它也同样具有可行性。
“当我们编辑好一张游戏地图后,我们使用算法根据它的地形生成热度图。”
“随后从目标点开始,像洪水似的向周围的格子扩散,依次计算出到达每一个格子的代价。”
“综上,我们就可以得到一套完整的数据,供单位寻路时使用。”
……
“等等?就这么简单?没别的了?”
亚伦还在等待后文呢,却发现林立新已经不再继续多说什么,这才猛然惊醒。
“昂,不然咧?”
林立新耸耸肩。
有的时候算法的革新就是这么巧妙。
不在于多么高大上的复杂数学计算,也不在于多么先进的硬件性能。
有的时候往往只需要一个灵光乍现的点子,却能够将效率提升无数倍。
“天才……”
亚伦嘴角扯了扯,这才意识到自己跟真正的高手到底还有多大的差距。
怪不得林立新让他直接推翻现在的成果。
亏他刚才还为自己辛苦迭代这么久做出来的成果而感到惋惜。
现在看来……
自己的方向从一开始就是错的。
方向错了,再多的努力又有什么用呢?
就算他再怎么把这个寻路优化到极致,哪怕是翻倍,也追不上这套新算法的角角。
新的算法直接把计算从游戏本身摘了出去。
设计师甚至可以提前为地图计算好对应的流场图保存在游戏文件里。
届时单位想要寻路,只需要查表获取对应的方向就足够了。
这是只有光碟时代恐怖的容量下才有可能诞生的新思想。
……
寻路算法的迭代能带来的远不止是性能上的优秀。
它会直接影响到设计师在游戏设计中的思想。
就比如,在如今这种环境下,单个单位的重要性便直线下降。
因为游戏有能力支持更大规模的团战了。
“如此一来,咱们在设计单位的时候尽可能以兵种来设计,而不是强势的个人英雄。”
部队之间的调度、对拼,靠着精湛的拉扯技术掐住头左右摇摆以少胜多……
这种靠技巧获胜的过程,本就是游戏乐趣的一部分。
“所以……之前那种操作方式当然也行不通了。”
键鼠操作倒是还好说,但是NX的主要用户都还是习惯抱着手柄躺在沙发上玩。