首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

游戏NPC背后的秘密:MMORPG中AI系统的设计与实现

讲师简介:孙尚,腾讯互动娱乐北极光工作室群高级工程师。拥有8年程序开发经验,参与多款高质量游戏开发,作为《天涯明月刀》服务器架构师,帮助团队开发出业界领先的服务器引擎。

下文为《MMORPG AI系统设计与实现》内容节选

文末进入小程序可查看系列课程完整内容

概述

MMORPG游戏中的AI,不是指广义的人工智能,而是特指在游戏内NPC能够通过环境或者事件的变化进行逻辑判断,从而同玩家产生特定的交互行为。它主要包含三个部分,分别是感知、决策、行动。

感知:是指侦测周围环境变化的能力,如玩家进入视野、受到攻击等;

决策:就是根据环境变化思考做出何种反馈,是整个AI框架主要的构成部分,常见的有状态机、行为树;

行动:即NPC做出的具体反馈,如释放技能、寻路等操作。

MMORPG AI是构建在寻路、移动、技能、视野这4个基础功能之上的,寻路、移动和技能属于行动,而视野更多是一种感知。

AI常见的三种实现方式

01

朴素的AI-Hard Code

举一个游戏中常见的例子,一只野猪在没有人的时候需要自动巡逻;当有人进入视野的时候,它需要去接近这个玩家;当它和玩家的距离达到2米的时候,它要发起一个技能;当它血量低于20%时,它要逃跑。而随着我们游戏开发的深入,NPC越来越多,比如小鹿不会攻击只会逃跑,狼不会逃跑但会释放技能。

这时候问题就出现了,我们如果为每一个NPC单独实现一份AI,一款游戏可能有上千种NPC,工作量会非常巨大,而且非常难以扩展和维护。但朴素AI简单、直接、效率非常高,一般在项目初期应急时使用,即项目上线之初,没有时间、没有能力去做AI的时候,可能简单写一个AI先去做测试使用。

02

有限状态机

状态机可以归纳为三个要素,即现在的状态、事件、动作。当一个事件发生,将会触发一个动作,或者执行一次状态的迁移。

状态机有3个缺点:第一是状态流程图过于复杂,非常难以维护;第二是难以扩展,新加状态的时候需要考虑已有状态间的关系;第三是策划不能充分参与其中,只能由程序员来完成,这会增加程序员的工作量。

03

行为树

行为树里面有一个根节点,有若干子节点。节点主要分为控制节点、条件节点和行为节点,条件节点和行为节点执行都有一个结果,成功、失败或者正在运行中,控制节点会根据返回结果执行下一步动作。

行为树的优点是逻辑直观、一目了然,策划可以借助工具直接配置,不需要程序介入。而缺点则是树分支数量庞大,每次遍历寻找合适节点的过程消耗高。

AI寻路的四种实现方式

01

直线寻路

直线寻路最简单,平时经常用的直线生成算法都可以拿来用,但也最容易失败,因为我们整个地图不都是一个大平原,它可能有各种各样的阻挡。

02

贪心寻路

贪心寻路的策略是每次都朝着距离较近的方向逼近一步,如果某一个方向不能走,就尝试另一个方向。其实它还是不够聪明,当它遇到阻挡的时候,它可能要绕很远,或者要执行很长时间才能真正找到它的路径。

03

A*寻路

A*寻路从任意一点开始的时候,把它四周的几个点放到open表里,然后从open表里取出估价函数最小的点,同时更新open表和close表。其中的close表负责存储考察过的点,open表储存已生成而未考察的点。

估价函数: f(n)=g(n)+h(n)

g(n)就是起点到当前点的代价;

h(n)是当前点到终点的代价。

04

导航网格寻路

大平原地图是由很多小格子组成的,如果寻路时,还需要去遍历每个小格子的话,那么大量的时间会浪费在每个小格子的计算中。

这时,可以让导航网格预处理,把地图大平原切割成一个个凸的多边形。多边形之间,会通过一定的数据结构联合组织起来,在这个多边形中再通过A*去寻路,这样就可以一下子跳过很多格子,一次就找到目的地。

我们在游戏里面不是只有一种寻路算法,一般来说,首先看直线寻路能不能到达,如果可达就直接返回了,如果失败,再尝试寻找更复杂的一条路径,会依次地去尝试贪心寻路、A*寻路、导航网格寻路等方法,直到找到可以到达目的地的路径。

通过下方小程序查看完整课程内容

了解MMORPG AI系统设计与实现

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180727A1SQM500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券