消息体包含usem锄e和p鹊sword两个属性, 不同消息的消息头中包含的属性是一样的,而消息体中包含的 属性有所不同。 , 实现时,利用面向对象的设计思想,将消息设计为类,用 Message类表示消息,它包含MessgeHead(消息头)和Message- Body(消息体)两个部分。MessageBody提取了各个不同消息体 的共性设计成一个接口,不同消息的消息体比如L0画n、Regis- ter、Chat等类都需要实现这个接口。最后将所有的消息类封装 为一个消息包,隐藏了实现细节也方便使用。 消息包中各个类的关系如图3所示。 GameD越acd呻帅e【lt 图2手机联网游戏服务器通用架构图 在图2中,Govemor(中央控制模块)负责处理服务端的游 戏逻辑,连接、控制各子模块,传递、处理、转发消息。Netw0叔 component(网络部件)负责游戏网络消息的接收和发送以及底 层的网络通信。GameData component(游戏数据模块)保存游戏 状态数据。AI component(人工智能部件)在服务端模拟非玩家 角色NPC的动作。G”oups Componem(用户组管理模块)存放各 个用户组的信息,将用户分到不同的组进行管理,也方便了 G0vemor同时向同一组内的用户发送信息。 根据可伸缩服务器的思想,图2中没有出现User comp0- [宙[困{妄耗岛籀童妥) 图3通讯消息协议类间的关系 :…。’。… 这个消息协议具有以下特点: (1)可重用性强 此通信消息协议用于不同的游戏时消息协议的框架,比如 Message、MessageHead、MessgeBody这些类(接口)不需要修改可 以直接重用;而有一部分的消息体比如登录消息、注册消息、聊 天消息等也可以直接重用。 (2)独立性高 消息的发送和接收的具体实现都封装在具体的类中,隐藏 了实现的细节,提高了灵活性。如果需要对发送、接收的具体实 现进行改变只需要修改类中相应的函数,这种修改对消息包外 的程序是没有影响的。这种方法使得消息包具有较好的独 立性。 (3)跨平台性 JAVA语言具有良好的跨平台性,通信消息协议采用servlet 编程技术进行实现,使得它具有跨平台的特性。 2.3 nent(用户管理模块),因为它被分离出来并且实现成一个单独 的Servlet应用程序HJ,运行于kbby服务器上面。它主要是负 责维护用户的基本资料信息,进行用户身份验证。同时负责服务 器的负载平衡。 下面针对各个模块的一些实现细节及关键技术点进行详细 的讨论。 2.2 Mes鼢ge模块的设计与实现 手机端客户端和服务器端之间在进行数据交互时,所传输 Component 的数据需要按照一定的消息协议格式。而Network 中的Message模块就是负责定义一个客户端和服务器端共同遵 守的消息协议。