一种非玩家角色的控制方法

文档序号:6572290阅读:889来源:国知局
专利名称:一种非玩家角色的控制方法
技术领域
本发明涉及一种计算机程序的控制方法,尤其涉及一种非玩家角色的 控制方法。
背景技术
非玩家角色(None Player Character,以下简称NPC),特指视频游 戏或网络游戏中和玩家角色同一阵营的友方。玩家角色指视频游戏或网络 游戏中玩家控制的主要角色。现有技术下,NPC控制有两种方式一、 AI自动控制AI自动控制下,NPC的行动完全由AI (人工智能,Artificial Intelligence,以下简称AI)控制,用户无法掌控或只能进行简单控制(比 如切换攻击、防御、跟随、停留多种AI状态)。优点这种控制方式下,不需要用户有额外的操作,只要控制玩家角 色即可。缺点操控不自由,NPC会做出一些用户不期望的行为。 现有游戏举例《传奇世界》中术士召唤的骷髅。二、 用户手动控制用户手动控制,NPC的行动完全由AI控制,用户无法掌控。优点这种控制方式下,NPC的大部分动作均由用户操控,不会做出一些用户不期望的行为。缺点操作烦琐,因为需要控制多个角色,所以用户的操作会很烦琐。现有游戏举例《魔兽世界》中术士召唤的虚无行者。发明内容本发明要解决的技术问题是提供一种非玩家角色的控制方法,既可以 完全地控制NPC的行为,又可以很方便地操控,简化了烦琐的操作步骤。为解决上述技术问题,本发明一种非玩家角色的控制方法,采用影子 方式控制非玩家角色,包括如下步骤(1 )建立保存影子信息的数据结构; (2)添加影子信息;(3)影子移动存储每个影子的移动轨迹,并判断 影子下一段时间移动的轨迹是否是其上一个影子在此段时间内的移动轨 迹,如果是,则在经过固定距离移动后,把前一个影子或玩家角色本体的 轨迹更新到后一个影子;(4)影子攻击、被攻击和消失。所述的影子信息包括影子的识别符、位置、方向和动画表现。步骤(1)还包括在玩家角色的信息类中使用专门的数组存放影子信息。步骤(2)具体如下采用客户端请求、服务器回应的方式,在玩家 角色获取添加影子道具或接受到服务器添加影子消息时,为该玩家角色添 加影子信息。步骤(3)中所述的影子的移动轨迹是其上一个影子或玩家角色本体 轨迹加上一个固定距离值,根据移动起点位置和所经过的时间计算出移动 距离,影子的具体位置通过关键点位置插值得到,所述的关键点位置包括 角色开始移动时,角色改变速度时,角色改变方向时,角色移动距离达到固定距离时,角色停止移动时。步骤(3)中当角色移动到固定距离时,不仅需要记录关键点位置, 还要更新关键点位置信息。步骤(3)中,在非关键场合,通过如下方法获得影子当前位置A.根据时间计算从关键点开始已经移动过的距离;B.根据此距离在移动关键 位置信息数组中査找小于等于此距离的最大距离所对应的节点;C.根据找 到的节点作为移动计算起点,下一个节点作为终点进行插值计算,得到的 位置就是影子当前位置。本发明的有益效果在于采用本发明方法,玩家并不需要去控制影子 (NPC)的移动,影子会始终跟随在玩家角色后方;因此玩家可以操控影子移动到任何想要其移动到的地方,影子不会阻碍用户操纵其主要玩家角色 的移动,并且影子也不会做出任何玩家不想其做出的移动动作。当玩家攻 击时(推冰或者破冰),影子会转向玩家当前的朝向,并且做攻击动作(推冰或破冰);因此玩家可以操控影子向任何方向攻击,影子不会阻碍用户 操纵其主要玩家角色进行攻击,并且影子不会做出任何玩家不想其做出攻 击动作。综上,本发明既可以完全地控制NPC的行为,又可以很方便地操 控而没有烦琐的操作。


图l是本发明方法中影子移动的示意图; 图2是本发明方法中影子攻击的示意图。
具体实施方式
下面结合附图和实施例对本发明进行进一步详细的说明。以《推推侠》游戏为例,在《推推侠》中,NPC是以影子的外观形式 表现出来的,影子始终跟随着玩家角色,如同另外一个角色,影子能帮助 玩家角色攻击(推动冰块或者破冰)。本发明一种非玩家角色的控制方法包括如下具体步骤-一、 建立一个保存影子信息的数据结构1、 保存影子信息的数据结构SHADOWPLAYER,影子的信息包括影子的 识别符,位置,方向和动画表现等;2、 在玩家角色的信息类中使用专门的数组存放影子信息。二、 添加影子信息与玩家角色本体信息相同,影子的信息也需要在服务器和客户端都进 行记录,因此影子的产生仍然采用客户端请求,服务器回应的方式。在角 色获取添加影子道具或接受到服务器添加影子消息时,调用 AddShadowPlayer函数为该角色添加影子信息。三、 影子移动(影子跟随)玩家并不需要去控制影子的移动,影子会始终跟随在玩家角色后方; 因此玩家可以操控影子(NPC)移动到任何想要其移动到的地方,影子不会 阻碍用户操纵其主要玩家角色的移动,并且影子也不会做出任何玩家不想 其做出的移动动作。如图1所示,如同贪吃蛇一般,玩家并不需要去控制 影子的移动,影子会始终跟随着玩家,影子的虚拟中心点会始终在玩家虚 拟中心点的前40pix所在的点。影子跟随是影子功能实现中的核心功能。影子会始终跟随着玩家,影 子的位置轨迹应该是其上一个影子(或玩家角色本体)轨迹加上一个固定距离值,以保证在移动固定路程后能与前一影子(或玩家角色本体)在此 段移动之前的位置重合,从而达到跟随的要求。为了达到影子跟随的要求,可以通过保留每个影子的移动轨迹,然后 査找其前满足固定距离的轨迹位置来达到策划设计要求。但是这种方式需 要耗费很大的数据存储空间,并且大量数据的査找操作会使程序效率降 低,因此需要考虑在此基础上进行优化。考虑到影子经过固定距离将会与上一影子的位置重合,因此影子下一 段时间移动的轨迹正是其上一个影子在此段时间内的移动轨迹,因此影子 的移动轨迹大部分是相同的。根据这个判断,则考虑在经过固定距离移动 后,把前一个影子(或本体)的轨迹更新到后一个影子,后一个影子根据 前一个影子的轨迹移动。用这种方案就不需要保留全部移动轨迹,而只保 留 一定距离的轨迹位置,相比上一个方案就节省了就存储空间并提高了査 询效率。但即使如此,考虑到目前游戏的渲染动作比较频繁,如果保留每次渲 染时角色及其影子的位置数据量仍然偏大。由于目前角色在游戏中进行匀 速直线运动,运动距离和时间保持线性关系,则可以根据移动起点位置和 所经过的时间计算出其移动距离。因此,只需要保留几个关键点(就是角 色移动状态改变时的位置,以此位置作为移动起点,如角色改变速度,角 色改变方向时)的位置,査询这些关键点位置,影子的具体位置可以通过 这些关键点位置插值得到。目前一般在以下场合记录关键点*角色开始移动时;*角色改变速度时; 拳角色改变方向时;*角色移动距离(不是位移)达到固定距离时; *角色停止移动时。 关键点位置在需要记录的场合时(满40个象素时,角色开始移动, 角色改变速度,角色改变方向,角色停止移动等)更新。例如,当角色移 动到固定距离时,不仅需要记录关键点位置,还要更新关键点位置信息。 在非关键场合,通过如下方法获得影子当前位置A. 根据时间计算从关键点开始已经移动过的距离;B. 根据此距离在移动关键位置信息数组中査找小于等于此距离的最 大距离所对应的节点;C. 根据找到的节点作为移动计算起点,下一个节点作为终点进行插值 计算,得到的位置就是影子当前的位置。四、影子的攻击当玩家攻击时(推冰或者破冰),影子会转向玩家当前的朝向,并且做 攻击动作(推冰或破冰);因此玩家可以操控影子(NPC)向任何方向攻击,影 子不会阻碍用户操纵其主要玩家角色进行攻击,并且影子不会做出任何玩 家不想其做出攻击动作。如图2所示,当玩家按推冰或者破冰时,影子会转 向玩家当前的朝向,并且做推冰或破冰的动作;当玩家转向一块冰而本身 位置被冰块阻挡而没有位移时,影子也会转向玩家当前的朝向;判断行为 时影子被视为玩家角色,影子也有角色属于格判定度量的概念,判定影子 攻击所在点方法和玩家判定方法相同。影子推砖攻击时,针对每个影子都进行推砖攻击判断操作,其判断操 作和玩家角色本体的判断方式相同,具体方法如下首先,根据影子目前所处单元格正方向前两格是否存在可推对象,区 分攻击动作方式如果单元格正方向前一格内不存在可推对象,则进行空 推操作;如果单元格正方向前一格内存在可推对象且如果单元格正方向前 第二格内不存在可推对象,则进行推操作;如果单元格正方向前一格内存 在可推对象且如果单元格正方向前第二格内也存在可推对象,则进行破操 作;接着,记录影子的标识信息,所进行的操作信息和可推对象信息,向 服务器发送影子攻击请求;然后,服务器根据请求信息判断,如果认为此次攻击动作合法,则回 送攻击成功指令,在客户端进行影子攻击动作的渲染,其方式与玩家角色 本体相同,所以不再赘述。五、影子被攻击及消失当影子被攻击时,影子本身和它的下一级影子都将消失。影子消失的 处理过程与角色本体消失的实现过程基本相同,判断影子是否被推,删除 影子,这里主要说明影子本身和它下一级影子消失的处理方式首先,确认被杀死影子的标识符;接着,根据此标识符(ID),在角色影子中查找对应的序号; 然后,此序号以后的影子信息逻辑上清除,表现上播放影子被攻击后 消失动作。
权利要求
1. 一种非玩家角色的控制方法,其特征在于,采用影子方式控制非玩家角色,包括如下步骤(1)建立保存影子信息的数据结构;(2)添加影子信息;(3)影子移动存储每个影子的移动轨迹,并判断影子下一段时间移动的轨迹是否是其上一个影子在此段时间内的移动轨迹,如果是,则在经过固定距离移动后,把前一个影子或玩家角色本体的轨迹更新到后一个影子;(4)影子攻击、被攻击和消失。
2、 如权利要求1所述的非玩家角色的控制方法,其特征在于,所述 的影子信息包括影子的识别符、位置、方向和动画表现。
3、 如权利要求1所述的非玩家角色的控制方法,其特征在于,步骤(1) 还包括在玩家角色的信息类中使用专门的数组存放影子信息。
4、 如权利要求1所述的非玩家角色的控制方法,其特征在于,步骤(2) 具体如下采用客户端请求、服务器回应的方式,在玩家角色获取 添加影子道具或接受到服务器添加影子消息时,为该玩家角色添加影子信息。
5、 如权利要求1所述的非玩家角色的控制方法,其特征在于,步骤(3) 中所述的影子的移动轨迹是其上一个影子或玩家角色本体轨迹加上 一个固定距离值,根据移动起点位置和所经过的时间计算出移动距离,影 子的具体位置通过关键点位置插值得到,所述的关键点位置包括角色开 始移动时,角色改变速度时,角色改变方向时,角色移动距离达到固定距 离时,角色停止移动时。
6、 如权利要求5所述的非玩家角色的控制方法,其特征在于,步骤 (3)中当角色移动到固定距离时,不仅需要记录关键点位置,还要更新关键点位置信息。
7、 如权利要求5所述的非玩家角色的控制方法,其特征在于,步骤 (3)中,在非关键场合,通过如下方法获得影子当前位置A.根据时间计算从关键点开始已经移动过的距离;B.根据此距离在移动关键位置信息 数组中査找小于等于此距离的最大距离所对应的节点;C.根据找到的节点 作为移动计算起点,下一个节点作为终点进行插值计算,得到的位置就是 影子当前位置。
全文摘要
本发明公开了一种非玩家角色的控制方法,采用影子方式控制非玩家角色,包括如下步骤(1)建立保存影子信息的数据结构;(2)添加影子信息;(3)影子移动存储每个影子的移动轨迹,并判断影子下一段时间移动的轨迹是否是其上一个影子在此段时间内的移动轨迹,如果是,则在经过固定距离移动后,把前一个影子或玩家角色本体的轨迹更新到后一个影子;(4)影子攻击、被攻击和消失。本发明既可以完全地控制非玩家角色的行为,又可以很方便地操控,简化了烦琐的操作步骤。
文档编号G06F19/00GK101239240SQ20071003725
公开日2008年8月13日 申请日期2007年2月7日 优先权日2007年2月7日
发明者章霁诚, 飞 袁 申请人:盛趣信息技术(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1