作为一个多人在线沙盒游戏,和别的玩家发生冲突可以说是不可避免的事情。本文简单介绍一下在 Screeps 中的战斗方面,通过这篇文章,你将会了解到一些常规的进攻策略、进攻前的准备以及怎么为你的进攻分配角色。
写在前面
首先要说的是,如果没有生死攸关的大事,请尽量不要在 7 级之前进攻其他玩家,一方面 7 级之前你可能无法建造一些比较昂贵的满 part creep。另一方面房间在 7 级之前只有两个 tower。所以一旦进攻失败你可能没有足够的力量来防御敌人的反击。
所以,在 7 级之前,把你绝大多数能量用在升级上,同时注意保证持续刷墙。
用于战斗的身体部件
可以用在战斗中的身体部件一共有四种攻击型身体 ATTACK
、RANGED_ATTACK
、WORK
、CLAIM
、一种治疗型身体 HEAL
和一种防御性身体TOUGH
。 每个身体部件都有自己的特长,下面简单介绍一下:
ATTACK:最基础的攻击型身体部件,伤害和造价都很均衡,所以受到不少玩家的钟爱。它还有一个特性就是一旦被攻击就会自动反击。
RANGED_ATTACK:范围型攻击部件,有
rangedAttack
(攻击三格内任一单位)和rangedMassAttack
(攻击三格内所有单位)两种攻击模式。但是这个 part 的伤害要低于 ATTACK 并且造价更高。WORK:没错,WORK 部件也可以被用于进攻,主要的手段就是
dismantle
方法。它可以对建筑物造成大量伤害。但是 WORK 只能用于拆建筑物,对 creep 的攻击毫无还手之力。所以一般搭配其他种类的 creep 使用。CLAIM:可以使用
attackController
方法攻击指定控制器,借此来阻止对方房间进入安全模式。但是由于造价高且 TTL 短,所以一般只用于需要速战速决的进攻中。HEAL:治疗专用,可以使用
heal
(近距离高效)和rangedHeal
(远距离低效)方法治疗指定 Creep。TOUGH:造价极低(只要10点能量),主要用来承担伤害,除了拥有正常的 100 生命值外没有什么用处。但是在经过 Boost 后 TOUGH 会成为战斗中最重要的身体部件之一,下文中我们会进行介绍。
以上六种就是会在战斗中会应用到的身体部件,接下来我们了解一个对战斗影响巨大的概念 操作优先级。
操作优先级对战斗的影响
游戏中最小的时间单位为 1 tick,而每 tick 中调用的如 heal
、attack
之类的操作不会立刻执行,而是会统一放到 tick 的末尾执行。而游戏规定,某些操作是有优先级关系的,也就是说,哪怕 creep 拥有对应的身体部件,你也无法在同一 tick 执行所有的操作。操作的优先级关系如下,相同行的操作 右侧 的优先级更高:
这么说可能有点难以理解,我们举个例子:假如你的 creep 的身体是这样的:[ATTACK, HEAL, MOVE, MOVE]
,然后你在同一 tick 里执行了 attack 和 heal 操作,这时你就会发现,creep 只进行了治疗操作!原因是 .attack
和 .heal
方法之间存在优先级冲突,而 heal 的优先级更高,所以 attack 操作就被覆盖掉了。
操作优先级对战斗的影响是巨大的,由于攻击和治疗无法同时进行,所以如果你的 creep 上同时包含 ATTACK 和 HEAL 的话,你可能会陷入 “这个 creep 为什么一直治疗自己而不进攻” 的疑惑之中。
解决这个问题的方法就是,孵化两个或多个 creep 组成小组,一个 creep 专门负责进攻,而另一个 creep 则专心治疗。我们在下文会对小组的分工进行介绍。这里,我们先来介绍一个幸运儿 —— RANGED_ATTACK
。
从刚才的图里你可以发现,它和 HEAL
并没有冲突!是的,这也就是为什么 RANGED_ATTACK
更受欢迎的原因。它可以边攻击边奶自己,所以不需要什么战斗小组,自己一个人就可以扛起完整的战斗。我们稍后会介绍这种类型 creep 的身体配置。
如果你想了解有关操作优先级的概念的话,点击 同步动作及优先级 即可查看。接下来,我们先来了解一下几个比较常用的战术:
战术
接下来介绍的战术大多是在前期难以承受对方防御力量时使用的,而当你房间实力可以支持你造出足够强大的 creep 时,记住莽就完事了。
1. 骑墙
这种操作在新手直接的战斗中很有用处,当你的 creep 因为实力不足无法接近对方的 tower 时,先消耗完 tower 的能量,然后趁其还没有来得及补充时就将其摧毁 是一个可行的办法。那么怎么可以有效的消耗对方的能量呢,这就是接下来要说的骑墙:
众所周知,tower 的攻击范围可以覆盖整个房间,而且距离越远伤害越低。那么我们是不是可以通过在一个房间入口处左右横跳不断出入来实现 tower 的能量消耗呢?是的,进入房间后承担足够的伤害,然后迅速出房间安全回血,回满之后再次进入房间承受伤害。通过这种方法,你可以以极低的代价消耗完对方 tower 的能量。
这种战术在清理挂机的新手玩家时尤其好使。但是这种方法得以实现的根本是 对方的能量填充能力 < 你的消耗能力(10 energy/t)。当你发现对方可以轻松的把你消耗掉的能量填满时,请停止这种操作。
2. 遛狗
由于攻击和移动并没有优先级冲突,所以我们可以实现类似走 A 的操作,这种操作在RANGED_ATTACK
对战ATTACK
效果尤为显著。通过控制移动方向和范围攻击,你可以在对方根本碰不到你的情况下将其击杀。但是由于方向控制不能仅仅是朝敌方 creep 的反方向移动(很容易被逼到墙角卡住),所以相应移动逻辑的实现也是难点之一。
这种操作一般常见于过道的遭遇战,或者在攻城时遭遇了敌方的主动防御。不过如果你刚开始写战斗代码的话,可以无视这部分逻辑,先完成最基础的进攻指定旗帜的逻辑,然后靠手操移动旗帜来控制进攻目标。
3. 顶塔
受到教程的影响,很多玩家的 tower 防御逻辑就是优先攻击离 tower 最近的单位。所以,我们就可以通过造出一组足以承受 tower 最高伤害的 creep([ TOUGH * 25, MOVE *25]
+ [HEAL * 25, MOVE * 25]
* 2)直接顶到 tower 跟前来拉仇恨,同时进攻单位越过 tower 干掉其他建筑。
虽然这不失为一种战术,但是我并不推荐把这种操作应有在实际战斗中,原因是 tower 的最高伤害是 600 点,而一个 25 HEAL 的 creep 一次才只能恢复 300 点 hits。考虑到 HEAL 的造价,在前期很有可能难以快速形成足够的战斗力。并且你并不能确定敌方的 tower 防御逻辑,万一对方的逻辑是攻击距离最近并且有攻击型身体的话,那么这种战术的效果会大打折扣。
强化战斗单位
接下来就是本文的正题了,当你可以生产满 part creep 并且有能力进行 boost 时,就说明你可以正式的开始对外作战了。接下来,我会简单介绍一下 boost 相关的概念以及常用的战斗单位配置。
- 什么是 boost?:顾名思义,boost 就是针对 creep 的强化,通过不同的化合物,可以对 creep 的指定能力进行强化。关于可以进行的强化详细信息见 该表。creep 的战斗能力可以由此得到巨大的增强,要注意的是,一个身体部件只能被强化一次。
-
怎么进行 boost?:将强化所需的化合物放进 lab。然后将待强化 creep 移动到 lab 旁边并执行
StructureLab.boostCreep()
方法。 -
boost 的一些小知识:
-
StructureSpawn.renew()
操作会清除 creep 身上的强化效果。 - 被强化过的 creep 死后会掉落一定量的强化材料(npc 入侵者也是如此)。
- 你可以在同一 tick 使用多个 lab 对同一 creep 进行强化。
- lab 只有在强化 creep 时才消耗能量,而合成化合物时不消耗能量。
- boost creep 没有冷却,但是 unboost 有冷却,并且强化效果越高,冷却越长。
-
接下来介绍一些比较常见的 boost 战斗配置,你可以配合 身体部件计算器 来更全面的了解下面配置的能力。需要注意的是,战斗强化一律推荐使用 3 级化合物,除非打的玩家防御过于薄弱 :
1. 一体机
- 身体组件:
[ TOUGH * 12, RANGED_ATTACK * 5, MOVE * 10, HEAL * 23 ]
(注意这里仅用于说明,不是语法糖,直接拿去用会报错) - 强化所需化合物:
XGHO2
、XKHO2
、XZHO2
、XLHO2
。
最经典的 boost 战斗单位,这种配置可以抗住 6 tower 的最大输出并还有一定的盈余。但是可以看到,抵抗伤害用掉了大量的身体部件,这种单位只有 5 个 RANGED_ATTACK 可以用来输出,伤害不太高但是可以造成 AOE 伤害,所以这种单位一般用于防御墙壁被破开之后的快速建筑摧毁工作。如果房间内的 tower 数量不足 6 个的话,也可以适量降低 TOUGH 和 HEAL 的数量来提升攻击能力。
2. 双人拆墙小组
- 身体部件: (注意这里仅用于说明,不是语法糖,直接拿去用会报错)
- 拆墙单位:
[ TOUGH * 12, WORK * 28, MOVE * 10 ]
- 治疗单位:
[ TOUGH * 12, HEAL * 28, MOVE * 10 ]
- 拆墙单位:
- 强化所需化合物:
- 拆墙单位:
XGHO2
、XZH2O
、XZHO2
- 治疗单位:
XGHO2
、XZHO2
、XLHO2
- 拆墙单位:
很常用的拆墙配置,可以单体抵抗 6 tower 的最大输出后还有盈余。并且这种强化下的 creep 可以造成 5.6k/t 的高额伤害。就算在抵达战场前需要用掉 300 t 的时间,这种配置的单位依旧可以在剩下的时间里造成高达 6.7 M 的伤害。但是要注意的是,这种配置对敌方的 creep 单位没有反抗能力,虽然这个小组足够抵挡很多 creep 的攻击,但是如果对方的主动防御做的比较好的话,你可能还是需要额外配置一些单位来进行防御。
但是要注意,双人组并不是无敌的,下面两种情况都可能会导致双人组被击杀:
A、两人脱节
当治疗单位和攻击单位离开了一格距离后,治疗单位的治疗量将会大幅下降,导致无法把对方 tower 造成的伤害奶回。所以请保证治疗单位无论如何都紧紧的跟着攻击单位。
B、对方分散攻击
记住你的治疗单位每 tick 只能治疗一个单位,但是对方的 tower 却可以攻击多个,如果对方的 tower 同时攻击了你的治疗单位和进攻单位,那你的治疗单位选择一个进行治疗后必然会导致另一个血量不满,这样的伤害积累下去迟早会导致 TOUGH
被击穿。
不过大多数玩家的 tower 逻辑还是 “进攻最近的地方单位”,只要保证攻击单位始终在最前方。两人小组依旧可以击溃大多数防御的。并且如果离 tower 较远,没有承受到最大伤害,治疗单位也可以靠着溢出的奶量把血线拉回来。前提是 TOUGH
还没被击穿。
3. 四人小组
首先要说明一点,四人小队的最佳阵型就是上图中的方阵,这样可以让每个单位都能治疗到其他三人以及快速的进行转向。所以除去通过狭窄地形需要变换队形,其他时间一定要保持方阵队形同步移动。而上图也是四人小组常见的两种组织模式:
两进攻两奶:你可以直接把两队上面的双人小组组合在一起,或者把上面的拆墙单位的
WORK
换成RANGED_ATTACK
/ATTACK
,然后组成 1 个 WORK,1 个 ATTACK,2 个 HEAL 的四人小组。四个一体机:这种组织模式比较均衡,并且由于人数的提升,我们每个一体机上的
HEAL
就不需要那么多(如果对方房间比较狭窄的话,尽量保证每个单位的HEAL
不低于 12 个,这样在拆成22小队通过狭窄地形时不至于被对方各个击破 ),这样就可以腾出来更多部件来放RANGED_ATTACK
或者ATTACK
来提高伤害(.attack()
可以和.rangedAttack()
同时执行)。自由搭配:还有一种比较常见的用法是一个黄球(
WORK
)+ 一个红球(ATTACK
)+ 两个蓝绿球(HEAL
以及少量的RANGED_ATTACK
),这种搭配比较均衡,能适应的进攻场景也比较多。
某些玩家的防御机制会优先“照顾”进攻小组的奶妈,而这种四人小组可以多人互奶,有效的提升了单位的存活能力。并且多个进攻单位的类型组合,也可以有效的提升进攻小组的攻击能力。但是与此同时,四人相互之间的配合也会提高进攻代码的复杂程度,所以请在进攻前进行有效的测试。一定不要脱节,一定要提前考虑好如何分配奶量。
4. 人海战术
讲道理,这种战术一般发生在 shard0 ~ 2,shard3 由于 cpu 的稀缺导致不太能协调起这么大规模的战争。人海也是可以拆分成最基本的 1 进攻 1 奶的配置,或者单纯的堆一体机。而进攻单位也多为 RANGED_ATTACK。这种战术常见于对 5 级要塞的进攻,而如果你就是在 shard3 的话,那么基本不用担心会有人拿这种战术打你。
核武器
OK,说完了 creep,我们现在来了解一下非常规手段,现在出场的就是我们大名鼎鼎的 Nuker!相信很多新手玩家在看到别人家里竖着这么一根大棒子就会不由的心生恐惧。其实核弹在正面战场中的作用并不大,由于其着陆时间较长(50,000 tick 约等于一天多),这就导致了 Nuker 一般被用在以下方面:
- 大规模战争时进行牵制,例如当敌人有很多房间时,派 creep 进攻目标房间,然后向其他房间发射核弹来制约其支援能力,这样可以变相的降低目标房间的能量存储,从而降低进攻压力。
- 持久战中的破墙,相对于要使用大量 cpu 和化合物的 creep 进攻,还有可能面对敌方的主动防御,nuker 拆迁可以说是简单而又快捷。但是由于 nuker 着陆时间过长,有可能导致对方针对性刷墙。
砸自己:向其他玩家展示你心狠手辣的一面。
相对于大规模战争而言,Nuker 更适合来“清除”那些尚未成型、只有一个房间的新手玩家。相对于派兵打过去,直接扔核弹明显更加简单快捷,并且对于已经成规模的老玩家来说,核弹的成本并不高,制约核弹发射的从不是原材料,而是它的冷却时间。不过,虽然话是这么说,反感这种“屠幼”行为的人还是很多的,这种大量降低外交点数的行为日后可能会把你愉悦送走。
战前侦查
想要发动进攻,战前侦察是必不可少的,这会很大程度的关系到你进攻的成功与否。尤其是想要对一个已经成规模的玩家发起进攻。接下来我会介绍如何有效的进行侦察。
1. 敌方实力
这个不用多说,对方硬实力的强弱很大程度上决定了你要不要对他发起进攻,我这里就简单提几个比较重要的要素:
- 要进攻房间城墙的厚度,自己有没有把握在对方反应过来开始手操前将其打穿。
- 是否有已经装填完成的核弹,有多少,自己是否可以在发射前将其摧毁。
- 房间是否有 T3 化合物战备。
- 对方是否具有(自动)化合物合成能力。
- 对方房间的数量,有多少在你的 creep 打击范围之外,又有多少在你的 nuker 打击范围之外。
2. 敌方是否活跃
这个可以说是决定你是否可以轻松取胜的一个要素,你可以通过以下方法检查敌人是否活跃:
- 对方在 slack 是否活跃?这个是最直观的方法,虽然有可能只是喜欢水群,但是如果还在水群就说明收到被攻击邮件后还是有很大机率上号和你对线的。
- 是否有新开房间?
- 是否有新的建筑工地?(不排除是代码自动放置,视情况而定)
- 是否建有 Factory?如果对方有不少 8 级但是没有 factory 的话,那他很有可能已经挂机很久了(不排除是懒得写代码了)。
3. tower 反应机制
如果你的等级还比较低的话,多通过房间回放研究对方的 tower 是怎么攻击 npc 入侵者的。并且通过对方 creep 的运动轨迹和建筑位置来估计其 tower 的能量填充效率。如果你已经有能力发动 boost 攻击的话,研究个鸟 tower,莽就完事了。
4. 敌对玩家关系
这个可以说是最容易忽略但是又相当重要的一步了。如果你了解不到位的话,很有可能会被他的盟友打个搓手不及甚至被锤到裂开。你可以通过下面几个方式来了解对方和其他玩家的关系:
- 对方在 slack 是否活跃?是受欢迎还是冷场王?有没有可以拉拢到的玩家?
- 对方是否加入了 联盟?他的盟友能否及时支援或者偷到你屁股?
- 多和你附近的玩家交流,并询问其对你进攻目标的看法,借此来了解目标玩家在其所在区域的外交关系和势力分布。
总结
以上就是对 screep 进攻策略的一个简单介绍,screeps 世界中的战斗 ai 是后期上限非常高的两个研究方向之一(另一个是完全自动化 ),如果你想深入研究的话可以研究下高位面玩家的战斗回放(在 yuetube 上也能找到一些大佬们对自己战斗的复盘,有能力的可以去看看 )。还是那句话,在没有能力发动 boost 进攻时请无视我上面的介绍,专心发育。一顿操作余钱过千也比刚爆了波兵就运营垮掉要好。
了解更多 Screeps 的中文教程?欢迎访问 Screeps - 中文系列教程!