Al系统
1怪物战斗状态
-触发AI的条件,此状态跟战斗行为无关。 进入战斗状态条件
1. 2. 3.
怪物受到攻击 怪物攻击目标
被动触发(当怪物每次受到攻击时,使一定范围内所有怪物进入战斗状态
)。
结束战斗状态状态条件(同时满足)
5秒内受到攻击 1.处于战斗状态的怪物
2. 处于战斗状态的怪物 5秒内不攻击目标 3. 处于战斗状态的怪物 5秒内不受被动触发。
函数设置
Bool BattleState(MonsterlD)
〃0代表编号为MonsterlD的怪物未进入战斗状态,1代表处于战斗状态
2 AI系统架
构
简单的串行
AI系统架构(每个循环内选择一种行为)
注:数据初始化 见下面说
明。
3数据库记录(DataBase)
1)怪物属性表
字段名 Attack_type 数据类型 Int 说明 攻击类型 见攻击类型说明 AI0 AI1 AI2
Int Int Int AI类型 AI类型说明 AI3 Int 2)攻击类型字段说明
十位:攻击目标选择参数,攻击对自己伤害最高的目标 ⑴。
个位:攻击类型选择参数,选用攻击力最高的攻击类型 择攻击类型(1)。
3) AI类型说明 AI类型 10X (0)或者轮流攻击视野内目标 (0)或者根据目标的最低防御选
说明 条件:在计时器的上一个循环内受到伤害 执行:召唤周围 X类型怪物协助攻击目标 条件:在计时器上一个循环内未受到伤害,并且有 X类型怪 物呼唤其协助攻击 响应视野范围内最近的 X怪物的召唤协助其攻击目标 11X
4) AI类型字段说明
百位为1代表协助攻击型AI 十位代表呼唤(0)或者响应⑴
各位代表呼唤和响应的怪物类型,所有怪物
(0),L1类怪物(1),L2类怪物(2)。
4 AI类型的实现
1) AI计时器相关函数设置
Bool MonsterCall(MonsterlD) Mon sterCall(Mo nsterID)==0
//怪物呼唤协助攻击
〃怪物编号(CMap管理)为MonsterlD的怪物未呼唤协助 〃怪物编号(CMap管理)为MonsterID的怪物呼唤协助攻
//怪物受到伤害值
//怪物编号为MonsterID的怪物受到累积伤害 n AI执行但未结束战斗时,对于每个怪物的以上数据清零。
攻击
Mon
nsterID)==1
sterCall(Mo
击 Int Mon sterBeAtk(Mo nsterlD)
Mon sterBeAtk(M on sterID)==n
数据初始化:AI执行后或者无
2) Al类型(10X,11X)处理流程
10X部分
MonsterBeAtk
受到伤害:检测在计时器的上个循环内怪物自己是否受到伤害。 呼唤协助攻击:呼唤视野范围内的怪物协助攻击目标。
11X部分
未受伤害:检测在计时器的上个循环内怪物自己是否未受伤害。 视野内怪物呼唤:检查缓存中是否存在怪物的呼唤信息。
呼唤和响应类型相同:对比两个怪物数据库 AI字段最后一位匹配关系, 确定可匹配的怪物。 确定离自己最近的怪物 :可匹配的怪物内,查询离自己最近的怪物。 变更攻击目标:将自己的攻击目标变更为要协助怪物的攻击目标。
5 AI表现样例
1)角色 怪物A,B: L1类
AI字段为 AI0=100 AI仁111
//受攻击时召唤所有怪物协助攻击
//未受攻击时,响应 L1类怪物呼唤协助其攻击目标
AI2=110 II未受攻击时,响应所有怪物呼唤协助其攻击目标 怪物C: L2类 AI字段为:
AI0=100 II受攻击时召唤所有怪物协助攻击 AI仁112
II未受攻击时,响应 L2类怪物呼唤协助其攻击目标
玩家P1,P2
2) 玩家行为 时间轴(秒) 玩家行为
C发现P1,攻击P1,P2无动作 0
P1攻击C, P2无动作 1
P1,P2攻击C,P2对C伤害高出很多 2
P1攻击C,P2攻击B 3 P1攻击A,P2攻击B 5 3) 怪物表现
假定定时器一个循环为 2秒,6秒内所有怪物不死亡。
时间
(循环3)-6
|攻击P1
秒
攻击P1
i k
(循环2)-4
攻击P2
秒
攻击P1
(循环1)-2攻击P1
秒
战斗状态
|和平状态
A
怪物
行为详解: 时间轴(秒) 怪物 A 0 B C A 1 B C A 2 B C A 3 B C 表现 和平状态 和平状态 进入战斗状态,主动攻击 P1 C受击,触发A进入战斗状态 C受击,触发B进入战斗状态 继续攻击P1 AIO,1条件不满足,满足 AI2条件,协助C攻击P1 AIO,1条件不满足,满足 AI2条件,协助C攻击P1 AI0条件满足,呼唤所有怪物,根据伤害值选择 P2 继续攻击P1 受到P2攻击,攻击P2 根据伤害值,选择攻击 P1 AI0条件不满足,满足 AI1条件,协助B攻击P2 A
4 B C A 满足AI0条件,呼唤所有怪物,攻击 P2 满足AI0,呼唤所有怪物,攻击 P1 根据伤害值,选择攻击 P1 继续攻击P2 继续攻击P1 满足AI0,呼唤所有怪物,继续攻击 满足AI0,呼唤所有怪物,继续攻击 所有AI条件不满足,继续攻击 P1 P2 P1 5 B C A 6
B C 由上表可得,怪物可以实现优先保护自己,其次保护同类,最后保护团队的分优先级 AI模式。
附:复杂AI系统架构
复合(串行+并行)AI系统架构(不同循环时间,可选择多种行为
)
因篇幅问题不能全部显示,请点此查看更多更全内容