CN101094227B - 一种基于cs架构的移动平台联网游戏消息交互方法 - Google Patents
一种基于cs架构的移动平台联网游戏消息交互方法 Download PDFInfo
- Publication number
- CN101094227B CN101094227B CN2007100292245A CN200710029224A CN101094227B CN 101094227 B CN101094227 B CN 101094227B CN 2007100292245 A CN2007100292245 A CN 2007100292245A CN 200710029224 A CN200710029224 A CN 200710029224A CN 101094227 B CN101094227 B CN 101094227B
- Authority
- CN
- China
- Prior art keywords
- message
- mobile platform
- messages
- method based
- online game
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种基于CS架构的移动平台联网游戏消息交互协议,它涉及面向移动平台(如手机、PDA等)的游戏消息交互开发方法,属于数据通信技术领域。本发明首先采用了基于字节流的消息设计方式,将消息分为消息头和消息体两部分;再利用面向对象的设计思想,对消息进行封装,将消息设计为Message类,它包含MessgeHead和MessageBody;最后将所有的消息类封装为一个消息包。由于消息的发送和接收的具体实现都封装在具体的类中,隐藏了实现的细节,提高了灵活性,而本发明的移动平台联网消息协议减少了游戏联网消息流量,它对运行设备的处理速度要求不高,适合运行于移动平台,有助于游戏在不同移动手持设备上的普及。
Description
技术领域
本发明涉及面向移动平台(如手机、PDA等)的游戏消息交互开发方法,尤其涉及一种移动平台上的联网游戏消息交换协议。
背景技术
近年来,随着移动手持设备(手机、PDA等)硬件和移动网络技术的发展,移动平台联网游戏变得越来越受欢迎。目前大多的移动手持设备的都支持Java游戏,中国有超过3亿的手机玩家,具有巨大的市场潜力。
现在市面上的移动通讯领域的手机大多都内嵌JAVA虚拟机,支持J2ME(Java 2 Micro Edition)程序。J2ME(JAVA 2 Micro Edition)是由Sun公司推出的针对无线应用和嵌入式产品的开发平台。它也是目前应用的最广的手机游戏开发平台。J2ME精简了标准JAVA的核心类库,以便更好的运行于资源受限的嵌入式系统中。J2ME的API是专门针对屏幕、电能和内存等资源有限的移动设备进行了优化和定义而形成的,它针对移动电话等小型设备,专门提供给嵌入式电子设备使用。
随着使用移动平台休闲娱乐越来越受大众的欢迎,移动通信技术的快速发展,基于移动平台的联网游戏具有很大的发展潜力。移动平台游戏在联网架构的设计主要有:Client-Server,Peer-to-Peer这两种。CS架构是手机联网游戏中使用最广的一种架构。这种架构中,整个游戏世界的状态存储在服务器上面,手机客户端之间的通信必须经过服务器端转发。这种架构可以很好的管理玩家信息,收取游戏费用及防止游戏中的作弊行为。但是当客户端太多时,服务器会成为一个性能瓶颈。而且因为所有的信息都需要经过服务器进行转发,信息传送的网络延迟会加大。分布式处理结构将游戏世界状态存储在每一个用户上面,移除了集中式结构的性能瓶颈。在这种架构中,客户端之间可以直接通信,不需要经过服务器转发,网络延迟较小。P2P架构中每一条信息都要广播给其他peer,玩家数量多的时候容易造成网络数据通信量过大,不适合玩家数量太大的游戏。
对于基于CS架构的游戏,游戏分为客户端和服务器,客户端运行于手机等移动手持设备上面,而服务器端运行于大型的数据服务器上。服务器是整个游戏的中心,客户端需要将自己的游戏信息发给服务器,并从服务器获得最新的游戏世界状态。客户端和服务器端之间在进行数据交互时,所传输的数据需要按照一定的消息协议,这样才能进行正确的消息解析。相比因特网,移动网络的带宽很低,而且很多移动运营商都是采用按网络流量来支付费用。对于游戏来说,减少网络流量不仅可以减少数据的传送时间,而且可以为玩家节省费用。
目前PC平台的联网游戏中,因为消息复杂,网络带宽大,费用便宜,因此游戏消息大多是基于XML标签来设计的。而移动平台主要有以下两个缺点:1、运算速度不快,存储空间不大,软硬体平台差异性大,显示屏幕较小等;2、移动网络带宽小,网络延迟大。
发明内容
针对移动平台的特点,本发明要达到的技术目的是要提供一种移动平台联网游戏消息交互协议。这个协议能将网络通信流量减少到最低,而且具有很强的可重用性和移植性,它在提高游戏通信性能的同时也能适应处理能力低、内存有限、屏幕显示及输入输出受限制的移动手持设备的硬件环境使用。
本发明的技术解决方案是通过对移动平台游戏消息进行研究,提出一个基于CS架构的移动平台联网游戏消息交互协议。这个协议适合资源受限的移动平台使用。为了适应移动手持设备计算能力较低的特点,本发明把游戏消息协议进行简化,让协议结构简单,并以最少的消息大小来表达最多的游戏内容,达到压缩通信流量的目的。
一种基于CS架构的移动平台联网游戏消息交互协议,它首先采用了基于字节流的消息设计方式,再利用面向对象的设计思想,对消息进行封装,将消息设计为类,最后将所有的消息类封装为一个消息包。
基于字节流的消息设计方式过程中,一条消息分为消息头和消息体两个部分。消息头用于存储消息的各种识别信息,这些信息按固定的次序和字段长度排列,在整个游戏架构中具有固定性和可识别性,消息头中的属性是每个消息都具有的,它的长度固定;消息体存储消息的具体信息,只有经过解包的消息才能够读取其消息体中的信息,不同消息体含有的属性不同,不同消息的消息体长度不同。
所述消息头设计为由以下几个字段组成:
1)消息标识(MAGIC_NUNBER):一串特殊的字符串,所有的消息都一样,用于判别字节流是否为合法的消息;
2)消息编号(messageId):用于识别是具体哪一种消息;
3)用户标识(userId):用于识别是哪一个用户,若该条消息无法确定用户名(如用户注册的请求信息),则设定为一个无效的值。
所述消息的消息体都由各自的类定义格式,互不相同。
消息进行封装的过程中,将消息设计为类,Message类表示消息,它包含MessgeHead(消息头)和MessageBody(消息体)两个部分,其中Message类完成构造函数,打包、解包操作及对各相关字段的读取、设置操作,MessageHead类定义了消息头的各个字段属性和打包解包及对各相关字段的读取、设置操作,MessageBody是一个接口,定义消息体打包和解包两种操作,最后将所有的消息类封装为一个消息包,隐藏了实现细节。
所述消息类还包括一些具体特殊消息体类,这些消息体类定义了实际需要交互的信息字段属性,实现了MessageBody接口定义的打包、解包操作,及定义了对各相关字段的读取、设置操作。
所述封装的消息包同时在客户端和服务器端使用,游戏通信消息的打包和解包的逻辑全部都在包中实现,其他模块不需要了解其具体逻辑,只需要调用它提供的模块生成相应的消息就可以。
本发明具有以下特点:
(1)可重用性,此通讯消息协议用于不同的游戏时消息协议的框架比如Message、MessageHead、MessgeBody这些类(接口)不需要修改可以直接重用;而有一部分的消息体比如登陆消息、注册消息、聊天消息等也是可以直接重用。
(2)独立性,消息的发送和接收的具体实现都封装在具体的类中,隐藏了实现的细节,提高了灵活性。如果需要对发送、接收的具体实现进行改变只需要修改类中相应的函数,这种修改对消息包外的程序是没有影响的。这种方法使得消息包具有较好的独立性。
(3)跨平台性,JAVA语言具有良好的跨平台性,通讯消息协议采用JAVA语言进行设计和实现也具有跨平台的特性。
(4)适应移动设备硬件要求,传统基于PC平台的游戏消息协议会生成很多的网络流量,这对移动网络的带宽和移动设备的的CPU处理速度有较高的要求。由于现在的移动网络性能仍无法与Internet相比,而移动设备处理能力不强,内存小。如果游戏消息协议太复杂的话将影响到游戏在移动平台上的普及。而本发明的移动平台联网消息协议减少了游戏联网消息流量,它对运行设备的处理速度要求不高,适合运行于移动平台,有助于游戏在不同移动手持设备上的普及。
附图说明
图1为基于字节流的消息结构图;
图2为注册消息的消息体示意图;
图3为消息协议实现类图;
图4为实施例游戏界面图。
具体实施方式
下面结合附图对本发明进行进一步阐述。
移动平台联网游戏就是可以多人同时参与的运行于移动设备上面的游戏。目前移动平台的联网游戏主要是基于CS(Client-Server)客户端/服务器架构。游戏的客户端运行于移动设备上面,游戏服务器端运行于硬件服务器的上面。客户端通过GPRS等无线网络再经过网关与互联网上的游戏服务器端进行通信。
基于CS架构的移动平台联网游戏消息交互协议,它首先采用了基于字节流的消息设计方式,再利用面向对象的设计思想,对消息进行封装,将消息设计为类,最后将所有的消息类封装为一个消息包。这样可以以最少的消息大小来表达最多的游戏内容,达到压缩通信流量的目的。
本发明的消息交互协议采用了基于字节流的设计方式,如图1所示,一条消息分为消息头和消息体两个部分。消息头中的属性是每个消息都具有的,它的长度固定;不同消息体含有的属性不同,不同消息的消息体长度不同。
消息头(MessageHead)用于存储消息的各种识别信息,这些信息按固定的次序和字段长度排列,在整个游戏游戏架构中具有固定性和可识别性。本论文中,将消息头设计为由以下几个字段组成:
1)消息标识(MAGIC_NUNBER):一串特殊的字符串,所有的消息都一样,用于判别字节流是否为合法的消息。
2)消息编号(messageId):用于识别是具体哪一种消息;
3)用户标识(userId):用于识别是哪一个用户,若该条消息无法确定用户名(如用户注册的请求信息),则设定为一个无效的值。
消息体(MessageBody)存储消息的具体信息,只有经过解包的消息才能够读取其消息体中的信息。每条消息的消息体都由各自的类定义格式,互不相同,因此不同消息的消息体长度也不同。图2为一条客户端发送到服务器的用户注册请求消息的消息体。消息体中含有用户名(username),密码(password),性别(sex)和所选头像编号(headImageId)等四个属性。这些属性的具体含义如表1:
表1登陆消息格式定义
在实现时,为了进一步对消息进行封装,利用面向对象的设计思想,将消息设计为类,Message类表示消息,它包含MessgeHead(消息头)和MessageBody(消息体)两个部分。MessageBody是一个接口。不同消息的消息体,比如Login、Register、Chat等类都需要实现这个接口。最后将所有的消息类封装为一个消息包,隐藏了实现细节也方便使用。消息包中各个类的关系如图3所示:
1)Message类:游戏的消息类,定义了两个属性,消息头(head:MessageHead对象)、消息体(body:MessageBody对象),构造函数,打包(pack)、解包(unpack)操作及对各相关字段的读取(get)、设置(set)操作。
2)MessageHead类:定义了消息头的各个字段属性和打包(packHeader)解包(unpackHeader)及对各相关字段的读取(get)、设置(set)操作。
3)MessageBody接口:定义消息体打包(packBody)和解包(unpackBody)两种操作。
4)其它各个具体消息体类(如Register,Login等):定义了实际需要交互的信息字段属性,实现了MessageBody接口定义的打包(packBody)、解包(unpackBody)操作,及定义了对各相关字段的读取(get)、设置(set)操作。
此包同时在客户端和服务器端使用,包中的各个消息编号及消息名如表2。游戏通信消息的打包和解包的逻辑全部都在包中实现,其他模块不需要了解其具体逻辑,只需要调用它提供的模块生成相应的消息就可以。实现了模块的高独立性,同时也使得模块更加的容易被移植。
表2消息标号及消息名
利用本消息包进行发送消息和接收消息的关键代码如下:
(1)客户端使用消息包生成一条Login消息并且发送到服务器:
Message msg=new Message(Note.LOGIN);//Note.LOGIN是Login消息的messageId
Login user=new Login();
user.setUserName(“Tom”);
user.setPassword(“123456”);
msg.setBody(user); //将消息体与消息关联
msg.pack(out); //将消息打包并发送
(2)服务器收到消息后的解包操作代码:
Message msg=new Message();
msg.unpack(in); //调用unpack函数从in中将消息解包
switch(msg.getMessageId()) //根据不同的消息进行相应的处理
{
case(Note.REGISTER):{
registerProcess(); //process the register message
break; }
}.
(3)Message函数中打包(pack)和解包(unpack)函数的代码:
public void pack(DataOutputStream out){
header.packHeader(out); //对消息头进行打包
body.packBody(out); //对消息体进行打包
}
public void unpack(DataInputStream in){
header.unpackHeader(in); //接收消息头
//根据消息头中的messageId来判别消息体的类型
switch(header.getMessageId()){
case(Note.LOGIN):{
Login temp=new Login();
temp.unpackBody(in);
this.body=temp;
break; }
}
}
以下结合具体实施例对本发明作进一步说明。
如图4就是这样的两款游戏,泡泡龙和俄罗斯方块。手机版本的双人对战泡泡龙游戏,是根据PC的游戏改编、简化而来的。玩家操控画面下方的泡泡龙,往上发射各种不同颜色的泡泡,当3个同样颜色泡泡粘在一起时,就会破掉,失去支撑的泡泡就会掉落而被消除。随着泡泡发射次数的累积,顶上的泡泡会随之下降,玩家必须在顶上的泡泡还没降到底限以前将所有泡泡消除。如果一次消失的彩球数量超过3个,则可以送一些彩球(送的数量等于消失的数量-3)给对手,彩球的颜色和位置将是随机生成的。该游戏考验玩家的眼明手快,同时还锻炼玩家的规划、策划能力及耐力。
游戏客户端与服务器端进行通信时的游戏消息必须遵守一定的消息协议,而且游戏通信的底层网络也可能变化(比如GPRS,CDMA,3G等),本发明通过将这些具体的实施都封装在一个包中,从而隐藏了具体的实现的细节。方便了以后具体实现细节的修改和优化,或是底层网络通信网络的变化。而消息交互包的独立性使得它可以很容易的在不同的游戏中重用,比如图4中所示的泡泡龙和俄罗斯方块游戏,因为两个游戏的消息相似性很高,所以只需要将消息包进行小的修改就可以重用到另外一个游戏中。
可以看出,本发明可以较好的实现移动平台客户端和服务器端之间的简单,方便的通信。
Claims (5)
1.一种基于CS架构的移动平台联网游戏消息交互方法,其特征在于,客户端通过将消息设计为类后将所有的消息类封装为消息包,其中:
所述消息类包括消息头和消息体两个部分,所述消息头用于存储消息的各种识别信息,包括定义消息头的各个字段属性和打包、解包及对各相关字段的读取、设置操作,所述识别信息按固定的次序和字段长度排列,在整个游戏游戏架构中具有固定性和可识别性,消息头中的属性的长度固定;
所述消息体存储消息的具体信息,定义消息体打包和解包两种操作,不同消息体含有的属性不同,不同消息的消息体长度不同;
所述客户端使用消息包生成消息,将所述生成的消息向服务器端发送;
所述服务器端接收所述消息后,根据解包操作代码对所述消息进行解包操作。
2.根据权利要求1所述的基于CS架构的移动平台联网游戏消息交互方法,其特征在于,所述消息头包括以下字段:
消息标识MAGIC_NUNBER字段,用于判别字节流是否为合法的消息;
消息编号messageId字段,用于识别消息类型;
用户标识userId字段,用于识别用户,若用户名无法确定,该用户标识设定为一个无效的值。
3.根据权利要求1所述的基于CS架构的移动平台联网游戏消息交互方法,其特征在于,所述消息体都由各自的类定义格式,互不相同。
4.根据权利要求1所述的基于CS架构的移动平台联网游戏消息交互方法,其特征在于,所述消息类为登陆Login消息类或注册Register消息类。
5.根据权利要求1所述的基于CS架构的移动平台联网游戏消息交互方法,其特征在于,所述封装的消息包同时在客户端和服务器端使用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100292245A CN101094227B (zh) | 2007-07-18 | 2007-07-18 | 一种基于cs架构的移动平台联网游戏消息交互方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100292245A CN101094227B (zh) | 2007-07-18 | 2007-07-18 | 一种基于cs架构的移动平台联网游戏消息交互方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101094227A CN101094227A (zh) | 2007-12-26 |
CN101094227B true CN101094227B (zh) | 2010-09-15 |
Family
ID=38992253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100292245A Expired - Fee Related CN101094227B (zh) | 2007-07-18 | 2007-07-18 | 一种基于cs架构的移动平台联网游戏消息交互方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101094227B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104243274A (zh) * | 2013-06-14 | 2014-12-24 | 亿览在线网络技术(北京)有限公司 | 一种消息处理方法及消息中心系统 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101764836B (zh) * | 2008-12-23 | 2013-08-07 | 北京大学深圳研究生院 | 分布式心跳服务器架构及其进程处理方法 |
CN103929443A (zh) * | 2013-01-10 | 2014-07-16 | 深圳市微讯移通信息技术有限公司 | 一种内置型的游戏服务器系统及该系统的应用方法 |
CN103647763A (zh) * | 2013-11-28 | 2014-03-19 | 北京掌阔移动传媒科技有限公司 | 一种移动终端广告调用方法和系统 |
CN105634684B (zh) * | 2014-11-19 | 2019-04-19 | 中国移动通信集团广东有限公司 | 一种数据包的处理方法、装置及服务器 |
CN106254909B (zh) * | 2016-08-04 | 2019-07-23 | 传线网络科技(上海)有限公司 | 互动内容的分发、运行方法及装置 |
CN106528259B (zh) * | 2016-11-04 | 2019-07-09 | 网易(杭州)网络有限公司 | 数据发送、接收方法及其装置 |
CN107193961B (zh) * | 2017-05-24 | 2021-01-08 | 上海星佑网络科技有限公司 | 信息记录方法和装置 |
GB2581624A (en) | 2017-10-13 | 2020-08-26 | United Intellectuals International Ltd | System and method for developing, hosting, and operating a game |
CN108989391B (zh) * | 2018-06-19 | 2021-09-07 | 北京百悟科技有限公司 | 一种一致性处理的方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1424841A (zh) * | 2003-01-02 | 2003-06-18 | 北京掌中万维科技有限公司 | 一种在短消息网关和网页之间进行通信和数据交换的方式 |
-
2007
- 2007-07-18 CN CN2007100292245A patent/CN101094227B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1424841A (zh) * | 2003-01-02 | 2003-06-18 | 北京掌中万维科技有限公司 | 一种在短消息网关和网页之间进行通信和数据交换的方式 |
Non-Patent Citations (3)
Title |
---|
姚盛旺.基于J2ME的手机网络游戏应用研究.2006,全文. * |
张磊.J2ME环境下开发移动Web服务的研究.2003,全文. * |
朱晓林.基于JAVA创建游戏实体类.科技广场.2006,85-86. * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104243274A (zh) * | 2013-06-14 | 2014-12-24 | 亿览在线网络技术(北京)有限公司 | 一种消息处理方法及消息中心系统 |
CN104243274B (zh) * | 2013-06-14 | 2017-12-15 | 亿览在线网络技术(北京)有限公司 | 一种消息处理方法及消息中心系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101094227A (zh) | 2007-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101094227B (zh) | 一种基于cs架构的移动平台联网游戏消息交互方法 | |
US9814978B2 (en) | Method and system for improving the efficiency of state information transfer over a wireless communications network | |
US6947761B2 (en) | Method and system for improving the efficiency of state information transfer over a wireless communications network | |
ES2369145T3 (es) | Sistema de juegos en línea para móviles y método para la comunicación entre terminales móviles para juegos. | |
CN109395372A (zh) | 实现游戏手柄远程操控电脑游戏的方法、系统与电子设备 | |
EP1291048A2 (en) | Mobile gaming | |
CN105850184A (zh) | 无线网络中特定于应用的拥塞控制 | |
CN110187912A (zh) | 一种节点选择方法和装置 | |
AU2001296187B2 (en) | Server for mapping application names to tag values in distributed multi-user application | |
Glazer et al. | Multiplayer game programming: Architecting networked games | |
Luo et al. | Enabling End‐to‐End Communication Between Wireless Sensor Networks and the Internet Based on 6LoWPAN | |
Khare | W* effect considered harmful [Internet WAP] | |
CN105005678B (zh) | 资源交换平台获取角色信息的方法和装置 | |
CN103891340B (zh) | 数据推送方法,装置及系统 | |
CN108848569A (zh) | 一种基于Netty通信的移动自组织网络资源共享系统 | |
CN103297474B (zh) | 一种批量处理分包方法和系统 | |
CN116774910A (zh) | 网络数据处理方法、装置、设备、存储介质及程序产品 | |
Kao et al. | A client framework for massively multiplayer online games on mobile devices | |
CN110008033A (zh) | 一种和客户端进行通信的方法及电子设备 | |
Wang et al. | Using messaging over Websocket with stomp | |
Ferreira et al. | A middleware architecture for mobile and pervasive large-scale augmented reality games | |
CN115414664A (zh) | 体感设备的数据传输方法 | |
CN107580152B (zh) | 语音增值业务系统及其通信方法 | |
WO2001060022A1 (en) | Wireless information device running multiple interactive applications | |
TWI220348B (en) | Game transmission method of symmetric wireless network |
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: 20100915 Termination date: 20130718 |