一种网络游戏中动作合成的方法

文档序号:7618285阅读:199来源:国知局
专利名称:一种网络游戏中动作合成的方法
技术领域
本发明涉及一种网络游戏中的动作合成方法,尤其涉及的是一种针对网络游戏中大量用户同时向服务器发送动作非常多的情况下的降低游戏服务器负载的动作合成方法。
背景技术
目前大规模的网络游戏在国内外发展迅速,它已逐渐成为网络使用者的一项持久性娱乐项目。随着网络游戏用户的增多,设计一款性能卓越、内容丰富的网络游戏的设计成为一种挑战。目前大型网络游戏基本都属于CMS(Cliect-Multi-Server)结构。CMS机构基本结构如图1所示,分为3个层次,服务器层运行一系列游戏服务器,各服务器并行执行,以及使用同步信号进行数据同步。通信层负责从客户端接收各种命令分配到相应服务器。应用层是游戏用户直接面对的客户端,它接收用户的命令,发送给通信层,然后从服务层接收执行结果和游戏中虚拟世界的状态信息,并实时显示给用户。
但是对于大规模多用户的网络游戏难免遇到的一个问题是,在当大量的用户同时进行游戏时,各种游戏动作数量巨大、用户交互作用非常多,游戏服务器负载过重,这时游戏经常出现停顿现象。虽然目前采用网格技术并行处理游戏,但是同样存在问题,那就是同步问题。如果希望达到非常好的数据同步,就非常耗费时间,游戏速度就会下降;相反如果提高游戏服务器的响应速度,那么服务器的同步范围就会缩小。目前大部分的游戏采用一个服务器或者多个服务器来管理游戏虚拟世界的一个区域,随着游戏用户数量的增多,服务器的数量也随之增大。但是维护同一区域的服务器不能无限制增长,因为服务器数量达到一定程度后,服务器之间的同步会耗费很多时间,响应速度就会下降。
因此,现有技术存在缺陷,而有待于改进和发展。

发明内容
本发明的目的就在于提供一种网络游戏中动作合成的方法,为了解决现有技术的区域小、用户多带来的问题,提出一种解决方法——动作合成法,通过对游戏的各个游戏用户相似动作的合并,减少客户端对服务器的动作请求数量,从而降低服务器的工作量,提高游戏的执行效率,保证游戏的正常运行。
本发明的技术方案如下一种网络游戏中动作合成的方法,其包括以下步骤1)设置一合成服务器,负责游戏动作的合成;2)确定合成范围,合成范围是能够进行动作合成的多方面条件的组合,所述条件包括某个用户、某类动作、某个区域和某个时间的组合;3)将合成范围发送给客户端,当客户端再次发送动作时,先判断该动作是否属于合成范围,如果属于合成范围,将该动作发送到游戏的合成服务器;如果不属于合成范围,客户端将该动作发送给通信服务器;4)所述合成服务器定期接收客户端发送来的动作,将动作分类进行组合,所述合成服务器将大量同一种类型的动作合成为一个或者少量的动作;5)所述合成服务器将这些合成后的动作发送给游戏服务器。
所述的方法,其中,所述步骤4)中合成服务器对动作的合成采用单点合成方法,其步骤包括a1)游戏服务器保存游戏用户的各个动作,作为确定合成范围的基础数据;b1)当游戏服务器负载达到预定程度时,设置并统计用户的火力点,所述火力点指游戏中接受其他用户动作的主要对象,即接受动作最多的一些对象;c1)确定合成范围,单点合成方法的合成范围是使用单点动作作用在火力点的动作集合,然后将合成范围发送给所有客户端;d1)客户端接收到合成范围,当再次发送动作命令时,先判断该动作是否属于合成范围,如果属于合成范围,将这个动作发送到游戏的合成服务器,如果不属于合成范围,就发送给通信服务器;e1)合成服务器以固定周期接收这些动作,然后使用单点合成法将他们合成;f1)合成服务器将合成的结果发送给游戏服务器进行执行。
所述的方法,其中,所述步骤b1)中统计现存用户接收到其他用户对其的动作次数,并形成列表;所述步骤e1)中使用的单点合成法包括合成服务器以一定周期接收针对不同火力点的各种动作,将它们按接收者分组,每组同类的动作合并到一起,形成一个或几个动作,再将合成后的动作发送给游戏服务器处理。
所述的方法,其中,所述步骤4)中合成服务器对动作的合成采用区域合成方法,其步骤包括a2)游戏服务器保存游戏用户的各个动作,作为确定合成范围的基础数据;b2)当游戏服务器负载达到预定程度时,统计用户的密集区域,密集区域指游戏中用户密集的区域或者同组用户密集的区域;c2)确定合成范围,区域合成方法的合成范围是使用区域动作作用密集区域的动作集合,区域动作指对一个区域内的所有游戏用户起作用的动作,并不针对某一特定游戏用户;将合成范围发送给所有客户端;
d2)客户端接收到合成范围,当再次发送动作命令时,先判断该动作是否属于合成范围,如果属于合成范围,将这个动作发送到合成服务器;如果不属于合成范围,就发送给通信服务器;e2)合成服务器以固定周期接收这些动作,然后使用区域合成法将他们合成;f2)合成服务器将合成的结果发送给游戏服务器进行执行。
所述的方法,其中,所述步骤b2)中所进行的密集区域统计,先将游戏地图进行分割,每个分割区域作为区域动作的作用标准;每隔一段时间,游戏服务器统计这些区域内整体用户数量和各支队伍的用户数量,形成区域用户数量列表,并确定密集区域;所述步骤e2)中使用的区域合成法包括合成服务器以一定周期接收针对各个密集区域的各种动作,将它们按区域和动作类型分组;并对同一区域内的同一种动作,进行模糊合成。
所述的方法,其中,所述模糊合成采用相近叠加法,将相近的动作简单叠加到一起。
所述的方法,其中,所述模糊合成还包括然后使用一次三点归一法,即选择三点动作的重心,将相近的三个动作进行合成到它们的重心处,重心点就是合成后的作用点;作用力度是各个被合成动作的叠加;作用范围是能够包含所有被合成的动作范围的最小平滑封闭区域;接着重复使用三点归一法直至该密集区域的所有同类动作合成为一个动作或两个动作。
本发明所提供的一种网络游戏中动作合成的方法,通过两种合成方法将同时产生的大量相似动作合成为几个动作发送给游戏服务器,降低了游戏服务器的工作量;解决了小区域大量用户同时动作带来的问题,最终使游戏能够平稳的运行。


图1是现有技术的通常网络游戏的基本结构示意图;图2是本发明的使用动作合成方法改进的网络游戏基本结构示意图;图3是本发明的网络游戏中动作合成的方法一次战役过程中统计的各个玩家接收单点动作数量的列表;图4是本发明的网络游戏中动作合成的方法某个队伍玩家分布在已分割的各个区域的模拟显示图;图5是本发明的网络游戏中动作合成的方法对A000001作用的单点动作分类及合成过程的各项数值列表的变化图;图6是本发明的网络游戏中动作合成的方法对区域3的动作点的分布图;图7是本发明的网络游戏中动作合成的方法对区域3的动作进行相近叠加的结果示意图;图8是本发明的网络游戏中动作合成的方法对区域3的动作进行第一次三点归一法合成的结果示意图;图9是本发明的网络游戏中动作合成的方法对区域3的动作进行第二次三点归一法合成的结果示意图。
具体实施例方式
以下结合附图,将对本发明的具体实施例加以详细说明。
本发明的所述网络游戏中动作合成的方法,如图2(a)和图2(b)所示的,其包括以下步骤6)首先对原有游戏基本结构进行改进,在原有的体系结构内加入一个合成服务器,如图2(a)所示,该合成服务器位于通信层内,由它来负责游戏动作的合成。也可以将动作合成方法放在游戏服务器中进行,如图2(b)所示。同样放在某个用户的客户端也可以实现。
7)然后确定合成范围。合成范围是能够进行动作合成的多方面条件的组合,如某个用户、某类动作、某个区域和某个时间等条件的组合。
8)将合成范围发送给客户端,当客户端再次发送动作时,先判断一下该动作是否属于合成范围,如果属于合成范围,将这个动作发送到游戏的合成服务器;如果不属于合成范围,客户端还是将该动作发送给通信服务器。
9)合成服务器定期接收客户端发送来的动作,将各种动作分类进行组合,所述合成服务器将大量同一种类型的动作合成为一个或者少量的动作。
10)所述合成服务器将这些合成后的动作发送给游戏服务器。
通过上面的合成方法,游戏服务器接收到的动作会大大降低,缓解了游戏服务器的工作负载。这种动作合成方法非常多,下面是两种具体的动作合成方法单点合成和区域合成。
单点合成方法的实施过程如下a1)游戏服务器保存游戏用户的各个动作,作为确定合成范围的基础数据。
b1)当游戏服务器负载过重时,统计用户的火力点。火力点是指游戏中接受其他用户动作的主要对象,即接受动作最多的一些对象,如战斗游戏中某一方的领军人物,因为他们常常是被打击的重点。
c1)确定合成范围。单点合成方法的合成范围是使用单点动作作用火力点的动作集合。单点动作是指只对一个游戏用户起作用的动作,不会影响到其他的游戏用户。然后将合成范围发送给所有客户端。
d1)客户端接收到合成范围,当再次发送动作命令时,先判断一下该动作是否属于合成范围,如果属于合成范围,将这个动作发送到游戏的合成服务器。如果不属于合成范围,就发送给通信服务器。
e1)合成服务器以固定周期接收这些动作,然后使用单点合成法将他们合成。
f1)最后合成服务器将合成的结果发送给游戏服务器进行执行。
在过程b1)中主要统计现存用户接收到其他动作次数,并形成列表。哪些用户接收到其他用户的动作最多,就将他们列为火力点。这些火力点并不是固定不变的,在以下两种情况火力点需要变化一、火力点消失,如死亡、退出等,这时需要寻找新的火力点,在用没有消失的非火力点中接收动作最多的用户添加到火力点列表;二、定期更新时,每隔一段时间重新统计排名,更新火力点列表。
另外火力点的数量也非固定不变的,它可以随着游戏服务器的负载程度动态调整。当服务器将要过载时,起初可能只有几个火力点,但是如果这样服务器依然过载,可以逐渐增加火力点的数量。相反,随着游戏的进行,一些用户的消失,服务器负载逐渐变轻时,火力点的数量也随之变小,最终至没有火力点。
在过程e1)中使用单点合成法。单点合成法为合成服务器以一定周期接收针对不同火力点的各种动作后,将它们按接收者分组。每组同类的动作合并到一起,如对火力点的攻击力叠加,失明概率叠加,攻击力共同减弱等各种类型的动作分别合并,形成一个或几个动作。然后将合成后的动作发送给服务器处理。这样可能同时对某火力点发生100个动作,但是通过单点合并发送给服务器的只是几个动作命令。这样大大减少了服务器的工作量从而达到使游戏平滑运行的目的。
区域合成方法的实施过程如下a2)游戏服务器保存游戏用户的各个动作,作为确定合成范围的基础数据。
b2)当游戏服务器负载过重时,统计用户的密集区域。密集区域是指游戏中用户密集的区域或者同组用户密集的区域;c2)确定合成范围。区域合成方法的合成范围是使用区域动作作用密集区域的动作集合。区域动作是指对一个区域内的所有游戏用户起作用的动作,并不针对某一特定游戏用户。然后将合成范围发送给所有客户端。
d2)客户端接收到合成范围,当再次发送动作命令时,先判断一下该动作是否属于合成范围,如果属于合成范围,将这个动作发送到游戏的合成服务器。如果不属于合成范围,就发送给通信服务器。
e2)合成服务器以固定周期接收这些动作,然后使用区域合成法将他们合成。
f2)最后合成服务器将合成的结果发送给游戏服务器进行执行。
在步骤b2)中所进行的密集区域统计,首先将游戏地图进行分割,每个分割区域作为区域动作的作用标准。每隔一段时间,游戏服务器统计这些区域内整体用户数量和各支队伍的用户数量,形成区域用户数量列表,然后确定密集区域。密集区域与火力点相似,密集区域的选择也随着游戏服务器的负载变化而增加或减少。
在步骤e2)中使用区域合成法。区域合成法是针对那些具有大规模作用能力的动作而定的合成方法。合成服务器以一定周期接收针对各个密集区域的各种动作后,将它们按区域和动作类型分组。由于在同一区域内对于同一种动作,其作用位置不可能完全一致,而且作用范围也不尽相同,那么对于它们的合成不能采用简单的叠加,需要对其进行模糊合成。合成可以使用相近叠加法和三点归一法对各个动作进行合成。首先使用相近叠加法,将相近的动作简单叠加到一起。此处相近多少可以进行合成需要看游戏具体情况而定。然后使用一次三点归一法,即选择三点动作的重心,将相近的三个动作进行合成到它们的重心处。重心点就是合成后的作用点;作用力度是各个被合成动作的叠加;作用范围是能够包含所有被合成的动作范围的最小平滑封闭区域。接着重复使用三点归一法直至该密集区域的所有同类动作合成为一个动作或两个动作,合成到最后可能剩下两个点,可以不进行合成。
当游戏某一区域发生大规模战役时,游戏服务器保存该区域游戏玩家的各个动作。根据动作类表形成一个接收单点动作数量的列表,如图3所示。在这个表中可以看出被单点作用的排名,可以根据当前游戏服务器的负载情况选择火力点数,显然A000001和B000005可以作为火力点。对密集区域的选择先将区域分割,然后统计各个区域的人数。如图4所示是对某个队伍玩家分布的模拟显示,其中区域3和区域6显然符合密集区域的条件。然后游戏服务器将火力点A000001和B000005、区域3和区域6、以及对应的动作发送给客户端。这里对应的动作因游戏差异而不同。
客户端接收到这些信息,当再次发送动作命令时,分成两部分发送。如果是作用A000001或B000005并且属于单点动作,就发送给合成服务器;如果是大规模作用动作且在区域3和区域6内,也发送给合成服务器。其他的所有动作发送给通信服务器。
合成服务器定期接收客户端发送来的动作,然后将这些动作分类。然后对同类的动作进行合成,如图5所示是作用A000001的动作分类及合成过程各项数值变化列表。从而完成单点合成,只要将两个动作发送给游戏服务器即可。
然后进行区域合成,假设对区域3的动作点分布如图6所示。首先进行相近叠加得到如图7所示的结果,动作力度合成方式与单点合成相同;然后进行两次三点归一法合成,分别得到如图8和如图9所示的结果。而动作作用区域随着不同游戏的各种动作作用范围不同而变化。
如此,本发明的所述网络游戏中动作合成的方法,通过两种合成方法将同时产生的大量相似动作合成为几个动作发送给游戏服务器,降低了游戏服务器的工作量;解决了小区域大量用户同时动作带来的问题,最终使游戏能够平稳的运行。
应当理解的是,本发明上述针对具体实施例的描述比较具体,并不能因此而理解为对本发明的专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。
权利要求
1.一种网络游戏中动作合成的方法,其包括以下步骤1)设置一合成服务器,负责游戏动作的合成;2)确定合成范围,合成范围是能够进行动作合成的多方面条件的组合,所述条件包括某个用户、某类动作、某个区域和某个时间的组合;3)将合成范围发送给客户端,当客户端再次发送动作时,先判断该动作是否属于合成范围,如果属于合成范围,将该动作发送到游戏的合成服务器;如果不属于合成范围,客户端将该动作发送给通信服务器;4)所述合成服务器定期接收客户端发送来的动作,将动作分类进行组合,所述合成服务器将大量同一种类型的动作合成为一个或者少量的动作;5)所述合成服务器将这些合成后的动作发送给游戏服务器。
2.根据权利要求1所述的方法,其特征在于,所述步骤4)中合成服务器对动作的合成采用单点合成方法,其步骤包括a1)游戏服务器保存游戏用户的各个动作,作为确定合成范围的基础数据;b1)当游戏服务器负载达到预定程度时,设置并统计用户的火力点,所述火力点指游戏中接受其他用户动作的主要对象,即接受动作最多的一些对象;c1)确定合成范围,单点合成方法的合成范围是使用单点动作作用在火力点的动作集合,然后将合成范围发送给所有客户端;d1)客户端接收到合成范围,当再次发送动作命令时,先判断该动作是否属于合成范围,如果属于合成范围,将这个动作发送到游戏的合成服务器,如果不属于合成范围,就发送给通信服务器;e1)合成服务器以固定周期接收这些动作,然后使用单点合成法将他们合成;f1)合成服务器将合成的结果发送给游戏服务器进行执行。
3.根据权利要求2所述的方法,其特征在于,所述步骤b1)中统计现存用户接收到其他用户对其的动作次数,并形成列表;所述步骤e1)中使用的单点合成法包括合成服务器以一定周期接收针对不同火力点的各种动作,将它们按接收者分组,每组同类的动作合并到一起,形成一个或几个动作,再将合成后的动作发送给游戏服务器处理。
4.根据权利要求1或2所述的方法,其特征在于,所述步骤4)中合成服务器对动作的合成采用区域合成方法,其步骤包括a2)游戏服务器保存游戏用户的各个动作,作为确定合成范围的基础数据;b2)当游戏服务器负载达到预定程度时,统计用户的密集区域,密集区域指游戏中用户密集的区域或者同组用户密集的区域;c2)确定合成范围,区域合成方法的合成范围是使用区域动作作用密集区域的动作集合,区域动作指对一个区域内的所有游戏用户起作用的动作,并不针对某一特定游戏用户;将合成范围发送给所有客户端;d2)客户端接收到合成范围,当再次发送动作命令时,先判断该动作是否属于合成范围,如果属于合成范围,将这个动作发送到合成服务器;如果不属于合成范围,就发送给通信服务器;e2)合成服务器以固定周期接收这些动作,然后使用区域合成法将他们合成;f2)合成服务器将合成的结果发送给游戏服务器进行执行。
5.根据权利要求4所述的方法,其特征在于,所述步骤b2)中所进行的密集区域统计,先将游戏地图进行分割,每个分割区域作为区域动作的作用标准;每隔一段时间,游戏服务器统计这些区域内整体用户数量和各支队伍的用户数量,形成区域用户数量列表,并确定密集区域;所述步骤e2)中使用的区域合成法包括合成服务器以一定周期接收针对各个密集区域的各种动作,将它们按区域和动作类型分组;并对同一区域内的同一种动作,进行模糊合成。
6.根据权利要求5所述的方法,其特征在于,所述模糊合成采用相近叠加法,将相近的动作简单叠加到一起。
7.根据权利要求6所述的方法,其特征在于,所述模糊合成还包括然后使用一次三点归一法,即选择三点动作的重心,将相近的三个动作进行合成到它们的重心处,重心点就是合成后的作用点;作用力度是各个被合成动作的叠加;作用范围是能够包含所有被合成的动作范围的最小平滑封闭区域;接着重复使用三点归一法直至该密集区域的所有同类动作合成为一个动作或两个动作。
全文摘要
本发明公开了一种网络游戏中动作合成的方法,其包括以下步骤设置一合成服务器;确定合成范围;将合成范围发送给客户端,当客户端再次发送动作时,先判断该动作是否属于合成范围,如果属于合成范围,将该动作发送到游戏的合成服务器;如果不属于合成范围,客户端将该动作发送给通信服务器;所述合成服务器定期接收客户端发送来的动作,将动作分类进行组合,所述合成服务器将大量同一种类型的动作合成为一个或者少量的动作;所述合成服务器将这些合成后的动作发送给游戏服务器。本发明方法降低了游戏服务器的工作量;解决了小区域大量用户同时动作带来的问题,最终使游戏能够平稳的运行。
文档编号H04L12/00GK1866829SQ20051007060
公开日2006年11月22日 申请日期2005年5月17日 优先权日2005年5月17日
发明者齐延明, 顾翀, 叶云 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1