搜索
您的当前位置:首页正文

AI系统设计

来源:爱够旅游网


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系统架构(不同循环时间,可选择多种行为

因篇幅问题不能全部显示,请点此查看更多更全内容

Top