当前位置:游戏堡攻略单机攻略 > 正文

星际争霸: 从一个简单的星际运行原理到第11大核心竞争力

2010-07-28 16:51:31     来源:游戏堡     编辑:yxbao     我要留言

用移动阻挡你的敌人——从一个简单的星际运行原理到第11大核心竞争力

  这个标题中的“第11大”只是戏谑的自称,吸引眼球,请大家不必当真。

  多年以前我就注意到一个现象,这个现象估计很多人有过隐约的感觉,但我从未看见大家讨论过。也许是我没看见这些讨论,那此文权当复习。如果的确是大家未曾讨论过的东西,则它确实可以带给你一点帮助。

  关于这个现象的隐约感受就是:“作战时,一边打一边微调最前方的部分的走位,似乎可以对自己有利。”不过这太笼统了,有的人的感受更具体一点:“微调最前方的部队的走位,似乎可以延缓对方的冲锋,即使我只是在胡乱地微调。”

  例证之一,就是用雷车阻挡zelot。TVP阵地决战,有的人似乎有很好的“雷车阵型”,但雷车都站住不动,似乎很容易就被插入坦克阵,zelot会冲过那些细小的缝隙向坦克近身。而如果你毫无目的地扯动一下雷车,即使看上去雷车之墙空隙更大了,那些zelot却傻傻地被卡住,容易在近身前就被消灭。

  这是为什么呢?让我们做一个小实验。两个SCV排成一条横线,让左边的SCV走到右边SCV的右边空地:

  SCV甲SCV乙目的地

  我们会发现,SCV甲将会灵活地绕开SCV乙,到达目的地。视距离和方向的不同,SCV甲可能会直接向上一小格,然后横向移动到目的地上方,再下一格;或者先接近SCV乙,然后贴着SCV乙绕开,再下到目的地,等等。无论电脑为你选择哪一种走法,整个过程都是流畅的,没有任何停顿。

  实际上,当SCV甲被下达MOVE指令的同时,电脑已经算好了全部的行走路线。之后,它只是按照预定路线移动罢了。在计算路线的时候,阻挡的SCV乙和其他诸如河流、高地一样,成为地形的一部分。因此,算好的路线已经避开了SCV乙。

  有的朋友要问了:“但是一个SCV和一块高地不同,SCV乙是活动单位,你都按照下达MOVE指令时SCV乙的位置来计算地形,那到时候SCV乙走掉了了,这个路线不是就不够优秀了?本来可以走直线,还是要走弯路。”


图示

星际争霸: 从一个简单的星际运行原理到第11大核心竞争力

星际争霸: 从一个简单的星际运行原理到第11大核心竞争力

星际争霸: 从一个简单的星际运行原理到第11大核心竞争力

星际争霸: 从一个简单的星际运行原理到第11大核心竞争力

  您问得好,可以猜想,的确会走弯路。不信再做一个实验:选择那种SCV甲会贴着SCV乙绕开的路线,在SCV甲到达SCV乙身前之前,就把SCV乙移走,看看SCV甲怎么动?不出所料,SCV甲还是走他的预定路线,绕开了一个不存在的SCV乙的身位,,就好像那里有个隐形的SCV乙一样!

为什么会这样设计呢?Blizzard为什么不做得更好,让它走直线呢?(解决办法:SCV甲每走一格都重新集算路线,就可以在SCV乙让开以后,走上直线的幸福道路了)

这是因为,计算路径是一个非常耗时间的运算。(题外话:计算精确的最优路径是一个NP问题,实际一般是用近似的最优路径的A*算法。即使你认为现在电脑比当时快得多,是否可以采用计算精确路径的算法,答案也是不可能,这超出了计算机的计算能力。即使是采用近似算法,这个计算也不怎么快。)

既然非常耗时,那我们就要节约计算资源了。所以,我们一旦计算了一条路线,就会坚定的让它走下去。(再顺便一提,move到一个指定空地和move到一个活动单位的位置不同。比如你用狗追scv,狗的目的地就是不断变化的。但是由于计算路线很慢,所以不可能每当scv移动一点点都去重新计算路线,而是要间隔一定时间才重新计算路线。这就是为什么scv不断转向的时候狗会犯傻,从而活得更长久的原因,也是为什么要手动操作狗才能更好的追scv的原因。)

解释清楚 简单应用

Ok,目前为止,我们验证了:一个单位会走计算好的预定线路,即使线路上的阻挡单位消失了。接下来才是真正的问题:“刚才的问题还好办,最多是SCV甲没有走最短的线路。可是万一有单位挡在了他预定的线路上,那可怎么办呢?”

简单,让我们再次实验。在SCV甲尚未接近SCV乙时,向上移动一点SCV乙,挡住他的预定路线!

这时我们终于看到了这一幕:SCV甲被卡住!他似乎失去了方向,迟缓了下来,经过一番停顿之后,才重新启动,再次绕开SCV乙,并最终抵达目的地。

很明显,游戏逻辑是这样的:SCV甲每走一步之前,要看看这一步到底能不能走(换言之,又没有出现新的东西挡住下一步的位置)。能走的话最好,不能走怎么办呢?那就——停下,重新计算路线!

此时我们终于可以回到前文所述的“隐约感受”上来了:为什么扯动的雷车可以延缓zelot的冲锋?因为zelot不停地在被迫做这件事情:预定路线受阻、停下、重新计算路线!预定路线受阻、停下、重新计算路线!预定路线受阻、停下、重新计算路线!预定路线受阻、停下、重新计算路线!预定路线受阻、停下、重新计算路线!预定路线受阻、停下、重新计算路线!预定路线受阻、停下、重新计算路线!预定路线受阻、停下、重新计算路线!预定路线受阻、停下、重新计算路线!

星际争霸: 从一个简单的星际运行原理到第11大核心竞争力

星际争霸: 从一个简单的星际运行原理到第11大核心竞争力

星际争霸: 从一个简单的星际运行原理到第11大核心竞争力


整个理论终于解释清楚了,让我们看看一些简单应用:

一个probe不停在drone前方晃动,阻挡drone;

雷车定时横向扯动,阻碍zelot冲锋;zelot定时重新点击坦克,在被迫停顿之前,人为重新加算路线,从而绕开雷车阻挡!(重新点击坦克时的重新计算路线不是因为遇到阻挡才发生,所以不会停下;而整个双方操作的目的,就是比对方更晚下达命令,从而得到正确的路线计算!)

  龙骑zelot冲锋时,zelot在龙骑开始交火时要重新A或移动,避免被自己龙骑卡住(同样,比龙骑停下的时间更晚下达命令,从而绕开阻拦).

 

声明:游戏堡网登载此文出于传递信息之目的,不代表游戏堡网赞同其观点或证实其描述,若侵权请来信告知,我们将及时处理。
相关阅读: