交互式游戏中智能非玩家角色的实现方法及系统的制作方法

文档序号:6611124阅读:376来源:国知局
专利名称:交互式游戏中智能非玩家角色的实现方法及系统的制作方法
技术领域
本发明涉及交互式游戏的智能数据处理技术,特别是指一种交互式游戏中智 能非玩家角色的实现方法及系统。
技术背景游戏的核心是其引擎,它为游戏提供光影、动画、物理、渲染及输入的支持, 并大量地节省了游戏的开发时间和费用。早期游戏引擎的设计没有包含太多人工 智能的考虑。游戏中非玩家角色(Non-Player Character, NPC)的行为是由程 序员事先编好的,它们始终机械地遵循固定的行为策略,常常表现得不够聪明。 上世纪90年代中后期以来,游戏的智能性成为各大游戏公司争相追逐的目标, 其表现之一就是对引擎的革命在设计引擎时越来越多地使用人工智能技术。 Quake和Unreal是支持第一人称射击(First Person Shooting, FPS)游戏的 两大最著名引擎。美国Michigan大学的Soar/Games项目研究开发了 Soar和开 源Quake II之间的接口,在传统Quake II引擎的基础上引入了推理式Agent 结构Soar。 Unreal虽然不像Quake那样完全开源,但它具有良好的C/S结构, 并为Client提供了面向对象的脚本语言UnrealScript ,因此提供了比 Soar/Games更复杂的多NPC环境。美国Southern California大学和Carnegie Mellon大学基于Unreal Tournament游戏研究开发了 GameBot项目。另一方面, 即时战略(Real-Time Strategy, RTS)游戏是FPS外影响较大的游戏类型。RTS 对游戏NPC的智能性要求更高,因为它不仅涉及单个NPC的智能表现,而且更多 地会涉及到战术的、战略的、决策的智能行为。加拿大Alberta Edmonton大学 研究开发了基于客户端-服务器(Client-Server, C/S)结构的免费RTS引擎 0RTS。尽管如此,该项目的人工智能引擎还缺乏进一步补充实时规划、不确定环 境下推理、对手建模、学习、空间和时间推理、协作等关键技术的研究,无法充 分实现网络游戏中NPC的智能化。 发明内容有鉴于此,本发明的目的是针对现有交互式游戏引擎技术的不足,提供一种 能够使交互式游戏中非玩家角色更加智能化的实现方法,解决游戏开发中预设非
玩家角色动作程序复杂且过于机械的问题。为了达到上述目的,本发明提供了一种交互式游戏中智能非玩家角色的实现 方法,该方法通过服务器端的游戏引擎、包含JavaBot网络应用编程接口 (API) 和JavaBot底层处理单元以及BDI推理单元的游戏客户端控制NPC智能化行为, 该方法包括以下步骤(1) 启动包含JavaBot网络应用编程接口、 JavaBot底层处理单元、以及 BDI推理单元的客户端,并将客户端与服务器端游戏引擎相连; —(2) JavaBot网络应用编程接口将上述服务器端游戏引擎发出的游戏消息 进行解析并传送到JavaBot底层处理单元;(3) JavaBot底层处理单元将上述游戏消息解析为状态信息,并传送到BDI 推理单元;(4) BDI推理单元将上述状态信息处理后编译为动作愿望传送回JavaBot 底层处理单元;(5) JavaBot底层处理单元接收上述动作愿望并传送到JavaBot网络API;(6) JavaBot网络API将上述动作愿望解析为动作命令传送到服务器端的 游戏引擎;(7) 游戏引擎根据JavaBot网络API传送的动作命令控制NPC的动作,并 返回步骤(2)。在所述方法中,步骤(3)进一步包括JavaBot底层处理单元对JavaBot 网络API解析过的游戏消息进行判断,如果该消息表达的是游戏中NPC的底层行 为,则由JavaBot底层处理单元直接处理后跳至步骤(6);如果该消息表达的是 游戏中NPC的高级智能行为,则发送给BDI处理单元。在上述方法中,所述游戏中NPC的底层行为包括寻找目标、跑动和闪避等等。在上述方法中,所述游戏中NPC的高级智能行为包括学习、规划、决策、 推理和协作等等。本发明的另一个目的在于提供一种实现本发明方法的交互式游戏系统,该系 统包括游戏服务器端游戏引擎和游戏客户端,所述游戏客户端还包括游戏Agent 单元;
所述的游戏Agent单元用于接收游戏服务器端发送的游戏消息,将消息进行 分析,并根据上述消息发出动作命令;所述的游戏客户端用于与游戏服务器端相连,发送并接收游戏服务器端传送 的游戏信息;所述的服务器端游戏引擎用于处理与具体游戏相关的光影、动画、物理、渲 染信息及输入的支持,以及将游戏玩家和NPC的游戏消息传送给游戏客户端,以 及根据包含游戏Agent单元的游戏客户端发出的动作命令控制NPC的动作,以及 将动作变化后的游戏玩家和NPC的游戏消息传送给游戏客户端。在所述系统中,所述游戏Agent单元包括JavaBot网络API、 JavaBot底 层处理单元、以及BDI推理单元;其中,JavaBot网络API和JavaBot底层处 理单元用于接收游戏消息并发送给BDI推理单元处理;所述JavaBot网络API和JavaBot底层处理单元还可以处理游戏底层行为, 同时将高级的智能行为发送给BDI推理单元处理;BDI推理单元包括信念、目标和规划三个部分;所述信念可以是游戏中任何 类型的Java对象;所述目标是游戏中人物要实现的目标;规划是游戏中实现 agent目标的方法。在上述系统中,所述BDI推理单元可由Jadex推理agent引擎实现;其中 Jadex推理agent引擎处理游戏中的事件和消息,并选择规划库中的合适的规划 去执行;其中信念库决定了Jadex推理agent引擎的规划执行,而规划的执行又 可以改变信念库,改变的信念将触发内部事件,产生新的目标和新的规划执行。有益效果本发明的显著优点是在游戏引擎上增添了一层游戏Agent单元, 能够让游戏的开发者在编程处理NPC行为时以AOP的方式进行工作而不必考虑实 现细节。因此与传统的过程化的或OOP的方法相比,这样一个智能游戏平台能够 更有助于表达游戏NPC的智能行为、更好地支持游戏中智能技术的应用。


图l是本发明的工作运行流程。图2是包含本发明的客户端一服务器结构。图3是本发明的游戏包含Agent单元的框图结构。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进 一步的详细描述。
本发明的核心是在游戏引擎上增加一层BDI推理单元,该单元与JavaBot 网络API及JavaBot底层处理单元共同构成游戏Agent单元,并内嵌于游戏客户 端中,通过这样的结构可以实现交互式游戏中NPC的智能化动作,并且使游戏 Agent单元无需经过很大改动就能与不同的游戏引擎对接。下面通过实施例详细说明本发明方法,该方法如图1和图3所示,具体包括 如下步骤步骤101:启动游戏客户端并将客户端与服务器端基于Agent环境开发的游 戏引擎相连;步骤102: JavaBot网络API接收服务器端游戏引擎发送的游戏消息,解析后发送5步骤103: JavaBot底层处理单元接收消息并解析,判断是否是NPC的底层 行为,如果是底层行为,则进行步骤104,如果是高级智能行为,则进行步骤105;步骤104:由JavaBot底层处理单元处理该行为并发送,跳至步骤107。步骤105: BDI推理单元使用Jadex推理agent引擎完成交互式BDI过程, 通过信念、目标、规划三个部分将接收到的游戏状态信息处理后编译为动作愿望 后发送给JavaBot底层处理单元;步骤106: JavaBot底层处理单元接收到Jadex推理agent引擎解析的动作 愿望并发送到JavaBot网络API。步骤107: JavaBot网络API将动作愿望解析为动作命令并发送给服务器游 戏引擎。步骤108:服务器游戏引擎根据从JavaBot网络API传送的动作命令控制NPC 的动作,并返回步骤102。在上述方法中,步骤103中,所述游戏中NPC的底层行为包括寻找目标、 跑动和闪避等等。在上述方法中,步骤103中,所述游戏中NPC的髙级智能行为包括学习、 规划、决策、推理和协作等等。如图2和图3所示,本发明的重点在于该智能游戏的体系结构以及客户端和服务 器之间的网络API,服务器之间的网络API又包括三个部分消息及命令的格式、 消息和命令,下面详细说明(1) 智能游戏的体系结构。本发明的体系结构包括游戏引擎、JavaBot编程 接口和BDI推理Agent引擎Jadex三个模块。游戏引擎处理与具体游戏相关的光 影、动画、物理、渲染信息及输入的支持,构成了游戏的服务器端。JavaBot编 程接口和BDI推理Agent引擎Jadex则共同构成了游戏的客户端。前者支持以面 向对象的方式处理游戏角色的底层行为(例如寻找目标、跑动、闪避等等),而 后者负责处理高级的智能行为(例如学习、规划、决策、推理、协作等等)。在 游戏引擎不提供游戏Agent间通讯功能时(如Unreal引擎),Jadex还负责处理 游戏Agent之间的通讯。(2) 客户端与游戏服务器间的网络API。① 消息及命令的格式。本发明中的消息都具有形如"MSGTYPE {argl arglVal}{arg2arg2Val}..."的格式(不包含左右端的引号)。对消息的解析遵循以 下几条规定a. 从左边起第一个空格符前(不包括第一个空格符)所有的字符是消息(命 令)的类型;b. 消息中除了类型指示符以外的内容都是用花括号U括起的attr-val对;c. 花括号中第一个字符至第一个空格符(不包括第一个空格符)之间所有 的字符表示属性名称(attr);d. vol部分从结束attr的空格符开始(不包括该空格符),至"}"结束,中 间可以包含一个或多个空格符。命令的格式及其解析与消息类似。② 感知消息。服务器向客户端发送的感知消息包括同步消息和异步消息两 类,分别说明如下a.同步消息。同步消息以固定(可调整)的时间间隔批量到达客户端,内 容包括图形显示的更新等等。在一批消息的开始,服务器发送一个带时间戳的 "BEG"消息,当这批消息发送结束时,服务器再发送一个带有相同时间戳的 "END"消息。下面是一些常用的同步消息及其参数。BEG: —批同步消息的开始SLF: Agent的状态信息GAM:游戏(环境)信息 NAV:游戏中的路径节点MOV:游戏中的运动物体(例如门、电梯等等) INV:位于地上的可被捡起的物品 END:表示一批同步消息的结束b.异步消息。异步消息以事件的方式被客户端响应。下面是一些常用的 异步消息及其参数。NFO: Agent连接到服务器后服务器提供的帮助信息。VMS:从全局聊天通道中获得的消息 VMT:从全局私人聊天通道获得的消息; ZCF:脚步地域信息 ZCH:头部地域信息 ZCB:身体地域信息CWP: Agent更换武器(命令的结果或自动更换)WAL:撞墙FAL:碰到绊脚物BMP:撞到了另一个Agent或玩家或障碍物HRP:听到捡物品的声音HRN:听见了噪音(撞击声、射击声)SEE:看见了另一个玩家PRJ:接近的飞弹可能造成伤害KIL:某个玩家死亡DIE:死亡DAM:造成伤害HIT:伤害了另一个游戏者PTH:路径节点的序列,作为GETPATH命令的返回结果发送给客户端 RCH: CHECKREACH命令的布尔返回值FIN:游戏结束(没有参数)。③命令。Agent通过向游戏服务器发送命令来执行动作。命令具有与消息相 类似的格式和解析方法。下面是一些常用的命令及其参数。
INIT:在游戏中创建一个Agent玩家,表明玩家参与到游戏中。该命令在接 受到NFO消息后发送Name:希望采用的名字;Team:希望加入的团队;. SETWALK:设置移动的模式(走或跑,速度不同) STOP :停止所有的动作 JUMP:跳跃RUNTO:跑动至某个目标位置STRAFE:与RUNTO类似,只是在接近目标的过程中面对着另一个方向或物体TURNTO:转向某个点、物体或指明旋转角度 ROTATE:旋转某个角度 SHOOT:使用武器射击 CHANGEWEAPON :更换武器 STOPSHOOT :停止射击CHECKREACH:检査一下看是否能够直接地移动到某个目标位置而不遇到 障碍物GETPATH:得到通向特定位置的路径 MESSAGE:向游戏世界或队友发送一条消息PING:当预期的同步消息没能及时到达时向服务器发送该命令以査看网络 连接状况。
权利要求
1、一种交互式游戏中智能非玩家角色的实现方法,该方法通过服务器端的游戏引擎、包含JavaBot网络应用编程接口和JavaBot底层处理单元以及BDI推理单元的客户端控制非玩家角色智能化行为,其特征在于,该方法包括以下步骤(1)启动包含JavaBot网络应用编程接口、JavaBot底层处理单元、以及BDI推理单元的客户端,并将客户端与服务器端游戏引擎相连;(2)JavaBot网络应用编程接口将上述服务器端游戏引擎发出的游戏消息进行解析并传送到JavaBot底层处理单元;(3)JavaBot底层处理单元将上述游戏消息解析为状态信息,并传送到BDI推理单元;(4)BDI推理单元将上述状态信息处理后编译为动作愿望传送回JavaBot底层处理单元;(5)JavaBot底层处理单元接收上述动作愿望并传送到JavaBot网络应用编程接口;(6)JavaBot网络应用编程接口将上述动作愿望解析为动作命令传送到服务器端的游戏引擎;(7)游戏引擎根据JavaBot网络应用编程接口传送的动作命令控制非玩家角色的动作,并返回步骤(2)。
2、 根据权利要求1所述的交互式游戏中智能非玩家角色的实现方法,其特 征在于,步骤(3)进一步包括JavaBot底层处理单元对JavaBot网络应用编 程接口解析过的游戏消息进行判断,如果该消息表达的是游戏中非玩家角色的底 层行为,则由JavaBot底层处理单元直接处理后跳至步骤(6)。
3、 一种交互式游戏系统,包括游戏服务器端游戏引擎和游戏客户端,其特 征在于,所述游戏客户端还包括游戏Agent单元;所述的游戏Agent单元用于接收游戏服务器端发送的游戏消息,将消息进行 分析,并根据上述消息发出动作命令;所述的游戏客户端用于与游戏服务器端相连,发送并接收游戏服务器端传送 的游戏信息;所述的服务器端游戏引擎用于处理与游戏相关的光影、动画、物理、渲染信息和输入的支持,以及将游戏玩家和非游戏玩家的游戏消息传送给游戏客户端, 以及根据包含游戏Agent单元的游戏客户端发出的动作命令控制非游戏玩家的 动作,以及将动作变化后的游戏玩家和非游戏玩家的游戏消息传送给游戏客户 端。
4、 根据权利要求3所述的交互式游戏系统,其特征在于,游戏Agent单元 包括JavaBot网络应用编程接口、 JavaBot底层处理单元、以及BDI推理单元; 其中,JavaBot网络应用编程接口和JavaBot底层处理单元用于接收游戏消息 并发送给BDI推理单元处理。
5、 根据权利要求4所述的交互式游戏系统,其特征在于,所述JavaBot网 络应用编程接口和JavaBot底层处理单元还可以处理游戏底层行为,同时将高级 的智能行为发送给BDI推理单元处理。
6、 根据权利要求4所述的交互式游戏系统,其特征在于,所述BDI推理单 元包括信念、目标和规划三个部分;所述信念可以是游戏中任何类型的Java对 象;所述目标是游戏中角色要实现的目标;所述规划是游戏中实现agent目标的 方法。
7、 根据权利要求4所述的交互式游戏系统,其特征在于,其中BDI推理单 元可由Jadex推理agent弓1擎实现。
8、 根据权利要求7所述的交互式游戏系统,其特征在于,所述Jadex推理 agent引擎处理游戏中的事件和消息,并选择规划库中的合适的规划去执行;所述信念库决定了 Jadex推理agent引擎的规划执行,而规划的执行又可以 改变信念库,改变的信念将触发内部事件,产生新的目标和新的规划执行。
全文摘要
本发明公开了一种交互式游戏中智能非玩家角色的实现方法,该方法通过服务器端的游戏引擎、包含JavaBot网络应用编程接口、JavaBot底层处理单元,以及BDI推理单元的客户端控制非玩家角色智能化行为。另外本发明还公开了一种实现本方法的交互式游戏系统。本发明的显著优点是在游戏引擎上增添了一层游戏Agent单元,能够让游戏的开发者在编程处理NPC行为时以AOP的方式进行工作而不必考虑实现细节。因此这样一个智能NPC的实现系统能够更有助于表达游戏中非玩家角色的智能行为、更好地支持游戏中智能技术的应用。
文档编号G06F9/44GK101158897SQ20071013380
公开日2008年4月9日 申请日期2007年10月9日 优先权日2007年10月9日
发明者皓 王, 罗文杰, 阳 高 申请人:南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1