AI系统设计

  • 格式:doc
  • 大小:321.50 KB
  • 文档页数:5

AI系统
1 怪物战斗状态
-触发AI的条件,此状态跟战斗行为无关。

进入战斗状态条件
1.怪物受到攻击
2.怪物攻击目标
3.被动触发(当怪物每次受到攻击时,使一定范围内所有怪物进入战斗状态)。

结束战斗状态状态条件(同时满足)
1.处于战斗状态的怪物5秒内受到攻击
2.处于战斗状态的怪物5秒内不攻击目标
3.处于战斗状态的怪物5秒内不受被动触发。

函数设置
Bool BattleState(MonsterID)
//0代表编号为MonsterID的怪物未进入战斗状态,1代表处于战斗状态
2 AI系统架构
简单的串行AI系统架构(每个循环内选择一种行为)
注:数据初始化见下面说明。

3 数据库记录(DataBase)
2)攻击类型字段说明
十位:攻击目标选择参数,攻击对自己伤害最高的目标(0)或者轮流攻击视野内目标(1)。

个位:攻击类型选择参数,选用攻击力最高的攻击类型(0)或者根据目标的最低防御选择攻击类型(1)。

4)AI类型字段说明
百位为1代表协助攻击型AI
十位代表呼唤(0)或者响应(1)
各位代表呼唤和响应的怪物类型,所有怪物(0),L1类怪物(1),L2类怪物(2)。

4 AI类型的实现
1)AI计时器相关函数设置
Bool MonsterCall(MonsterID) //怪物呼唤协助攻击
MonsterCall(MonsterID)==0 //怪物编号(CMap管理)为MonsterID的怪物未呼唤协助攻击
MonsterCall(MonsterID)==1 //怪物编号(CMap管理)为MonsterID的怪物呼唤协助攻击
Int MonsterBeAtk(MonsterID) //怪物受到伤害值
MonsterBeAtk(MonsterID)==n //怪物编号为MonsterID的怪物受到累积伤害n
数据初始化:AI执行后或者无AI执行但未结束战斗时,对于每个怪物的以上数据清零。

2)AI类型(10X,11X)处理流程
➢10X部分
受到伤害:检测在计时器的上个循环内怪物自己是否受到伤害。

呼唤协助攻击:呼唤视野范围内的怪物协助攻击目标。

➢11X部分
未受伤害:检测在计时器的上个循环内怪物自己是否未受伤害。

视野内怪物呼唤:检查缓存中是否存在怪物的呼唤信息。

呼唤和响应类型相同:对比两个怪物数据库AI字段最后一位匹配关系,确定可匹配的怪物。

确定离自己最近的怪物:可匹配的怪物内,查询离自己最近的怪物。

变更攻击目标:将自己的攻击目标变更为要协助怪物的攻击目标。

5 AI表现样例
1)角色
怪物A,B:L1类
AI字段为
AI0=100 //受攻击时召唤所有怪物协助攻击
AI1=111 //未受攻击时,响应L1类怪物呼唤协助其攻击目标
AI2=110 //未受攻击时,响应所有怪物呼唤协助其攻击目标
怪物C:L2类
AI字段为:
AI0=100 //受攻击时召唤所有怪物协助攻击
AI1=112 //未受攻击时,响应L2类怪物呼唤协助其攻击目标
玩家P1,P2
2)
3) 假定定时器一个循环为2秒,6秒内所有怪物不死亡。

时间怪物
(循环1)-2
(循环2)-4(循环3)-6A
B
C
由上表可得,怪物可以实现优先保护自己,其次保护同类,最后保护团队的分优先级AI模式。

附:复杂AI系统架构
复合(串行+并行)AI系统架构(不同循环时间,可选择多种行为)。