Background
攻略星球基地

星球基地 AI代码解析 全角色执行任务优先级汇总

售梦者
11/2/2015

星球基地 AI代码解析 全角色执行任务优先级汇总

首先,我要介绍一段关键代码,它决定了角色在空闲时的触发机制。一旦角色进入某个任务状态,就不会被打断,绝对不会!

Article Image

这就是AI算法的核心:当角色空闲时,会自动判定任务优先级列表,触发相应的任务状态。

接下来,我们来分析一种特殊角色:保安。游戏中的AI类型分为搬运机器人、建筑机器人、挖矿机器人、保安、人类殖民者、入侵者和游客。

Article Image

因此,我们不能把保安当作普通人类看待。以下是保安的优先级列表:

Article Image

保安的优先级依次是:拿武器消灭入侵者、生存需求、查看高级监控、查看普通监控、喝饮料、放松锻炼、返回室内建筑、在室内看风景。值得注意的是,消灭入侵者的优先级甚至高于生存需求。

生存需求是一个子项,包含各种属性低时的补给触发机制。很多新手玩家遇到保安到死都在看监控而不反击入侵者的情况,原因就在于此。

即使攻击入侵者的优先级高于看监控,但如果保安已经在执行看监控任务,在任务完成前不会触发空闲判定机制。这就是为什么保安有时会显得过于耿直。

接下来是普通殖民者的优先级列表。制作组将所有职业的任务混合在一起,需要玩家自行对应。

Article Image

殖民者优先级从高到低为:拿武器攻击入侵者、攻击后扔掉武器、修理被陨石砸坏的室内建筑、生存需求、制造紧急食物、搬运交易货物、建造、休闲、拿零件维修、拿医疗包救人、高优先级矿场挖矿、制作物品、运送建筑材料、寻找制作台资源、找饮料、低优先级休闲、无优先级挖矿、搬运物品到仓库、进入室内、让路。

最后是星际海盗(入侵者)的优先级:攻击殖民者、进入室内、在室内闲逛。虽然看起来简单,但背后有复杂的逻辑嵌套。

Article Image

入侵者攻击殖民者的函数会寻找最近的站立角色。如果范围内没有目标,函数返回false,入侵者就会执行下一个优先级任务:进入室内。

Article Image

findneareststanding函数会枚举所有殖民者,排除死亡或倒地状态,计算限制距离内最近的目标并返回。

Article Image

得到最近目标后,goTarget函数让入侵者接近目标,其中包括走向最佳气闸的逻辑。

Article Image

setradius参数设定当入侵者距离目标8个单位时开始开火。如果找不到目标,入侵者会进入室内并随机游荡,直到下次判定满足攻击条件。

Article Image

这套AI逻辑通过多层嵌套实现了复杂的行为,理解这些优先级对优化基地管理至关重要。