CN1960379A - 一种基于p2p的网络游戏消息处理方法 - Google Patents
一种基于p2p的网络游戏消息处理方法 Download PDFInfo
- Publication number
- CN1960379A CN1960379A CN 200610114774 CN200610114774A CN1960379A CN 1960379 A CN1960379 A CN 1960379A CN 200610114774 CN200610114774 CN 200610114774 CN 200610114774 A CN200610114774 A CN 200610114774A CN 1960379 A CN1960379 A CN 1960379A
- Authority
- CN
- China
- Prior art keywords
- message
- game
- user
- server
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
一种基于P2P的网络游戏消息处理方法,在网络游戏服务器端对各游戏服务器使用P2P覆盖网络进行连接。采用智能体进行消息的分发管理,由智能体负责更新各个用户替身所需要的游戏数据。游戏中各个对象的所有权只属于它所在的游戏服务器,游戏服务器对用户的响应消息进行公平的排序,然后进行处理。本发明考虑了不同用户和服务器之间存在不同网络时延的特点,避免了传统网络游戏中距离由于某些用户距离游戏服务器较近(时延较小)而导致的不公平现象,从而提高了游戏的公平性。
Description
技术领域
本发明涉及一种基于P2P的网络游戏消息处理方法。
背景技术
网络游戏有可能成为未来互联网上一个规模庞大的应用模式,因此,也将会成为一个强有力的应用需求,带动一系列关键技术的研究开发与应用。互联网本身的特点,如延迟、不稳定以及低带宽等,使得网络游戏和传统的单机游戏有着很大的区别,当用户数量增加时,网络游戏又面临着扩展性、可靠性以及响应性的问题。由于一台服务器所能支持的用户数有限,无法支持超过3000-6000的同时在线用户,因此要创建一个上万人同时在线的游戏虚拟环境需要多台服务器。当大量用户连接到服务器时,传统的客户机/服务器结构因为存在服务器这样一个单一入口,因此响应速度较慢,并且系统的可扩展性较差。
在现有的网络游戏中,每个游戏往往都使用自己的专有平台,这就使得不同游戏之间的资源共享非常困难,导致资源得不到充分的利用。但是,一个游戏所需要的计算能力和它所处的生命周期相有关,在一个游戏生命期的后期,用户数会大量减少,因此需要动态减少其所使用的资源。本发明在游戏服务器端采用P2P技术,游戏服务器能够做到资源的动态分配,由于游戏的高峰期往往在傍晚和晚上,因此可以和商业服务器共用服务器资源,从而降低应用成本,而且具有迅速扩大以及增加新服务节点的能力。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提供一种基于P2P的网络游戏消息处理方法,该方法在游戏服务器之间使用P2P进行连接,并使用智能体进行消息处理,解决了可扩展性的问题,有效降低了服务器之间的网络流量;在游戏服务器处理消息时,考虑到不同用户间和服务器存在不同时延的问题,有效地保证了消息处理中的公平问题。
本发明的技术解决方案:基于P2P的网络游戏消息处理方法,其特征在于包括下列步骤:
(1)各网络游戏服务器之间采用支持多属性范围查询的P2P覆盖网络进行连接;
(2)用户连接到离其最近的一台服务器,该服务器生成一个智能体(User Agent,简称UA)来接收用户的响应消息,并发送最新的游戏状态消息给用户;
(3)UA在接收到响应消息,根据游戏逻辑,把对应的更新请求发送到某一台游戏服务器,该游戏服务器上负责和UA通信的为智能体(DataAgent,简称DA);
(4)游戏服务器在接收到更新请求消息后,对该消息进行公平的排序处理;
(5)游戏服务器在改变游戏状态后,DA把用户感兴趣的最新游戏状态发送给UA,UA再把接收到的状态更新消息发给用户;DA是由UA根据自己的感兴趣区域发送到游戏服务器的智能体,它可以只发送用户感兴趣的数据,从而节省了网络带宽;
(6)用户根据最新的游戏状态决定下一步的动作。
本发明的原理:各网络游戏服务器之间采用支持多属性范围查询的P2P覆盖网络进行连接,然后组成一个单一的游戏世界,服务器对于用户来说是透明的。每个服务器负责一定区域内的游戏状态数据,如用户替身的位置等。当用户对某一范围的对象感兴趣时,它发送一个包含订购条件的移动智能体到该对象所在的服务器。当服务器的数据发生变化时,智能体把符合订购条件的对象状态发送给用户。
采用移动智能体进行数据分发管理时,每个User Agent根据自己的数据订购范围通过P2P网络发送Data Agent到各个服务器。当服务器中的数据发生变化时,Data Agent把对应的数据直接发送给User Agent。
User Agent接收到用户发送的消息之后,根据游戏逻辑,排序后发送到对应的游戏服务器。游戏服务器对接收到的消息进行排序,然后作出相应的修改动作。在修改完对象状态之后,各个User Agent所发送的Data Agent将发回各自感兴趣的对象状态。
在消息处理方面,目前的技术只考虑到传统客户机/服务器下的公平消息处理问题,而没有考虑P2P情况下的公平消息处理问题。
本发明与现有技术相比的优点在于:
(1)传统的客户机/服务器结构存在可扩展性问题,而普通的P2P网路游戏则直接在各个用户之间采用P2P方式进行连接,存在游戏管理困难、难以预防作弊等难题。本发明采用了P2P覆盖网络对游戏服务器进行连接,有效的提高了系统的扩展性和可靠性,并且服务器可以随时加入和离开现有的覆盖网络,游戏服务器能够做到资源的动态分配,由于游戏的高峰期往往在傍晚和晚上,因此可以和商业服务器共用服务器资源,从而降低应用成本,而且具有迅速扩大以及增加新服务节点的能力。为低成本、高效率地建立游戏世界建立了良好的基础。
(2)本发明使用了移动智能体在服务器端进行数据的分发管理。在客户机/服务器结构中,由于数据集中在一台机子中,所以不存在数据的分发管理问题。在普通的P2P游戏中,如MiMaze,则使用了广播的方式,把每个用户的更新数据发送给所有的用户,从而浪费了不必要的网络带宽。本发明使用移动智能体的方式,每个用户可以精确获取所感兴趣的数据,从而减少了网络流量。
(3)本发明根据基于分布式服务器的网络游戏特点,考虑到不同用户和服务器直接存在不同的网络时延,根据用户的响应速度,对游戏消息进行了公平的排序,从而使得响应速度较快的用户可以获取较多的奖励,避免了传统游戏中因不同网络时延带来的不平等问题。
附图说明
图1为本发明的系统结构图;
图2为本发明的订购区域示意图;
图3为本发明中发送游戏状态的一个例子;
图4为本发明的消息传递序列图。
具体实施方式
如图1所示,使用本发明方法进行游戏消息处理,具体的步骤为:
1.各服务器节点之间采用支持多属性范围查询的P2P网络进行连接,各节点负责的游戏区域根据游戏地图进行划分,因此在查询感兴趣的对象时可以通过对象所在的位置范围经过P2P网络进行查询。比如Q={0≤x≤10,10≤y≤30,type=tank}表示查询位于x轴0到10之间,y轴10到30之间的所有坦克。
游戏中很多对象都有一定的思考能力,比如说由计算机生成的怪物可以攻击用户替身,而用户替身的行为直接受用户控制。在本发明中,UA负责用户在游戏中的替身的游戏逻辑处理,比如说用户按下按键“A”后,UA可以将替身的位置向左移动50厘米;其它对象的游戏逻辑由其所在的服务器处理,比如怪物在看到用户替身之后,可以向用户发起攻击等。
2.在用户登录游戏时,代表用户替身的智能体User Agent首先根据自己感兴趣的范围发送包含订购条件(比如订购离自己10米之内的所有对象)的智能体Data Agent到数据所在的服务器。
在网络游戏中,每个用户往往只能看到游戏世界中局部的游戏状态,比如在赛车游戏中,用户只能看到前后一定距离范围内的车辆。为了减少网络数据传输量,当某一个对象的状态发生变化时,只有对该对象感兴趣的用户才能接收到其最新状态,从而减少网络流量。本发明使用了移动智能体对游戏的数据分发进行管理,可以使每个用户只接收到自己感兴趣的数据。
Data Agent用来过滤并发送用户感兴趣的数据。初始化时,使用DataAgent的步骤如下:
(1)User Agent声明订购区域Rs,如图2所示,UA1的订购区域为Rs={Rs1,Rs2,Rs3,Rs4}。图中,整个游戏世界分别由四个服务器负责。
(2)使用P2P覆盖网络的路由协议,发送包含Rs信息的Setup DataAgent消息(记为SDARs)到Rs区域中心点所在服务器S1,S在接收到该消息后,根据其掌握的邻居信息,把SDARs分解为四个子消息:SDARs1,SDARs2,SDARs3和SDARs4。然后把子消息发送到对应的服务器中。
(3)当服务器接收SDA消息后,发现订购区域范围全部包含在本服务器所负责的游戏世界范围内时,对应的Data Agent就在该服务器中保存了下来,记为DARsi。
(4)当服务器中的数据发生变化时,如果此数据刚好处在某个DataAgent的订购范围之内,则Data Agent就把此数据发送给其所属的UserAgent。例如,在图2中,当UA2移动时,由于其所处范围在Rs1中,因此DARs1根据订购条件,把UA2的最新状态发送给UA1。
由于用户在游戏世界中的移动,其感兴趣区域可能是动态变化的。因此各个Data Agent将根据User Agent最新的订购区域更新自己的订购子区域。
由于服务器加入或退出以及负载平衡等原因导致服务器负责的游戏世界范围发生变化时,Data Agent也需要移动到新的服务器上,或者分解成多个Data Agent。
3、User Agent在接收到用户的响应消息时,根据游戏逻辑,发送对应的消息到游戏服务器;游戏服务器对接收到的消息进行公平的排序,然后进行处理。
游戏逻辑是分布式处理的方法,即UA负责用户在游戏中的替身的游戏逻辑处理;其它对象的游戏逻辑由其所在的服务器处理。
公平消息排序方法如下:当用户发出的响应消息传递到UA时,UA丢弃超时的消息,对其它消息按消息序号根据游戏逻辑顺序处理后发给更新请求给各个对应的游戏服务器;在服务器端按一定算法计算每个游戏消息的执行时间,然后按此执行时间执行游戏消息,使得对于存在不同时延的用户同时进行游戏时具有公平的效果。
在目前的网络游戏中,由于存在网路时延,不同的用户可能在不同的时间接收到游戏状态更新消息,并且即使用户的响应消息同时发给服务器,到达服务器的时间也可能不一样。因此,反应快的用户可能不能得到合理的回报。
假设发给所有用户的状态更新消息都在同一时间到达,此时公平的消息处理次序是用户响应此状态更新消息所花费的物理时间的次序。也就是说,响应快的用户所发出的消息能够先于其它用户影响游戏的状态。响应时间表示用户接收到更新消息后到发送响应消息所花费的时间。
游戏状态由一系列对象及其对象的状态所组成。游戏状态的变化可能由于以下三个原因组成:删除对象、增加对象或者对象状态的变化。定义了以下几个符号表示:
(1)UMi q,游戏服务GSq负责的游戏状态发生变化时,Data Agent往User Agent发送的最新游戏状态信息;
(2)Ui q,游戏服务GSq发送状态更新消息UMi q时的服务器时间;
(3)Rj iq,用户(客户端)Pj接收到状态更新消息UMi q时的时间;
(4)AMjk iq,用户Pj在本地时间Ajk iq为响应状态更新消息UMi q所发出的第k个响应消息;
(5)
表示用户对状态更新消息UMi q的响应时间;
(6)Wi,User Agent在接收用户Pi的响应消息时所设置的等待超时时间。
在分布式的服务器中,公平的消息处理需要满足以下三个条件,本发明采用→表示执行消息时的前后关系。
(1)对于任何q,k和l>0,则
(2)对于任何q,j,k,l以及n≠j,如果
则
(3)对于所有的q,j,k,n,l以及x>0,存在
用户在发送响应消息时,加入以下几项信息<i,q,δjk iq,Njk iq>,其中:i表示更新消息UMi q的序号,δjk i表示响应时间,Njk i表示消息的ID,在同一用户中对于每个消息来说,此ID是唯一递增的。
响应消息到达User Agent之后,User Agent根据Njk iq对消息进行排序,并加入相对于每一个游戏服务器的序号信息,如果有超时信息,则丢弃,步骤如下:
(1)接收到消息后,以Njk i为序加入消息队列中,记M1,M2,..,Mn为UserAgent中的一个消息序列集合;
(2)对于k>0,如果消息Mk之前的消息都已经到达或者已经达到超时时间,则继续执行步骤3,否则等待;
(3)对于消息子集合M1,M2,..,Mk中的每个消息,根据游戏逻辑确定其要发给哪几个服务器,假设消息需要发送到游戏服务器GSq,则发送消息时加入序号信息Sjk iq,此序号跟User Agent和GSq有关,每给GSq发送一次序号加1。
游戏服务器在接收到消息之后,先对消息进行公平的排序,然后按次序处理消息。对消息进行排队之前,需要计算以下两个参数:
(1)消息在当前队列中的位置;
(2)消息执行时间。
每当有新的消息到来时,这两个参数都需要重新计算。队列中各消息的相对位置不会变化,但绝对位置可能会改变。消息执行时间也可能改变,但是只会更加提前。
消息在队列中的位置按(i,δjk iq)进行排序,先按照i排序,然后在此基础上按δjk i排序。消息的执行时间E(Mk)可以满足按非公平次序到达的消息能够以公平的次序得到执行。
记M1,M2,..,Mn为游戏服务器中的一个消息序列集合,P(M1,M2,..,Mn)表示消息集合对应的所有的发送者。记δk为消息Mk的响应时间,Ti q表示UMi q需要发送的所有用户,ts表示两台服务器之间的往返时延。为了描述方便,我们首先从最简单的条件出发来计算消息执行时间,然后逐步增加限制条件。
首先,假设User Agent发出的消息顺序到达时,取E(Mk)值如下:
此时,在计算执行时间时只需要考虑那些还没有发出响应消息的用户,利用此方法计算出的执行时间可以保证出现新的消息时,现有消息的位置相对不变。
当User Agent发出的消息不按顺序到达时,使用序号Sjk i对来自某一用户的消息进行排序,另外还可以用Sjk i来判断较早前的消息是否都已经到达。
用Q(M1,M2,..,Mn)表示消息M1,M2,..,Mn中的一个消息子集,所有P(Q(M1,M2,..,Mn))在Q(M1,M2,..,Mn)之前发送的消息都已经被服务器接收。此时,取E(Mk)值如下:
此时,计算执行时间时除了需要考虑那些还没有发出响应消息的用户外,还需要考虑到到目前为止消息还没按顺序到达的用户。
在游戏中,要决定什么时候起不再接收对应于一个状态更新消息的响应消息。记了li-1为对应于UMi-1 q的响应消息中最后一个消息的执行时间,由于对应于UMi-1 q的所有响应消息的执行时间都要早于对应于UMi q的响应消息。此时E(Mk)值如下:
此时,计算出来的执行时间保证了对应于UMi-1 q的所有响应消息的执行时间都要早于对应于UMi q的消息。
4、游戏服务器修改对象状态后,各User Agent所发送的Data Agent将向User Agent发送其感兴趣的对象状态。在图3中,游戏世界由四台服务器DGS1、DGS2、DGS3和DGS4组成,User Agent对虚线框内的所有坦克位置感兴趣,如果tank1和tank2同时移动,由于tank1处在虚线框内而tank2不是,因此Data Agent只发送tank1的位置到User Agent。
5、User Agent把最新状态发给用户,用户然后根据最新的游戏状态决定下一步的动作。比如说用户看到一个新的怪物出现在眼前,他可以朝这个怪物开火,游戏客户端就会把开火这个动作封装成一个响应消息发送给User Agent。
下面结合具体的实例对本发明的消息处理方法进行描述。
以图4为例,系统有两个用户和两台服务器,初始时游戏服务器1有对象{C1,C2},游戏服务器2中初始没有对象。假设用户对游戏世界中的所有对象都感兴趣。
(1)系统初始化后,GS1通过User Agent给两个用户分别发送状态信息
(2)接收到状态消息,经过δ11 11时间后,用户1发出响应消息 用户2在经过δ21 11时间后发出响应消息 其中C3的位置处在服务器2的管理范围内,
(3)GS1首先接收到AM21 11消息,然后接收到AM11 11消息。由于
因此经过排序以后,GS1将首先处理AM11 11,然后执行AM21 11。因此用户1将被认为成功删除了C2对象,而用户2则没有;
(4)由于GS1中的数据发生变化,因此User Agent1和User Agent2将分别获取最新状态消息
(5)GS2接收到AM21 11消息后,经过一段时间后执行该消息,生成C3对象;
(6)由于GS2中的数据发生变化,因此User Agent1和User Agent2将分别获取最新状态消息
Claims (3)
1、一种基于P2P的网络游戏消息处理方法,其特征在于包括下列步骤:
(1)各网络游戏服务器之间采用支持多属性范围查询的P2P覆盖网络进行连接;
(2)用户连接到离其最近的一台服务器,该服务器生成一个智能体(User Agent,简称UA)来接收用户的响应消息,并发送最新的游戏状态消息给用户;
(3)UA在接收到响应消息,根据游戏逻辑,把对应的更新请求发送到某一台游戏服务器,该游戏服务器上负责和UA通信的为智能体(DataAgent,简称DA);
(4)游戏服务器在接收到更新请求消息后,对该消息进行公平的排序处理;
(5)游戏服务器在改变游戏状态后,DA把用户感兴趣的最新游戏状态发送给UA,UA再把接收到的状态更新消息发给用户;
(6)用户根据最新的游戏状态决定下一步的动作。
2、根据权利要求1所述的一种基于P2P的网络游戏消息处理方法,其特征在于:所述的游戏逻辑是分布式处理的,具体方法如下:
(1)UA负责用户在游戏中的替身的游戏逻辑处理;
(2)其它对象的游戏逻辑由其所在的服务器处理。
3、根据权利要求1所述的一种基于P2P的网络游戏消息处理方法,其特征在于:所述的步骤(4)中的公平消息排序方法如下:
(1)当用户发出的响应消息传递到UA时,UA丢弃超时的消息,对其它消息按消息序号根据游戏逻辑顺序处理后发给更新请求给各个对应的游戏服务器;
(2)在服务器端按一定算法计算每个游戏消息的执行时间,然后按此执行时间执行游戏消息,使得对于存在不同时延的用户同时进行游戏时具有公平的效果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006101147742A CN1960379B (zh) | 2006-11-23 | 2006-11-23 | 一种基于p2p的网络游戏消息处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006101147742A CN1960379B (zh) | 2006-11-23 | 2006-11-23 | 一种基于p2p的网络游戏消息处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1960379A true CN1960379A (zh) | 2007-05-09 |
CN1960379B CN1960379B (zh) | 2010-12-01 |
Family
ID=38071869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006101147742A Expired - Fee Related CN1960379B (zh) | 2006-11-23 | 2006-11-23 | 一种基于p2p的网络游戏消息处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1960379B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101505315B (zh) * | 2008-12-25 | 2012-06-06 | 中山大学 | P2p游戏服务器控制系统 |
CN102739608A (zh) * | 2011-04-07 | 2012-10-17 | 腾讯科技(深圳)有限公司 | 游戏特效实现方法、游戏客户端 |
CN102836552A (zh) * | 2011-06-24 | 2012-12-26 | 科乐美数码娱乐株式会社 | 游戏系统、服务器装置以及控制方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1319322C (zh) * | 2004-04-24 | 2007-05-30 | 华为技术有限公司 | 一种用于在通信网络中提供游戏业务的系统和方法 |
-
2006
- 2006-11-23 CN CN2006101147742A patent/CN1960379B/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101505315B (zh) * | 2008-12-25 | 2012-06-06 | 中山大学 | P2p游戏服务器控制系统 |
CN102739608A (zh) * | 2011-04-07 | 2012-10-17 | 腾讯科技(深圳)有限公司 | 游戏特效实现方法、游戏客户端 |
CN102739608B (zh) * | 2011-04-07 | 2014-08-06 | 腾讯科技(深圳)有限公司 | 游戏特效实现方法、游戏客户端 |
CN102836552A (zh) * | 2011-06-24 | 2012-12-26 | 科乐美数码娱乐株式会社 | 游戏系统、服务器装置以及控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1960379B (zh) | 2010-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1158615C (zh) | 对流媒体服务器实现负载均衡的方法和设备 | |
CN1790998A (zh) | 呈现综合管理系统、呈现服务器及呈现信息管理程序 | |
CN1622549A (zh) | 用于使用对等网络协议共享应用程序的方法和设备 | |
CN1976434A (zh) | 一种实现在线视频会议的方法和系统 | |
CN101075941A (zh) | 一种通过邀请参与游戏的方法和系统、及即时通信客户端 | |
CN1992621A (zh) | 实现大容量网络直播的方法及其系统 | |
CN1317860C (zh) | 一种无线接入点的负载均衡方法 | |
CN1960345A (zh) | 在即时通信系统中创建多账号用户的方法及系统 | |
CN1450761A (zh) | 网络虚拟形象在即时通信工具上表现的实现方法 | |
CN1921438A (zh) | 一种应用代理实现网间应用加速的方法 | |
CN1835453A (zh) | 一种实现分布式系统中负载分担的方法 | |
CN103176780A (zh) | 一种多网络接口绑定系统及方法 | |
CN1960379A (zh) | 一种基于p2p的网络游戏消息处理方法 | |
CN101068173A (zh) | 一种资源共享的方法及系统 | |
CN101067830A (zh) | 一种图片匹配类游戏处理系统及处理方法 | |
CN1798049A (zh) | 一种移动在线游戏系统和方法 | |
CN101047580A (zh) | 创建点对点数据通道的方法 | |
CN101039250A (zh) | 一种图片共享系统和方法 | |
CN1917521A (zh) | 一种实现负载均衡的方法和系统及负载均衡设备 | |
CN1925458A (zh) | 一种网络端口地址转换的实现方法 | |
WO2012159537A1 (zh) | 一种用户信息共享的即时通讯系统及方法 | |
CN101741867B (zh) | 一种捕获BitTorrent网络中节点信息的方法 | |
WO2012159535A1 (zh) | 一种实现用户信息共享的即时通讯系统及方法 | |
CN101079823A (zh) | 一种发起与组建虚拟讨论组的方法及系统 | |
CN1863185A (zh) | 一种多节点智能网络应用服务系统中的会话管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101201 Termination date: 20131123 |