此游戏服务器架构是一个单垺的形式也就是说所有游戏逻辑在一个工程里,没有区分登陆服务器、战斗服务器、世界服务器等此架构已成功应用在了多款页游服務器 。在此框架中没有实现相关业务逻辑只有简单的测试用的注册登陆功能。
二、服务器运行环境
此服务器是基于tomcat启动所以GameServer是一個web工程,但此游戏服务器还是基于socket通信的没有使用tomcat的http通信。游戏服务器的启动是通过在WEB-INF目录下的web.xml中添加一个***器这个***器用来监聽tomcat的启动和停止,当tomcat启动时则启动游戏服务器开始***端口当tomcat停止时则做相应的销毁操作。
可能很多人会疑惑为什么要基于tomcat呢
1、方便调试。在我们调试服务器程序时可是利用tomcat的热加载功能,使修改的代码不用重启就可以生效
2、方便打包部署部署一个web程序到tomcat是一个比较容易的事,对第三方jar包的依赖tomcat也会帮忙处理好
3、利用tomcat提供的数据源这可能不算是优势,但起码还算便捷
4、方便開发GM我们可以很容易的在次架构中加入一个机遇web的管理系统,直接管理当前游戏服务器的在线玩家
java开发socket服务器最常用的就是mina和netty这两個nio框架网上有测试说netty性能稍好一些。但是由于mina在生产环境中没遇到什么问题而且本人对mina源码比较熟悉,还是采用了mina作为通信层框架(netty3跟mina代码结构差不多,但是netty4变化比较大本人稍微未对源码理解透)
flag:是一个预留标识
length:表示消息号和消息内容的长度
protocol code:自定义消息号,通过次消息号选择相应的消息处理器自然消息号是不能重复的,一个int表示范围足够使用
content: 消息内容一个有序的数据的数组。protocol code和content都要在开发功能时定义在‘消息协议’文档中的例如GameServer项目中的“消息协议.xls”
此项目中没有对消息内容进行加密,若要加密也是很容易添加上
消息处理:
做游戏开发都知道,遊戏对数据库的要求比较低我们不需要什么复杂的数据库操作,所以在持久层我们使用ibator做代码生成工具(相应的插件在Tools项目中有)可鉯节省大量的开发工作。
Jetty是一个开源的servlet容器它为基于Java的web內容,例如JSP和servlet提供运行环境Jetty是使用编写的,它的API以一组JAR包的形式发布开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运荇(stand-alone)的Java应用提供网络和web连接
BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中
虽然现在都可以使用代码启动 tcp 服務***端口来实现一个 web 服务器但是其稳定性、处理能力、适应能力都不及上面的专用web服务器。