`
wjjxf
  • 浏览: 239878 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MMORPG游戏的人工智能(AI)和行为树设计

 
阅读更多

什么是MMORPG的AI?

  玩MMORPG的地球人都知道,MMORPG的AI实在是弱智的要死。即使是在WOW这样顶级的游戏中,AI也是有限得掉渣,绝大部分NPC都像一个 木桩一样,哪怕是精心设计的BOSS也就只有一些战斗AI。尽管有很多人把动画,或者自动寻路之类的功能也叫做AI,但是我们并不讨论这种基本功能。我们 讨论的AI是指,可以使得NPC好像一个真人一样活动的AI。拥有这样AI的NPC看起来就不再是那个只有血条和攻击力的模型,而给玩家的感受会是一个有 信念、欲望和意图的生命。从更广泛的意义上说,如果整个游戏世界是“高AI”的,那么这个游戏世界会充满着自由度。这意味着玩家可以在游戏中“创造”出前 所未有的武器、科技甚至会有能力改变整个游戏世界外貌和文明。如果真正出现这样一款MMORPG,那么赢得粉丝们的惊声尖叫应该并不意外。品管中心孕育中 的项目“失落的大陆”目前就正在向这个方向努力中,希望能够取得一定水准的突破。

  AI系统

  一个典型的AI系统包括,感知,导航和决策三个字系统。对于游戏来说,感知系统是可以“作bi”的,不需要NPC去“感知”世界,系统可以直接告诉 NPC世界是怎样的。而导航系统,不属于今天的讨论范围。而决策系统才是让NPC看起来可以有自己的意图和信念,所以我们接下来主要讨论一下决策系统。

MMORPG游戏的人工智能(AI)和行为树设计 ...


  AI决策系统的常见模型

  最早,游戏AI决策系统往往是这样写的:

  1. switch(自己){
  2.   case "血量充足":
  3.   打怪();
  4.   break;
  5.   case "快死了":
  6.   补血();
  7.   break;
  8.   case "死了":
  9.   游戏全局->Gameover();
  10.   break;
  11.   }
复制代码

  随着硬件的提高,可以分给AI执行的CPU时间越来越长,老板们对AI的要求自然也提高了,比如说老板可能会想出这样的策略:血量80的时候用魔法补一补就行了,血量60的时候吃个小血瓶,血量40的时候吃大血瓶,血量20的时候赶快逃跑。

  于是AI程序员就需要找到上面这个switch,然后修改里头的case。想象一下,万一碰到了一个Dota高手当老板,心中有着各种很NB的杀敌策 略,需要随时根据环境状态判断利用哪种策略。当策略越来越多,很快,一个带有上万行代码的函数就横空出世了!如果这个时候遇到bug了,甭说修复了,仅仅 是阅读这个函数就恐怕就得呕吐了。。。

  毫无疑问,上面的方法在遇到大量的状态的时候会让代码崩溃,不过经过无数前辈前仆后继用各种切身努力,帮我们提出了一种又一种精简代码的手段。目前常见的AI模型包括FSM(有限状态机,包括HFSM分层有限状态机)和Behavior Tree(行为树)两大类。

  FSM(有限状态机)

  相对于switch-case来说,FSM编程与人类思维相似从而便于梳理,更加灵活。当每种状态被封装之后,就不会再有一个“中央”函数来控制所有 的逻辑,每个状态只要管好它自己就好了。这样复杂的决策系统就被切分两个子系统,不同状态以及状态之间的转化。切分后的这两个子系统的复杂度与原系统比都 大大简化,从而使得代码变得可以维护。FSM在相当多的游戏中被应用,甚至Unreal Engine的脚本语言是直接支持状态编程的。

  当游戏中的NPC决策并不太复杂时候,FSM是非常有效的。比如Half-Life这款游戏,里面的AI被业界称赞了很久,而其中的AI就是通过FSM来实现的。

  我们接下来通过一个简单的例子来认识一下FSM。

  比如一个AI文字表述如下:

  1)平时的状态是巡逻

  2)如果遇到敌人之后打量一下敌人

  3)如果敌人比自己弱小,那就打攻击

  4)如果敌人比自己强大,那就跑逃跑

  那么这个可以很自然的转换成FSM,然后进行编程实现

MMORPG游戏的人工智能(AI)和行为树设计 ...


  带边框的节点表示状态,而箭头上的条件表示状态切换的条件。

  虽然FSM简洁,和人的直觉思维相近,但是FSM也是有缺点的:

  A)由于我们所能做的仅是编辑从一状态到另一状态的转换,而无法做出更高层次的模式功能,所以会导致我们发现自己总是在构建相似的行为,这会花费我们大部分时间。

  B)使用 FSM 实现目标导向的行为需要做很多工作。这是一个大问题,因为大部分有针对性的AI 需要处理长远目标。

  C)FSM 难以并发。当并行运行多个状态机,要么死锁,要么我们通过手工编辑来确保它们在某个程度上能够兼容。

  D)大规模支持较差,即使是分层的有限状态机,也难以大规模扩展。它们往往是在其中夹杂一大块逻辑代码,而非行为编辑模块化。

  E)用 FSM 实现任何设计都需要做大量工作,需要花费设计师的大量时间(并非编程时间),甚至最终这还会成行为中的 bugs 的来源。

  行为树(Behavior Tree)

  行为树是在Next-Gen AI中提出的模型,虽说是Next-Gen AI,但距其原型提出已有约10年时间。其中Spore(孢子),Crysis(孤岛危机)2,Red Dead Redemption(荒野大镖客:救赎)等就是用行为树作为它们的AI模型。而越来越多的引擎也都开始直接支持行为树,比如Cry Engine, Havok等。

  对于用行为树定模型构造的AI系统来说,每次执行AI时 ,系统都会从根节点遍历整个树,父节点执行子节点,子节点执行完后将结果返回父节点,然后父节点根据子节点的结果来决定接下来怎么做。

  行为树常见的基本类型节点有5种(当然也可以扩展更多类型):

  1)顺序节点(Sequence):属于组合节点,顺序执行子节点,只要碰到一个子节点返回false,则停止继续执行,并返回false,否则返回true,类似于程序中的逻辑与。

  2)选择节点(Selector):属于组合节点,顺序执行子节点,只要碰到一个子节点返回true,则停止继续执行,并返回true,否则返回false,类似于程序中的逻辑或。

  3)平行节点(Parallel Node):提供了平行的概念,无论子节点返回值是什么都会遍历所有子节点。所以不需要像Selector/Sequence那样预判哪个Child Node应摆前,哪个应摆后。Parallel Node增加方便性的同时,也增加实现和维护复杂度。

  4)条件节点(Condition):属于叶子节点,判断条件是否成立。

  5)执行节点(Action):属于叶子节点,执行动作,一般返回true。

  接下来我们看一个行为树构造的AI,这个AI的逻辑文字表述为,一个NPC在晚上需要执行巡逻任务。而且如果天下雨的话,户外的人是需要打伞的。

MMORPG游戏的人工智能(AI)和行为树设计 ...


  程序大概流程如下

  1)先处理Basic_AI节点,由于该节点是并行节点,所以将会依次处理接下来两个子树,无论第一个子树的返回值是什么。

  2)对于"打伞"节点,由于该节点是顺序节点,所以会依次处理其子节点,但是如果某个子节点返回false,那么该节点执行停止执行,并且返回false。因此执行打伞动作会不会执行取决于在它前面的两个条件是否返回true

  3)执行完"大伞"节点后,接下来必然会执行守夜节点,而守夜节点是选择节点,所以要么会执行夜里巡逻,要么会执行休息节点。夜里巡逻会不会这姓自然取决于条件节点"是晚上吗"的返回值

  行为树模型看似简单,但是以下几个优点让行为树目前变成了复杂AI的主流模型

  A)静态性

  越复杂的功能越需要简单的基础,否则最后连自己都玩不过来。即使系统需要某些"动态"性,也应该尽量使用静态的行为树来表示。Halo3相对于 Halo2对BT AI的一个改进就是去除了一些的动态性。原则就是保持全部Node静态,只是根据事件和环境来检查是否启用Node。

  静态性直接带来的好处就是整棵树的规划无需再运行时动态调整,大大方便设计人员和编程人员,并且大大减少诡异的bug,同时这也为很多优化和预编辑都带来方便。

  B)直观性

  行为树可以方便地把复杂的AI知识条目组织得非常直观。

  默认的组合节点处理子节点的迭代方式就像是处理一个预设优先策略队列,也非常符合人类的正常思考模式:先最优再次优。

  此外,行为树编辑器对优秀的程序员来说也是唾手可得。

  C)复用性

  各种节点,包括叶子节点,可复用性都极高。

  D)扩展性

  可以容易地为项目量身定做新的组合节点或修饰节点。还可以积累一个项目相关的节点库,长远来说非常有价值。

  小结

  在浏览过行为树和有限状态机之后,大家很自然可以根据项目来选择所用的模型。对于AI并不是太复杂的项目来说,选择有限状态机是很理智的行为,特别是在有些引擎支持的情况下。但是如果NPC的状态非常多,成千上万种,那么行为树就可能是避免项目最后崩溃的好办法。

分享到:
评论

相关推荐

    MMORPG游戏的人工智能(AI)和行为树设计.doc编程资料

    MMORPG游戏的人工智能(AI)和行为树设计.doc

    经典代码设计的 简单MMORPG游戏_C++_代码_下载

    7. **脚本系统**:游戏中的AI行为和事件触发常由脚本控制,如Lua或Python。C++可以通过嵌入式脚本接口将这些脚本语言与游戏引擎整合。 8. **资源管理**:内存管理和文件加载是游戏性能的重要因素。使用智能指针、...

    BehaviorDesigner.1.5.7_AI_111.rar

    在这个领域,AI(人工智能)设计是提升游戏体验的关键因素之一,而Behavior Designer则是Unity中一款强大的行为树工具,它简化了复杂AI逻辑的设计,让开发者能够更专注于游戏逻辑和玩家体验。本资源“Behavior...

    C#游戏编程,MMORPG,自带游戏引擎

    6. **AI和脚本系统**:C#的灵活性使得开发智能行为和游戏脚本变得容易,如行为树、有限状态机等AI框架。 描述中提到的"飞机游戏示例"可能是指一个简单的飞行模拟游戏,它涵盖了基本的游戏循环、输入处理、碰撞检测...

    Flash-MMORPG游戏引擎及工具开发概述

    总结来说,Flash-MMORPG游戏引擎及工具开发是一门涉及多领域知识的技术工作,涵盖了游戏设计、编程、网络通信、图形学等多个方面。虽然Flash已逐渐淡出,但其在游戏开发领域的经验教训仍然值得借鉴,特别是对于理解...

    MMORPG游戏论文 - 检测.zip

    6. **人工智能应用**:AI在MMORPG中的应用包括NPC(非玩家角色)智能行为、自动化测试、动态难度调整等,这些都可能成为论文的研究焦点。 7. **社区建设与管理**:游戏内的社交网络构建、玩家互动、社区规则以及...

    网络游戏-AI构建方法及装置、游戏控制方法及装置、AI系统.zip

    1. **AI构建方法**:在网络游戏的背景下,AI构建通常涉及机器学习、规则引擎、状态机和行为树等技术。机器学习允许AI自我学习和适应玩家的行为,通过大量的数据训练模型,使得AI的行为更加贴近真实。规则引擎则让...

    一款java 写的很好的mmorpg游戏 可以编译通过 很有学习价值

    9. **游戏设计模式**:观察项目中应用的设计模式,如工厂模式、单例模式、观察者模式等,提升代码复用性和可维护性。 通过以上这些知识点的学习,不仅可以提升你的Java编程技能,还能让你了解大型网络游戏的开发...

    MMORPG游戏服务器端的设计.doc

    【MMORPG游戏服务器端设计】是网络游戏...以上是MMORPG游戏服务器端设计的基础框架和关键技术点,实际开发中还需要考虑更多细节,如错误处理、性能监控、日志记录、调试工具等,以构建稳定、高效、安全的游戏服务器。

    游戏项目设计和策划推广方案.pdf

    文档中提到的"AI"表明游戏会有人工智能设计,用来控制非玩家角色的行为。例如,AI可以设计成能够在特定条件下对玩家进行攻击的怪物(MOB),或者更复杂的系统,如用于模拟经济和资源管理的游戏内AI。 3. 故事情节与...

    Default_AI_ragnarok_AIforRagnarok_

    在电子游戏中,人工智能(AI)扮演着至关重要的角色,特别是在大型多人在线角色扮演游戏(MMORPG)如"Ragnarok"中。"Default_AI_ragnarok_AIforRagnarok_"这个项目,显然是为Ragnarok游戏设计的一套默认AI系统,旨在...

    C#本科毕业设计基于Unity3D引擎的网络角色扮演游戏设计与实现源代码.zip

    在本项目中,我们关注的是一个使用C#编程语言和Unity3D...以上就是基于Unity3D引擎的网络角色扮演游戏设计与实现中涵盖的主要知识点。通过深入理解和实践这些概念,开发者可以创建出引人入胜且运行流畅的多人在线游戏。

    RO生命体AI

    这个游戏是一款流行的大型多人在线角色扮演游戏(MMORPG),其中的AI设计用于控制游戏内的非玩家角色(NPCs),如怪物、宠物和其他互动对象。AI的设置允许这些角色在特定条件下采取行动,例如攻击、防御或执行其他...

    大型多人在线游戏开发,大型多人在线游戏开发 pdf,C,C++源码.zip

    人工智能(AI)在游戏中用于控制NPC(Non-Player Characters)的行为,可能涉及路径规划、决策制定和玩家行为预测等。这通常需要使用到如行为树、有限状态机或机器学习等AI技术。 总的来说,"大型多人在线游戏开发...

    Unity游戏项目源码 Ultimate MMO RPG Kit 在线 mmo rpg 游戏开发 完整版.zip

    《Unity游戏项目源码 Ultimate MMO RPG Kit 在线 mmo rpg 游戏开发 完整版》是一款基于Unity引擎的大型多人在线角色扮演游戏(MMORPG)开发套件,它提供了全面的游戏开发资源,包括代码、美术、音效和场景,帮助...

    windows游戏编程大师技巧 所有电子教程

    智能技术集中在12章,这意味着教程将详细介绍一些现代游戏开发中的智能技术应用,如人工智能(AI)算法、行为树、路径规划等。这些技术可以使游戏中的非玩家角色(NPC)具有更逼真的行为,提高游戏的可玩性和沉浸感...

    MMORPG架构.docx

    - **AI应用**:实现智能NPC行为,增强游戏沉浸感。 - **脚本应用**:通过脚本语言灵活控制游戏逻辑。 #### 五、业务分离式集群 - **概念**:将特定业务分离到独立的服务器上。 - **优点**: - 简化服务器程序,...

    Mangos服务器的游戏对象和AI系统

    ### Mangos服务器的游戏对象与...通过以上分析可以看出,Mangos服务器的游戏对象和AI系统采用了高度抽象和模块化的设计思想,这不仅保证了系统的灵活性和可维护性,也为开发者提供了丰富的工具集来构建复杂的虚拟世界。

    大型多人在线游戏开发

    8. **人工智能(AI)**:NPC的行为需要智能控制,这涉及路径规划、行为树、有限状态机等AI技术,以增加游戏的趣味性和挑战性。 9. **用户界面(UI)**:良好的UI设计能提升用户体验,需掌握GUI框架和人机交互原则,...

    网络游戏-一种智能网络摄像机.zip

    网络传输技术保证了玩家在全球范围内实时互动,3D渲染技术则为玩家提供了逼真的视觉体验,而AI则在游戏设计、角色行为等方面提供智能化支持。 智能网络摄像机,是结合了网络通信、图像处理、人工智能等多种技术的...

Global site tag (gtag.js) - Google Analytics