转自:http://www.80edu.com/html/bbs/thread-381808-1-1.html
游戏开发者们对于游戏服务端框架设计一定不会陌生,这时一个必须要我们掌握的知识。在游戏开发中,游戏服务端框架设计绝对是最为重要的。因此,今天我们就要来学习一下游戏服务端框架设计中的要点内容。
1 系统体系结构
手机网络游戏框架体系示意图:
手机网络游戏服务端建立在Java的开发平台上,游戏框架作为一个平台独立于游戏逻辑层,各游戏可单独接入平台框架实现游戏具体逻辑。本文主要描述服务端平台框架层的逻辑结构设计。
网络游戏框架平台层可分为三个主要部分:系统管理层;控制处理层;应用接口层。
系统管理层:
主要负责平台框架的系统管理,包括数据库管理,日志管理,配置管理等,这些管理器通过底层管理器和控制器协调工作。
控制处理层:
服务器处理业务逻辑需要多线程进行协同工作,对游戏的业务处理分别对数据读入,任务处理和数据写出建立线程池。并且统一使用线程池的线程控制接口进行管理。
应用接口层:
游戏接入平台框架需要统一接口方式,平台建立游戏逻辑的接口。并且建立网络传输数据的基础协议,具体游戏可以在基础协议上加内容,平台框架向下兼容。游戏中使用的公共对象进行独立封装,提供复用性。
2 标准化设计
2.1 系统管理层模块
系统平台管理层是对整个服务端框架进行操作管理的部分,包括数据库管理器,日志管理器,配置管理器。所有管理器统一由中央管理器和控制器协调工作。
系统管理层类关系图:
数据库管理器(DatabaseDriver)
提供数据库连接的创建,数据库查询,更新,删除操作的管理。同时它也是一个数据库连接池,对连接的创建,删除,等使用状态进行监控,随时为游戏逻辑操作数据库提供连接对象。
数据库模块图:
数据库操作:查询;更新;插入;删除的流程全部封装到相应的类中,Executer作为数据库操作的抽象类实现Executable接口。
日志管理器(Console)
提供系统日志记录的管理模块,日志管理器记录标准格式的信息输出,可进行后台打印输出也可以进行文件打印输出。日志记录的关键在于信息的准确性和完整性,通过查看日志可以了解系统运行状况,如果发现问题能够准确定位。
配置管理器(Propertor)
提供配置信息的读取管理的模块,配置管理器在系统启动的时候建立一个属性表,读取配置信息到属性表中,在系统运行时需要某个值的时候直接从内存的属性表中取。可将系统中常常需要更新调试的值或者于逻辑无关的信息配置到文件中通过配置管理器进行操作。
中央管理器和控制器(Manager;Control)
各管理器都是单实例形式存在,中央管理器实现了游戏控制接口,初始化系统和游戏逻辑平台,它保存了控制处理层中的核心数据结构,并且起到了对游戏逻辑进行流程分发的作用。控制器协助中央管理器对平台的启动,运行,关闭等操作进行控制。
2.2 控制处理层模块
控制处理层是建立在系统管理层上的应用模块,同时也是平台系统进行流程处理的核心模块,该模块由三个线程池构成:数据读入线程池;任务处理线程池;数据输出线程池;每个线程池中包含多个线程负责相关的流程处理。
各线程池功能图:
客户端连接上服务器后,连接对象被保存到SocketLinkQueue队列中,数据读入线程从连接队列中循环取连接对象进行读数据操作,读取的数据以封装到LinkData对象中,然后放入ReadDataQueue队列中,任务处理线程从读数据队列中取LinkData对象进行业务逻辑流程处理,然后将此对象放入WriteDataQueue队列中,数据输出线程从写数据队列中取LinkData对象,将数据输出给客户端。ReadDataQueue和WriteDataQueue队列中都是存放的同一个LinkData对象,并且该对象包含连接对象信息,读入的数据协议和输出的数据协议。
线程池类图:
管理器中包含数据读入线程池对象,任务线程池对象,数据输出线程池对象;连接信息对象,读入数据队列,输出数据队列。各线程池通过实现ThreadPool接口进行管理。
2.3 应用接口层模块
应用接口层是平台框架与业务逻辑进行连接的唯一通道,该层将框架结构和业务逻辑进行分离,同时又无耦合的连接二者的流程处理,所以该层必须具有通用性和复用性。
应用接口层分三个模块:
游戏公用对象
框架应该提供通用的游戏基础对象,比如每个游戏都具有的大厅对象,房间对象,座位对象,连接对象等。将这些对象建立在框架的应用层上,在实现游戏逻辑的时候直接复用这些公共对象对理解游戏流程和建立游戏业务逻辑都非常方便。
公用对象类结构图:
大厅和房间对象都实现了线程管理接口,因为大厅和房间在游戏中可能会随时更新信息,但是对于处理流程则由接口放到了具体游戏类中实现。每个公用对象包含了自己应该具有的属性和层次关系。
基础协议包
服务端和客户端的通讯通过协议进行描述,在框架层建立基础协议包,将协议的规范和结构定义到类描述中,每个游戏在基础协议包上添加内容即可构建完整的协议数据,在实现游戏协议的时候避免了大量的工作去定义协议。
基础协议描述图:
基础协议类图:
基础协议类提供了快速创建协议数据的方法:factory(…),对协议数据中各部分的获取,如内容数据,协议长度,游戏标志,任务标志等都提供方法调用,在游戏逻辑中只需要调用append()方法即可添加协议内容,而对内容在协议中怎么存放,协议长度变化和结构调整都不需要关心。
游戏管理接口
游戏平台框架必须要提供一个给游戏逻辑接入的方式,此方式就是游戏管理接口。该接口将游戏逻辑和平台结构逻辑分离,在接入新游戏的时候实现管理接口,可以避免在开发游戏业务逻辑的时候分心去关注底层实现,同时也清晰了游戏框架的结构,提高了复用性。
游戏管理接口图:
游戏管理平台初始化的时候从server.properties配置文件中读取每个游戏管理器的类路径,此类必须实现管理接口Controlable。在平台框架管理器中创建各游戏的管理对象,游戏流程中通过接口方法对各游戏逻辑进行控制。赛马游戏RaceHorse和俄罗斯方块游戏Tetris的协议类在基础协议类Protocol上建立。
3 开发和运行环境
操作系统:Windows2000/2003/Unix/Linux
运行环境:JDK 1.5
数据库:Oracle DataBase 9i
版本变更记录
文件编号版本号拟制人/修改人拟制/修改日期更改理由主要更改内容
注1:每次更改归档文件(指归档发布数据库)时,需填写此表。
注2:文件第一次归档时,“更改理由”、“主要更改内容”栏写“无”。
以上就是游戏服务端框架设计中的要点知识介绍,掌握这部分内容,对我们学习游戏开发来说是很有意义的。因此,希望大家能够认真了解游戏服务端框架设计。掌握游戏服务端框架设计中的要点内容才是最为关键的。