魔兽3.3.5版本AI模块代码拆分解析(魔兽3.3.5模块是状态机)

本文是主讲怪物方向的AI

一、简介

1)大怪物的AI主要涉及两个类:BossAI和WorldBossAI

继承顺序

BossAIWorldBossAI都继承来自ScriptedAI类
ScriptedAI类继承来自CreatureAI类,
Creature类继承来自UnitAI类

②个例举例(继承BossAI)
<1>科林·狄尔布鲁(Coren Direbrew)

struct boss_coren_direbrew : public BossAI

在这里插入图片描述

<2>烟网女王(Mother Smolderweb)

struct boss_mother_smolderweb : public BossAI

在这里插入图片描述

<3>巨龙之王维姆萨拉克(Overlord Wyrmthalak)

struct boss_overlord_wyrmthalak : public BossAI

在这里插入图片描述

③WorldBossAI继承举例

1)Azuregos(艾索雷葛斯)
struct boss_azuregos : public WorldBossAI

在这里插入图片描述

2)翡翠龙(emerald_dragon)
struct emerald_dragonAI : public WorldBossAI

在这里插入图片描述

2)普通小怪的AI,基本继承类:ScriptedAI

①分别举例说明:
1)暮光志愿者AI

struct npc_twilight_volunteer : public ScriptedAI

在这里插入图片描述

2)Millhouse Manastorm(米尔豪斯·法力风暴)

struct npc_millhouse_manastorm : public ScriptedAI

在这里插入图片描述

3)传奇怪物的AI,继承CreatureAI类

①the lich king巫妖王的全部AI
在这里插入图片描述

②Valithria Dreamwalker (瓦莉瑟瑞娅·梦行者) 的全部AI
在这里插入图片描述

③Algalon the Observer(奥尔加隆,观察者之眼)
在这里插入图片描述

④Sister Svalna(斯瓦尔娜修女)

在这里插入图片描述

4)人物AI,PlayerAI类

5)PassiveAI(被动AI):

  • 说明
    PassiveAI类通常用于实现无攻击性的NPC或生物的行为。这些NPC通常不会主动攻击玩家或其他生物,而是表现出一种被动的行为,如漫游、站立、交谈等。PassiveAI类的目的是为了让这些NPC在游戏中营造出更真实、更丰富的环境。

6)PossessedAI(被占据AI):

  • 说明
    PossessedAI类用于实现被玩家控制的角色的行为。这些角色可以是玩家角色的宠物、召唤物或其他受玩家操控的单位。PossessedAI类的作用是让这些角色能够响应玩家的指令,并执行相应的行动和技能。

7)NullCreatureAI(空生物AI):

  • 说明
    NullCreatureAI类通常用于实现没有具体行为和功能的生物。这些生物可能只是作为环境装饰或背景元素存在,没有实际的交互或行为逻辑。NullCreatureAI类的作用是为这些生物提供一个空的AI实现,使其在游戏中存在但不参与实际的游戏机制。

8)CritterAI(小动物AI):

  • 说明
    CritterAI类用于实现小动物(Critter)的行为。小动物通常是一些无害的生物,如松鼠、兔子等。CritterAI类的目的是为这些小动物提供一些随机动作和行为,增加游戏世界的真实感和活力。

9)TriggerAI(触发器AI)

  • 说明
    监测游戏中的触发器或事件,并在满足特定条件时执行相应的行为。触发器可以是游戏中的特定区域、玩家的行动、特定时间点等。当触发器被激活时,TriggerAI会根据预设的条件和行为定义来决定角色或NPC的反应。

10)AggressorAI(攻击者AI):

  • 说明
    AggressorAI用于定义攻击性NPC的行为逻辑。这些NPC通常是敌对的角色,会主动寻找并攻击玩家或其他目标。AggressorAI负责定义NPC的攻击目标选择、攻击方式、技能使用等行为。它使NPC能够主动发起攻击并进行战斗。

11)CombatAI(战斗AI):

  • 说明
    CombatAI用于实现战斗相关的NPC行为逻辑。它与AggressorAI类似,但更广泛地适用于各种类型的战斗角色。CombatAI负责定义NPC在战斗中的行为,包括攻击、防御、移动、技能使用等。它使NPC能够在战斗中表现出合理的战术和行动。

12)CasterAI(施法者AI):

  • 说明
    CasterAI用于实现施法型NPC的行为逻辑。这些NPC通常使用法术或技能进行攻击。CasterAI负责定义NPC施法的选择和顺序,以及如何应对不同的战斗情况。它使NPC能够根据具体情况选择合适的法术或技能,并在战斗中以施法者的身份进行攻击。

13)ArcherAI(弓箭手AI):

  • 说明
    ArcherAI用于实现弓箭手类型的NPC的行为逻辑。这些NPC使用远程武器(如弓箭)进行攻击。ArcherAI负责定义NPC在战斗中的射击策略、目标选择和攻击方式。它使NPC能够以弓箭手的身份进行远程攻击,并采取合适的战术进行射击。

14)TurretAI(炮塔AI):

  • 说明
    TurretAI用于实现炮塔或防御设施的行为逻辑。这些炮塔通常是固定在特定位置上的防御装置,用于攻击敌人。TurretAI负责定义炮塔的目标选择、攻击方式和射击频率等行为。它使炮塔能够自动识别并攻击敌人,提供防御和控制区域的能力。

15)VehicleAI(载具AI):

  • 说明
    VehicleAI用于实现游戏中的载具(如飞机、坦克、船只等)的行为逻辑。VehicleAI负责定义载具的移动、攻击、防御等行为。它使载具能够根据玩家的操控或AI指令进行移动和战斗,并提供特定类型载具的独特功能和能力。

16)TotemAI (图腾AI)

  • 说明
    在游戏中,图腾通常代表着特殊的力量或能力,可能具有各种不同的效果,如增益效果、伤害效果、治疗效果等

17)GuardAI(守卫AI)

  • 说明
    管理和控制守卫角色在游戏中的行为和动作,确保它们有效地执行守卫任务。守卫角色通常被安排在特定位置或区域,负责保护该区域免受敌对角色或其他威胁的侵犯。

18)NullGameObjectAI(空游戏对象AI):

  • 说明
    NullGameObjectAI是一个在游戏中代表空或无效游戏对象的AI类。它通常用于处理游戏中可能出现的空对象或无效对象的情况。NullGameObjectAI的作用是提供一种处理这些情况的机制,以避免潜在的错误或异常情况。

19)GameObjectAI(游戏对象AI):

  • 说明
    GameObjectAI是一个通用的游戏对象AI类,用于管理和控制游戏中的普通游戏对象的行为和交互。它可以处理游戏对象的移动、碰撞、状态变化等方面的逻辑,并根据游戏规则和设计来控制游戏对象的行为。

20)SmartGameObjectAI(智能游戏对象AI):

  • 说明
    SmartGameObjectAI是一个更高级的游戏对象AI类,具有更复杂和智能化的行为和决策能力。它可以根据游戏环境和条件进行推理和决策,并采取相应的行动。智能游戏对象AI通常用于实现游戏中的敌对角色、队友角色或其他具有复杂行为的角色。