一种无动态阻挡网络游戏系统及其处理方法转让专利

申请号 : CN201210293556.5

文献号 : CN103593546B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘林丁晓成

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请公开了一种无动态阻挡网络游戏系统及其处理方法,该系统在非用户控制角色(NPC)选中用户角色作为近距交互目标之后,确定此前与该用户角色发生所述近距交互的所有角色的总数N,确定模拟旋转弧度C=N×a,所述a为指定基准弧度;之后执行位置分配,即:以用户角色的当前坐标点为圆心,计算所述NPC从当前坐标向指定方向模拟旋转C弧度后的目的坐标;判断地图上在目的坐标处是否有静态阻挡,如果有则将当前弧度C递加指定弧度后得到新的弧度C,重新执行本位置分配步骤;否则命令所述NPC移动到该目的坐标处,并与目标用户角色进行所述近距交互。利用本发明,可以降低用户角色和NPC的模型重叠的几率,进而提升用户体验,同时降低系统的开销。

权利要求 :

1.一种无动态阻挡网络游戏系统的处理方法,其特征在于,

在非用户控制角色NPC选中用户角色作为近距交互目标之后,包括:

确定所述NPC选中所述用户角色为近距交互目标前,与该用户角色发生所述近距交互的所有角色的总数N,确定模拟旋转弧度C=N×a,其中所述a为指定的基准弧度;

执行位置分配步骤,具体包括:以用户角色的当前坐标点为圆心,计算所述NPC从当前坐标向指定方向模拟旋转C弧度后的目的坐标;判断地图上在所述目的坐标处是否有静态阻挡,如果有则将当前模拟旋转弧度C递加指定弧度后得到新的模拟旋转弧度C,重新执行本位置分配步骤;否则命令所述NPC移动到该目的坐标处,并与目标用户角色进行所述近距交互。

2.根据权利要求1所述的方法,其特征在于,所述以用户角色的当前坐标点为圆心,计算所述NPC从当前坐标向指定方向模拟旋转C弧度后的目的坐标,具体包括:以所述用户角色的当前坐标点为坐标原点,确定该用户角色和所述NPC的当前坐标点连线与地图参考线之间的夹角弧度A;

以所述弧度A为基准向所述指定方向模拟旋转所述C弧度后得到弧度B;

计算所述目的坐标的x坐标和y坐标,其中:

x坐标=用户角色的x坐标+(NPC模型半径r1+用户角色模型半径r2+NPC进行所述近距交互的有效距离s1)×cos(B);

y坐标=用户角色的y坐标+(NPC模型半径r1+用户角色模型半径r2+NPC进行所述近距交互的有效距离s1)×sin(B);

NPC进行所述近距交互的有效距离为:从NPC进行所述近距交互的最大有效距离范围内选择的一个值。

3.根据权利要求2所述的方法,其特征在于,在所述NPC移动到所述目的坐标的过程中,进一步包括:判断所述目的坐标与所述用户角色的当前坐标之间的距离是否超过该NPC进行所述近距交互的最大有效距离,如果未超过,则该NPC继续向所述目的坐标移动;否则调小该NPC进行所述近距交互的有效距离s1,并重新按照如下公式计算所述目的坐标的x坐标和y坐标:x坐标=用户角色的x坐标+(NPC模型半径r1+用户角色模型半径r2+NPC进行所述近距交互的有效距离s1)×cos(B);

y坐标=用户角色的y坐标+(NPC模型半径r1+用户角色模型半径r2+NPC进行所述近距交互的有效距离s1)×sin(B);

命令该NPC向新的目的坐标移动。

4.根据权利要求2所述的方法,其特征在于,所述基准弧度a为:π/m,其中m为正整数;所述递加的指定弧度为:π/m;

所述在确定所述N之后,确定模拟旋转弧度C之前,进一步包括:对N模M,所述M=

2π/a,再将所述模值赋给N;之后再利用C=N×a确定所述C。

5.根据权利要求4所述的方法,其特征在于,当所述目的坐标处有静态阻挡时,进一步判断当前的模拟旋转弧度C是否为2π,如果是则取消所述NPC对所述用户角色进行近距交互的关系,否则将当前模拟旋转弧度C递加指定弧度后得到新的模拟旋转弧度C,重新执行所述位置分配步骤。

6.根据权利要求1至5任一项所述的方法,其特征在于,该方法进一步包括:监测网络游戏系统服务器的当前负载状况,根据监测到的负载状况动态调整对所述NPC的驱动时钟间隔,其中所述网络游戏系统服务器的当前负载越大则对应调整的NPC的驱动时钟间隔越长。

7.根据权利要求1至5任一项所述的方法,其特征在于,该方法进一步包括:对所述NPC视野范围内的角色对象进行视野搜索,根据搜索结果维护视野列表中的角色对象个数;根据该NPC视野列表中的角色对象个数动态调整该NPC的触发视野搜索的移动距离和视野搜索范围,其中:所述NPC视野列表中的角色对象个数越多,则对应调整的该NPC的触发视野搜索的移动距离越小、视野搜索范围越小。

8.根据权利要求7所述的方法,其特征在于,所述NPC对视野范围内的角色对象进行视野搜索,根据搜索结果维护视野列表中的角色对象个数,根据该NPC视野列表中的角色对象个数动态调整该NPC的触发视野搜索的移动距离和视野搜索范围,具体包括:在游戏地图上划分第一级视野范围区域和第二级视野范围区域,其中第一级视野范围区域面积为第二级视野范围区域面积的整数倍;

NPC默认在跨第一级视野范围区域时对该第一级视野范围区域内的角色对象进行一次视野搜索;

在NPC每次进行视野搜索之后根据搜索结果维护该NPC视野列表中的角色对象个数,并判断该NPC视野列表中的角色对象的个数是否超过指定的阈值,如果未超过则后续在跨第一级视野范围区域时对该第一级视野范围区域内的角色对象进行一次视野搜索,否则后续在跨第二级视野范围区域时对该第二级视野范围区域内的角色对象进行一次视野搜索。

9.根据权利要求7或8所述的方法,其特征在于,所述对NPC视野范围内的角色对象进行视野搜索,根据搜索结果维护视野列表中的角色对象个数,具体包括:搜索出在所述NPC视野范围内的所有角色对象;

确定所搜索出的各个角色对象的类型;

根据所述角色对象的类型、以及预先设定的各角色对象类型的视野加入关系信息,判定是否将所述角色对象加入该NPC的视野列表;

删除在原视野列表中存在,但在新的视野范围内搜索不到的角色对象。

10.根据权利要求1至5任一项所述的方法,其特征在于,该网络游戏系统在计算地图中任两个坐标点间的距离时,包括:以所述两个坐标点的连线作为一直角三角形的斜边,以该两个坐标点作为该直角三角形的顶点绘制出一个直角三角形;

确定所述直角三角形的两个直角边的长度,其中A为长直角边的长度,B为短直角边的长度;

采用S=A+B/2计算所述两个坐标点间的距离。

11.一种无动态阻挡网络游戏系统,其特征在于,包括:

状态监测模块,用于监测NPC的近距交互状态,在NPC选中用户角色作为近距交互目标后触发所述模拟旋转弧度确定模块和位置分配模块;

模拟旋转弧度确定模块,用于确定模拟旋转弧度C=N×a,其中所述N为所述NPC选中所述用户角色为近距交互目标前,与该用户角色已经发生所述近距交互的所有角色的总数,所述a为指定的基准弧度;

位置分配模块,用于以用户角色的当前坐标点为圆心,计算所述NPC从当前坐标向指定方向模拟旋转C弧度后的目的坐标;判断地图上在所述目的坐标处是否有静态阻挡,如果有则将当前模拟旋转弧度C递加指定弧度后得到新的模拟旋转弧度C,重新执行本位置分配步骤;否则命令所述NPC移动到该目的坐标处,并与目标用户角色进行所述近距交互。

12.根据权利要求11所述的系统,其特征在于,该系统进一步包括:

负载监测调节模块,用于监测网络游戏系统服务器的当前负载状况,根据监测到的负载状况动态调整对所述NPC的驱动时钟间隔,其中所述网络游戏系统服务器的当前负载越大则对应调整的NPC的驱动时钟间隔越长。

13.根据权利要求11所述的系统,其特征在于,该系统进一步包括:

视野搜索模块,用于对所述NPC视野范围内的角色对象进行视野搜索,根据搜索结果维护视野列表中的角色对象个数;根据该NPC视野列表中的角色对象个数动态调整该NPC的触发视野搜索的移动距离和视野搜索范围,其中:所述NPC视野列表中的角色对象个数越多,则对应调整的该NPC的触发视野搜索的移动距离越小、视野搜索范围越小。

说明书 :

一种无动态阻挡网络游戏系统及其处理方法

技术领域

[0001] 本申请涉及计算机数据处理技术领域,尤其涉及一种无动态阻挡网络游戏系统及其处理方法。

背景技术

[0002] 网络游戏(Online Game)又称“在线游戏”,是指以互联网为传输媒介,以游戏服务器和用户设备(如计算机、智能手机、平板电脑等)为处理终端,以游戏客户端或网页为信息交互窗口的旨在实现娱乐、休闲、交流和取得虚拟成就的具有可持续性的多人在线游戏。
[0003] 在目前的网络游戏系统中,主要包括以下两种角色间的交互模式:
[0004] 一、用户与用户之间形成的互动竞技交互模式(PVP,Player VS Player),意为用户对战,网络游戏系统中需要包括PVP相关的处理系统,用于处理PVP模式下的交互指令和数据。
[0005] 二、用户与环境的互动竞技交互模式(PVE,Player VS Environment),意为用户与非用户控制角色(NPC,Non-Player-Controlled Character)之间形成的互动竞技。所述NPC由网络游戏系统中的NPC系统控制,NPC系统中包括NPC的仿真智能(AI,Artificial Intelligence)模块,这些AI模块是指指游戏中NPC的控制逻辑,可以使游戏中的NPC拥有独立的仿真智能的能力,用户角色可以与NPC角色进行游戏交互,例如对话、获得服务或者进行战斗等游戏交互。
[0006] 在目前的网络游戏系统,尤其是国战类的网络游戏系统中,主要是以PVP模式为主导,但网络游戏中也需要提供比较丰富的PVE模式来满足角色的成长需求,同时也要求PVE模式的运行处理中能有较好的用户体验。
[0007] 目前网络游戏系统可以根据角色之间的阻挡方式分为有动态阻挡的网络游戏系统和无动态阻挡的网络游戏系统。
[0008] 所述有动态阻挡的网络游戏系统是指在该游戏系统中,角色模型不但可以被地图中的固定场景(如山、石头、房屋等)阻挡,而且还可以被其它角色模型阻挡。所述角色模型是该角色的模拟的2D或3D形象,在2D网络游戏中通常为2D形象,在3D网络游戏中通常为3D形象。
[0009] 所述非动态阻挡的网络游戏系统是指在该游戏系统中,角色模型可以被地图中的固定场景阻挡,但是不必被其它动态的角色模型阻挡。
[0010] 在国战网络游戏中,由于参与游戏的角色的数量众多,为了保证画面中角色模型所处位置清晰度,保证为用户提供良好的画面操作体验,需要网络游戏系统所控制的各个角色模型之间在进行近距交互时,在视觉上尽量不能相互重叠。所述近距交互例如可以是NPC角色攻击用户角色的攻击交互,或者其它的对话交互等。
[0011] 在有动态阻挡的网络游戏系统中,由于该游戏系统有一套专用的阻挡算法来实时计算角色模型间的动态阻挡信息,因此各个角色模型之间在视觉上相互重叠的概率较低,其画面操作体验较好,但是由于要实时计算的动态阻挡信息,因此服务器的系统开销太大,其中包括CPU的开销和存储资源的开销。
[0012] 在无动态阻挡的网络游戏系统中,由于其不必实时计算动态阻挡信息,其系统开销相对有动态阻挡的游戏系统较小,因此,目前在以PVP模式为主以PVE模式为辅的大型国战网络游戏中通常采用无动态阻挡方式。
[0013] 在目前的无动态阻挡的网络游戏中,为了能解决用户角色和NPC在近距交互的过程中减少模型重叠的问题,给用户提供比较好的PVE视觉体验;需要NPC系统的AI模块实时检测计算与角色之间的坐标位置并能够动态调整NPC角色自身的坐标。具体包括:
[0014] 假设NPC角色的当前坐标为(x1,y1),半径为r1,用户角色的当前坐标为(x2,y2),半径为r2,NPC角色与用户角色发生近距交互(如NPC角色攻击用户角色)的半径为ar;当NPC角色产生攻击目标时,在每个NPC角色的驱动时钟周期来到时,计算NPC角色和用户角色之间的坐标点的距离值s。
[0015] 如果s>r1+r2+ar,则所述NPC角色继续向目标角色移动并向视野中的所有角色发送移动消息包;
[0016] 如果s
[0017] 所述攻击同一个用户的NPC角色根据收到的其它NPC角色发送的是否移动的消息包来动态计算并调整自身的坐标位置,从而避免与其它NPC角色模型重合。
[0018] 因此,目前的无动态阻挡的网络游戏系统中,为了能解决用户角色和NPC在近距交互的过程中减少模型重叠的几率,每个NPC需要在每次驱动时钟周期到来时进行实时的复杂的动态计算,即:不但要计算自身与攻击目标之间的距离s,还要根据s的长短判断是否移动并发送相关的消息包,同时还要接收其它NPC的消息包根据其它NPC的移动情况重新计算自身的坐标位置,所要进行的运算量非常大,会占用大量的系统开销,如CPU开销、存储开销、带宽开销等。尤其是在大型网络游戏系统中,服务器中的NPC角色数量通常会达到万以上的数量级,这时对NPC角色进行驱动的NPC系统的开销更是非常巨大的。

发明内容

[0019] 有鉴于此,本发明的主要目的在于提供一种无动态阻挡网络游戏系统及其处理方法,以降低用户角色和NPC的模型重叠的几率,同时降低网络游戏系统的开销。
[0020] 本发明的技术方案是这样实现的:
[0021] 一种无动态阻挡网络游戏系统的处理方法,该方法在非用户控制角色NPC选中用户角色作为近距交互目标之后,包括:
[0022] 确定所述NPC选中所述用户角色为近距交互目标前,与该用户角色发生所述近距交互的所有角色的总数N,确定模拟旋转弧度C=N×a,其中所述a为指定的基准弧度;
[0023] 执行位置分配步骤,具体包括:以用户角色的当前坐标点为圆心,计算所述NPC从当前坐标向指定方向模拟旋转C弧度后的目的坐标;判断地图上在所述目的坐标处是否有静态阻挡,如果有则将当前模拟旋转弧度C递加指定弧度后得到新的模拟旋转弧度C,重新执行本位置分配步骤;否则命令所述NPC移动到该目的坐标处,并与目标用户角色进行所述近距交互。
[0024] 一种无动态阻挡网络游戏系统,包括:
[0025] 状态监测模块,用于监测NPC的近距交互状态,在NPC选中用户角色作为近距交互目标后触发所述模拟旋转弧度确定模块和位置分配模块;
[0026] 模拟旋转弧度确定模块,用于确定模拟旋转弧度C=N×a,其中所述N为所述NPC选中所述用户角色为近距交互目标前,与该用户角色已经发生所述近距交互的所有角色的总数,所述a为指定的基准弧度;
[0027] 位置分配模块,用于以用户角色的当前坐标点为圆心,计算所述NPC从当前坐标向指定方向模拟旋转C弧度后的目的坐标;判断地图上在所述目的坐标处是否有静态阻挡,如果有则将当前模拟旋转弧度C递加指定弧度后得到新的模拟旋转弧度C,重新执行本位置分配步骤;否则命令所述NPC移动到该目的坐标处,并与目标用户角色进行所述近距交互。
[0028] 与现有技术相比,本发明在用户角色和NPC发生近距交互时,根据与用户角色发生近距交互的NPC的数量决定模拟旋转弧度,并以该模拟旋转弧度进行模拟旋转后确定目的坐标,在没有静态阻挡的情况下命令NPC移动到目的坐标。从而可以使与同一个用户角色进行近距交互的所有NPC可以在该用户角色周围相对均匀的分布,降低了NPC之间以及NPC与用户角色之间的模型重叠的几率,给用户提供了比较好的PVE视觉体验,同时运算过程简单,不需要NPC角色之间进行实时的复杂的动态交互计算,降低了对网络游戏系统的开销。

附图说明

[0029] 图1为本发明所述无动态阻挡网络游戏系统的处理方法的一种主要流程图;
[0030] 图2为本发明所述的无动态阻挡网络游戏系统的一种组成示意图;
[0031] 图3为本发明所述NPC与用户角色进行近距交互时对NPC进行位置分配的一种示意图;
[0032] 图4为利用本发明所述的处理方法对所有与用户角色发生近距交互的NPC进行位置分配的一种示意图;
[0033] 图5为分级划分视野范围区域的一种示意图;
[0034] 图6为本发明所述的无动态阻挡网络游戏系统的又一种组成示意图。

具体实施方式

[0035] 下面结合附图及具体实施例对本发明再作进一步详细的说明
[0036] 图1为本发明所述无动态阻挡网络游戏系统的处理方法的一种主要流程图;参见图1,该方法主要包括:
[0037] 101、监测非用户控制角色NPC的近距交互状态,在NPC选中用户角色作为近距交互目标之后,执行后续步骤。所述用户角色就是用户控制角色,即游戏操作者的角色。所述近距交互是指游戏角色之间进行近距离的指令交互,例如NPC攻击用户角色就是近距交互的一种。所述近距交互也不限定于角色的攻击,也可是其它近距离的交互,例如角色间的对话或其他动作交互。
[0038] 102、确定所述NPC选中所述用户角色为近距交互目标前,与该用户角色发生所述近距交互的所有角色的总数N,确定模拟旋转弧度C=N×a,其中所述a为指定的基准弧度。
[0039] 103、执行位置分配步骤,具体包括:以用户角色的当前坐标点为圆心,计算所述NPC从当前坐标向指定方向模拟旋转C弧度后的目的坐标;判断地图上在所述目的坐标处是否有静态阻挡,如果有则将当前模拟旋转弧度C递加指定弧度后得到新的模拟旋转弧度C,重新执行本位置分配步骤;否则命令所述NPC移动到该目的坐标处,并与目标用户角色进行所述近距交互。所述指定方向可以指定逆时针方向,也可以指定顺时针方向。
[0040] 图2为本发明所述的无动态阻挡网络游戏系统的一种组成示意图。本发明所述的无动态阻挡网络游戏系统200与现有的无动态阻挡网络游戏系统的区别是本发明具有如下模块,用于执行本发明的方法:
[0041] 状态监测模块201,用于监测NPC的近距交互状态,在NPC选中用户角色作为近距交互目标后触发所述模拟旋转弧度确定模块202和位置分配模块203;
[0042] 模拟旋转弧度确定模块202,用于确定模拟旋转弧度C=N×a,其中所述N为所述NPC选中所述用户角色为近距交互目标前,与该用户角色已经发生所述近距交互的所有角色的总数,所述a为指定的基准弧度;
[0043] 位置分配模块203,用于以用户角色的当前坐标点为圆心,计算所述NPC从当前坐标向指定方向模拟旋转C弧度后的目的坐标;判断地图上在所述目的坐标处是否有静态阻挡,如果有则将当前模拟旋转弧度C递加指定弧度后得到新的模拟旋转弧度C,重新执行本位置分配步骤;否则命令所述NPC移动到该目的坐标处,并与目标用户角色进行所述近距交互。
[0044] 由于本发明主要是对网络游戏系统中的NPC进行处理,因此上述模块通常设置在网络游戏系统中的NPC系统内,属于NPC的AI模块中的一部分,至于本发明所述的无动态阻挡网络游戏系统的其它处理模块,可以采用现有的无动态阻挡网络游戏系统的相关模块,本发明不再赘述。
[0045] 本发明中,所述基准弧度a可以为:π/m,其中m为正整数,所述递加的指定弧度也可以为:π/m。在一种较佳的实施例中,所述基准弧度a和所述递加的指定弧度为π/4。
[0046] 如图3所示为本发明所述NPC与用户角色进行近距交互时对NPC进行位置分配的一种示意图。参见图3,其中虚线圆圈301以用户角色坐标点为圆心,其半径为用户角色模型半径r2与NPC模型半径r1之和,所述虚线圆圈302和虚线圆圈301之间的半径差为NPC与用户角色发生近距交互的有效交互范围,例如对于攻击交互,所述虚线圆圈302和虚线圆圈301之间的半径差就是NPC的有效攻击范围。本发明所述步骤101中,监测NPC的近距交互状态可以利用现有技术的NPC系统的方式来监测,本说明书不再赘述。
[0047] 当某一个NPC选中用户角色作为近距交互的目标后,例如图3所示NPC311选中用户角色310为攻击目标后,执行所述步骤102。在步骤102中,如果所述NPC311是与所述用户角色310发生所述近距交互的第一个NPC,例如如果该NPC311是第一个攻击该用户角色310的NPC,则该NPC311选中用户角色310为近距交互目标前与该用户角色310发生所述近距交互的所有角色的总数N=0,因此所述模拟旋转弧度C=N×a=0。那么在步骤103中,第一个攻击所述用户角色310的NPC311不进行所述模拟旋转,而是直接以该NPC311的当前坐标作为目的坐标,判断地图上在该目的坐标处是否有静态阻挡,所述静态阻挡就是角色模型可以被游戏系统的地图中的固定场景阻挡,例如所述目的坐标处为诸如山、石头、房屋等静态阻挡物体,则该目的坐标出就有静态阻挡,如果所述目的坐标处没有所述静态阻挡物体,则该目的坐标处没有静态阻挡。
[0048] 如果所述目的坐标处没有静态阻挡则命令所述NPC311移动到该目的坐标处,并与目标用户角色310进行所述近距交互。此时由于NPC311是第一个攻击用户角色310的NPC,当前坐标已经是目的坐标,因此不必移动,就在当前坐标攻击所述用户角色310。
[0049] 如果所述目的坐标处有静态阻挡则将当前模拟旋转弧度C(当前C=0)递加指定弧度后得到新的模拟旋转弧度C,例如所述指定弧度为π/4时,则新的模拟旋转弧度C=π/4,之后重新执行步骤103。所述步骤103中,所述以用户角色的当前坐标点为圆心,计算所述NPC从当前坐标向指定方向模拟旋转C弧度后的目的坐标的具体处理过程包括以下步骤131至133:
[0050] 131、如图3所示,以所述用户角色310的当前坐标点为坐标原点,确定该用户角色310和所述NPC311的当前坐标点连线与地图参考线(通常为水平线)之间的夹角弧度A;
[0051] 132、以所述弧度A为基准向所述指定方向(例如可以指定为逆时针方向,当然也可以指定为顺时针方向)模拟旋转所述C弧度后得到弧度B;
[0052] 133、计算所述目的坐标的x坐标和y坐标,其中:
[0053] x坐标= 用户角色的x坐标+(NPC模型半径r1+用户角色模型半径r2+NPC进行所述近距交互的有效距离s1)×cos(B);
[0054] y坐标= 用户角色的y坐标+(NPC模型半径r1+用户角色模型半径r2+NPC进行所述近距交互的有效距离s1)×sin(B);
[0055] 所述NPC进行所述近距交互的有效距离为:从NPC进行所述近距交互的有效距离范围内选择的一个值。例如对于攻击交互,在一种优选实施方式中可以进行优化选择,如果某种NPC的最大有效攻击距离小于200厘米,则从该最大有效攻击距离的70%~90%范围之内随机选择一个值作为所述s1。如果某种NPC的最大有效攻击距离大于200厘米,则从该最大有效攻击距离的35%~45%范围之内随机选择一个值作为所述s1。
[0056] 在计算出目的坐标的x和y坐标后,则命令所述NPC311移动到该目的坐标。由于在NPC311移动的过程中,所述用户角色310也可能会移动,因此在所述NPC311移动到所述目的坐标的过程中,进一步包括:
[0057] 判断所述目的坐标与所述用户角色310的当前坐标之间的距离是否超过该NPC311进行所述近距交互的最大有效距离(例如该NPC的最大有效攻击距离),如果未超过,则继续向所述目的坐标移动;否则调小该NPC进行所述近距交互的有效距离s1,例如如果某种NPC的最大有效攻击距离小于200厘米,则从该最大有效攻击距离的1%~8%范围之内随机选择一个值作为所述s1,如果某种NPC的最大有效攻击距离大于200厘米,则从该最大有效攻击距离的20%~35%范围之内随机选择一个值作为所述s1;在调小所述s1之后,重新计算所述目的坐标的x坐标和y坐标,并命令所述NPC向新的目的坐标移动。
[0058] 在一种实施例中,所述步骤103中,当所述目的坐标处有静态阻挡时,还可进一步判断当前的模拟旋转弧度C是否为2π(即模拟旋转是否达到整整一圈),如果是则取消NPC311对用户角色310进行近距交互的关系(例如取消NPC311对用户角色310的攻击关系),否则将当前模拟旋转弧度C递加所述指定弧度后得到新的模拟旋转弧度C,重新执行所述步骤103。
[0059] 如果所述NPC311成功移动到了目的坐标,并与所述用户角色310进行近距交互(例如NPC311开始攻击用户角色310),之后如果有新的NPC选中用户角色310作为近距交互目标(例如选中用户角色310作为攻击目标)之后,则对该NPC同样执行上述的步骤102和步骤103,只不过所述与该用户角色发生所述近距交互的所有角色的总数N不再是0,从而初始的模拟旋转弧度C也不是0。
[0060] 图4为利用本发明所述的处理方法对所有与用户角色发生近距交互的NPC进行位置分配的一种示意图。参见图4,针对所有将所述用户角色310作为近距交互目标的NPC,如图4中的NPC311至NPC316,都要执行所述步骤102和103,最终所有将所述用户角色310作为近距交互目标的NPC不但处在与用户角色310进行所述近距交互(如攻击用户角色)的有效交互范围内,即所述虚线圆圈302和虚线圆圈301之间,从而使得NPC模型和用户角色模型之间不会重叠,而且NPC模型也相对均衡地分配在用户角色310的周围,使得NPC模型之间的重叠几率也非常低,因此本发明可以给用户提供比较好的PVE视觉体验。如果NPC模型偏大(如所述NPC316)的情况下,则NPC模型之间会有部分重合,但是不影响总体的PVE视觉体验。如本领域技术人员所知道的,所述NPC模型和用户角色模型是指在网络游戏中所述NPC和用户角色分别对应的2D形象或3D形象,在2D网络游戏中通常为2D形象,在3D网络游戏中通常为3D形象。本发明可以适用于2D网络游戏也可以适用于3D网络游戏,但尤其适用于3D网络游戏。
[0061] 同时,由于本发明处理简单,不需要像现有技术那样在NPC角色之间进行实时的复杂的动态交互计算,因此降低了对网络游戏系统的开销。
[0062] 由于某些NPC与用户角色坐标点连线与地图参考线之间的夹角弧度A有可能很大,例如接近2π,如果再逆时针旋转所述模拟旋转弧度C会大于2π,因此在一种实施例中,如果所述基准弧度a和所述递加的指定弧度为:π/m,则在步骤102中,在得到所述总数N之后,利用C=N×a确定模拟旋转弧度C之前,进一步包括:对N模M,所述M=2π/a,再将所述模值赋给N;之后再利用C=N×a确定所述C。
[0063] 本发明中,所述NPC由网络游戏系统中的NPC系统驱动,为了进一步降低对网络游戏系统的开销,尤其是降低NPC系统的开销,在一种实施例中,本发明的方法进一步包括:监测网络游戏系统服务器的当前负载状况,根据监测到的负载状况动态调整所述NPC系统对所述NPC的驱动(Tick)时钟间隔,其中所述网络游戏系统服务器的当前负载越大则对应调整的NPC的驱动时钟间隔越长。
[0064] 例如如下表1为驱动时钟间隔长短的优缺点:
[0065]
[0066]
[0067] 表1
[0068] 表1中,所述NPC状态模式视具体的网络游戏的技术方案而定,例如在某种网络游戏系统中,所述NPC的状态模式包括“巡逻模式”、“攻击模式”、“追击模式”、“返回模式”、“直巡模式”等,所述NPC可以根据AI逻辑进行模式转换,从而在游戏中体现出逼真的模型形象和状态。
[0069] 上述实施例通过监测网络游戏系统服务器的当前负载情况动态调整驱动时钟间隔,可以提高NPC系统的灵活性,使其可以动态兼顾CPU开销和PVE体验两种效果,可以间接稳定NPC系统的负载状况,保证整个网络游戏系统运行的稳定性。
[0070] 为了进一步降低对网络游戏系统的开销,在另一种实施例中,本发明所述的方法进一步包括:
[0071] 对所述NPC视野范围内的角色对象进行视野搜索,根据搜索结果维护视野列表中的角色对象个数;根据该NPC视野列表中的角色对象个数动态调整该NPC的触发视野搜索的移动距离和视野搜索范围,其中:所述NPC视野列表中的角色对象个数越多,则对应调整的该NPC的触发视野搜索的移动距离越小、视野搜索范围越小。
[0072] 例如如下表2为NPC触发视野搜索的移动距离的优缺点:
[0073]
[0074] 表2
[0075] 为了实现对上述触发视野搜索的移动距离和视野搜索范围的调整,本发明的一种实施例中采用了如下方法,具体包括如下步骤141至143:
[0076] 141、如图5所示,在游戏地图上划分第一级视野范围区域(如图5中的3×3的大区域块,每个区域块的大小例如可以是32米×32米)和第二级视野范围区域(如图中每个3×3的大区域块内又划分出的2×2或n×n的网格区域块),其中第一级视野范围区域为第二级视野范围区域的整数倍。
[0077] 142、NPC默认在跨第一级视野范围区域时对该第一级视野范围区域内的角色对象(如其它NPC和用户角色)进行一次视野搜索;
[0078] 143、在NPC每次进行视野搜索之后根据搜索结果维护该NPC视野列表中的角色对象个数,并判断该NPC视野列表中的角色对象的个数是否超过指定的阈值,如果未超过则后续在跨第一级视野范围区域时对该第一级视野范围区域内的角色对象进行一次视野搜索,否则后续在跨第二级视野范围区域时对该第二级视野范围区域内的角色对象进行一次视野搜索。
[0079] 所述对NPC视野范围内的角色对象进行视野搜索,根据搜索结果维护视野列表中的角色对象个数,具体包括如下步骤1431至步骤1434:
[0080] 1434、搜索出在所述NPC视野范围内的所有角色对象;
[0081] 1432、确定所搜索出的各个角色对象的类型;
[0082] 1433、根据所述角色对象的类型、以及预先设定的各角色对象类型的视野加入关系信息,判定是否将所述角色对象加入该NPC的视野列表;
[0083] 1434、删除在原视野列表中存在,但在新的视野范围内搜索不到的角色对象。
[0084] 下面表3所示为一种具体的预先设定的各角色对象类型的视野加入关系信息实例。
[0085]
[0086] 表3
[0087] 如上表3所示,在这种具体的实施例中,可以对所述NPC进行分级,不同级别的NPC的视野加入关系信息是不同的,具体如下:
[0088] 1)用户角色和用户角色之间是对称的,相互加入对方视野;用户角色和第一级NPC之间是对称的,相互加入对方视野;用户角色和第二级NPC之间是对称的,相互相加入对方视野;用户角色和第三级NPC之间是对称的,相互加入对方视野,但当第三级NPC视野列表满时,只将第三级NPC加入到用户角色视野中。
[0089] 2)第一级NPC和用户角色之间是对称的,相互加入对方视野;第一级NPC和第一级NPC之间是对称的,相互加入对方视野;第一级NPC和第二级NPC以及第三级NPC是相互不可见的,不会加入对方视野。
[0090] 3)第二级NPC和用户角色之间是对称的,相互加入对方视野;第二级NPC和第一级NPC、第二级NPC以及第三级NPC之间是相互不可见的,不会加入对方视野。
[0091] 4)第三级NPC和用户角色之间是对称的,相互加入对方视野,但当第三级NPC视野列表满时,只将第三级NPC加入到用户角色视野中;第三级NPC和第一级NPC、第二级NPC以及第三级NPC之间是相互不可见的,不会加入对方视野。
[0092] 在上述实施例中,通过对各角色对象类型的视野加入关系的设定可以有以下三种优点:
[0093] (1)减少了NPC的视野列表到达启动跨第二级视野范围区域搜索的阈值的机率,降低了在移动中的视野搜索频率,减少了视野搜索算法的消耗,从而减少了CPU的消耗。
[0094] (2)当第三级NPC的视野列表满时,只针对用户角色视野列表加入第三级NPC,防止出现用户角色看不见第三级NPC而接不到任务的情况。
[0095] (3)当NPC的视野列表中没有其它角色时,将停止该NPC的AI逻辑行为,从而减少了CPU的消耗。
[0096] 与上述方法对应的,如图6所示,本发明所述的网络游戏系统中也进一步包括负载监测调节模块204,用于监测网络游戏系统服务器的当前负载状况,根据监测到的负载状况动态调整所述NPC系统对所述NPC的驱动时钟间隔,其中所述网络游戏系统服务器的当前负载越大则对应调整的NPC的驱动时钟间隔越长。
[0097] 所述网络游戏系统中也可以进一步包括:视野搜索模块205,用于对所述NPC视野范围内的角色对象进行视野搜索,根据搜索结果维护视野列表中的角色对象个数;根据该NPC视野列表中的角色对象个数动态调整该NPC的触发视野搜索的移动距离和视野搜索范围,其中:所述NPC视野列表中的角色对象个数越多,则对应调整的该NPC的触发视野搜索的移动距离越小、视野搜索范围越小。
[0098] 另外,为了进一步降低对网络游戏系统的开销,在另一种实施例中,本发明所述的方法进一步包括:该网络游戏系统在计算地图中任两个坐标点间的距离时,包括:
[0099] (A1)以所述两个坐标点的连线作为一直角三角形的斜边,以该两个坐标点作为该直角三角形的顶点绘制直角三角形。
[0100] (A2)确定所述直角三角形的两个直角边的长度,其中A为长直角边的长度,B为短直角边的长度。
[0101] 在现有技术中,在上述确定了直角三角形的两个直角边的边长后,通常是采用计算两个坐标点间的距离。但是其中的所述平方计算和根号计算都比较耗费CPU开销,因此本发明对此进行了改进,即利用如下(A3)的公式计算。
[0102] (A3)采用S=A+B/2计算所述两个坐标点间的距离。
[0103] 采用上述(A3)所述的计算方式后,所求得的两个坐标点间的距离虽然有一定的误差,但是其最大误差在12%以内,平均误差在5%左右,在网络游戏系统中这个误差范围是可以接受的,并不会对画面及游戏运行体验有较大的影响,但是其优点是加法运算和除法运算耗费的CPU开销较小,节省了系统的资源。
[0104] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。