评论

微信小游戏制作工具——随心设计(7)

AI打击动作&增援部队设置

前文谈到的“AI行动过程”函数中,移动指令组合 与“AI打击动作”函数占了相当多的比重,总结起来就是:锁定距离最近的目标、挑选武器、在射程内就发动攻击、不在射程内就向其位置移动、移动后再次检测是否进入射程、够得到就打够不到下次再说。

就操作难度上来讲“移动”与“打击”都差不多, 一切操作命令都是凭借战场单位克隆体ID这一关键字串,先指定待执行的ID字串、再向所有战场单位克隆体发出通知消息,ID字串符合条件的克隆体接到通知后执行对应的事件脚本。 但是AI打击动作”因为又调用了数个功能模块,将其表面的复杂程度大幅降低,比如根据采用的武器类型:通知 方位修正盘 专用于主炮打击动作; 调用“被攻击战舰详情”(或编队)与发出通知“攻击战舰”或“攻击编队” 来执行普通战术武器攻击。 所以这个“AI打击动作”函数不需要多大的篇幅来介绍,要说唯一特别点的地方那就是:在执行普通战术攻击命令时,如果主动方与被动方类型同为编队、恰好双方又处于相邻位置,则不论之前选定了何种战术武器都强制更改为近身格斗,然后或进入“暗箱式格斗处理”、或切换到格斗战场。

当所有AI行动完成后还要处理几件事才会开始新回合、切换回我方行动状态。

如图所示,我们这里着重介绍一下派遣增援部队这一块。

首先我们统计下当前战场中各个阵营的敌人单位剩余数量,当灰星舰机单位数量如果小于15时,其中的星舰单位将按一定的概率释放编队、或比其型号弱小的星舰,如果是灰星侵略军团的旗舰则按照 本方单位数小于6时 释放除其本身之外的任意灰星部队单位;海盗军团星舰单位派遣增援的本方数量阈值是:小于12时。

当派遣增援的变量不为空值时,到了判定增援单位落点的时候了。我们这里将该单位落点初步定义为执行派遣的星舰上下左右4个临近点放入预判坐标列中,首先根据该点位的合理性(比如星舰在战场边缘时,边缘外部就属于不合理点位)、点位是否处于背景不可穿越处(如背景行星体)、还有该位置原本就有单位存在的情况,把不符合条件的点位从预判坐标列中删除,最后在剩余项中随机抽取一个作为增援单位的落点。当然这个逻辑也会因完全没有符合条件的落点,而取消派遣该增援单位的行为。

当预判坐标列项目数大于0时,根据派遣单位名称、归属(当然是指定派遣的阵营)等信息,增添空域方面的“”数据、和建立详细属性的“”对象数据,最后克隆该单位并完备剩余的“”“”数据,该增援部队单位派遣完成。

以上所介绍的增援方式其实完全依赖于该阵营中有星舰(特别是大型星舰)存在的情形,如果只剩下机甲战斗编队单位存在时,就失去了随机获得增援的条件,这也使得即时尽快地消灭敌人星舰成了首要的目标。但除此之外还有一种战役地图自带的增援部队情况,我们看到在派遣编队的通知命令完成后,除了“胜负判定”还有“战场初始化”函数的再次执行。这个函数本来就是在战役开始时用来设置战场所有元素的,但它其实是可以重复调用的,因为它的表格元素中关于单位的出场是有回合条件设置的,即:大部分单位在第一回合上场、还有少部分是过了数回合后登场(比如BOSS)。

依赖于战役本身固有设定登场的部队不需要任何先决条件,只要战役还没有结束就行。它的登场地点可以是固定、也可以是范围内随机,不过由于战场上的很多元素本就是范围随机分布的——前面提过,而且因为战斗过程局面的不确定变化,倘若出现:在下回合即将登场的部队 没有了落脚点——这种极端情景,处理方法也很是简单粗暴——取消它登场的资格,哪怕是BOSS! (目前该情况尚未出现)

忽然觉得最主要的东西都介绍得差不多了,或是仅仅“我觉得”罢了! 但是目前介绍过的内容在这款游戏整体占比还是没有超过一半,考虑到其他部分毕竟也是不可或缺的组成,那就再挑选一些关联密切的地方说一说吧!

下一篇讲讲空域战场 胜负判定 与 战利品 获取方面的内容吧!

最后一次编辑于  2022-06-26  
点赞 1
收藏
评论
登录 后发表内容