java游戏服务器搭建

一、前言

  此游戏服务器架构是一个单服的形式,也就是说所有游戏逻辑在一个工程里,没有区分登陆服务器、战斗服务器、世界服务器等。此架构已成功应用在了多款页游服务器 。在此框架中没有实现相关业务逻辑,只有简单的测试用的注册登陆功能。

  服务器工程---GameServer

  测试客户端---TestClient,模拟客户端与服务器通信,用于测试服务器功能

  项目工具 ---Tools,服务器搭建用到的jar包以及相关eclipse插件

二、服务器运行环境

  此服务器是基于tomcat启动,所以GameServer是一个web工程,但此游戏服务器还是基于socket通信的,没有使用tomcat的http通信。游戏服务器的启动是通过在WEB-INF目录下的web.xml中添加一个监听器。这个监听器用来监听tomcat的启动和停止,当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(1 byte)+length(4 byte,消息号加消息内容的长度)+protocol code(4 byte)+content

       flag:是一个预留标识

       length:表示消息号和消息内容的长度

       protocol code:自定义消息号,通过次消息号选择相应的消息处理器,自然消息号是不能重复的,一个int表示范围足够使用

       content: 消息内容,一个有序的数据的数组。protocol code和content都要在开发功能时定义在‘消息协议’文档中的,例如GameServer项目中的“消息协议.xls”

    此项目中没有对消息内容进行加密,若要加密也是很容易添加上。

  消息处理:

    服务器收到客户端发来的消息,MsgDispatcher会根据其消息号选择对应的MsgProcessor进行处理。MsgProcessor会读取content做相应的处理。

三、持久层

  此架构的持久层使用了ibatis,可能大家觉着ibatis已经过时,现在最多时用的是mybatis。但在生产环境中ibatis一直未出现什么问题,还是可以再用的。还有mybatis的使用必须每次open一个connection使用完必须close掉,多少感觉有点麻烦(如果使用spring aop到可以避免这种问题)。而在ibatis中,它提供了一个SqlMapClient类,这个类是线程安全的,我们只需要把数据库操作交到SqlMapClient,它内部会帮我们open、close数据库连接。

  做游戏开发都知道,游戏对数据库的要求比较低,我们不需要什么复杂的数据库操作,所以在持久层我们使用ibator做代码生成工具(相应的插件在Tools项目中有),可以节省大量的开发工作。

  先写到这吧,有什么拉漏以后再做补充。具体实现还是看代码比较直观

时间: 2024-10-12 20:48:20

java游戏服务器搭建的相关文章

Java游戏服务器微信房卡炸金花平台出租成长之路

Java游戏服务器成长的微信房卡炸金花平台出租QQ1279829431(h5.mostsheng.com)17061863554源码出售平台出租系列,已经很长时间没写了,不是不想写,而是这一年,基本都是在忙别的了,今天特地挤出时间,对我的2016年,做一个不留遗憾的总结. 2016的事件 不知不觉,又到了春节抢票的时候了,这两天除了盼着年终能发点奖金以外,就是盼着能买一张合适的火车票,今年是离家最久的一年,幸运的是,我成都的小房子要结房了,必须要我本人到场,这就能给我一个理由多请一周的假提前回去

2016年netty/mina/java nio视频教程java游戏服务器设计教程

2016年netty/mina/Javanio视频教程Java游戏服务器设计教程 需要的加qq:1225462853,备注:程序员学习视频 其他视频都可以索要(Netty   NET    C++ 等等) 互联网架构师教程:http://blog.csdn.net/pplcheer/article/details/71887910 netty录制时间为2015.11-2016.2月份  netty教程为加密视频!      netty12个课程已全部录制完成,相信通过这12节课的分析能让大家对n

Java游戏服务器成长之路——弱联网游戏篇(源码分析)

http://blog.csdn.net/hjcenry/article/details/50530472 前段时间由于公司的一款弱联网游戏急着上线,没能及时分享,现在基本做的差不多,剩下的就是测试阶段了(本来说元旦来分享一下服务器技术的).公司的这款游戏已经上线一年多了,在我来之前一直都是单机版本,由于人民群众的力量太强大,各种内购破解,刷体力,刷金币,刷钻石版本的出现,公司才决定将这款游戏转型为弱联网游戏,压制百分之八十的破解用户(毕竟原则上还是属于单机游戏,不可能做到百分之百的防破解),招

我的游戏服务器类库 -- 加载配置表

GAMMA类库 我在GitHub上面创建了gamma项目,把自己工作(Java游戏服务器编程)中经常用到的代码整理后放了进去. 配置表加载 前一篇文章介绍了如何查找配置表,本篇文章来介绍一下如何把配置表加载到内存. ConfigLoader 由于配置表可能在文件里,也可能在数据库里,或者其他地方,所以一个合理的设计可能会是这样: 不过我目前的项目是用JSON文件存放配置表的,所以我只设计了FileConfigLoader和JsonConfigLoader两个类. FileConfigLoader

在腾讯云主机上搭建求生之路2游戏服务器

 提示:阅读本文可能需要命令行操作基础. 主机配置 操作系统 CentOS 6.5 64位 CPU 1核 内存 1GB 系统盘 20GB(本地磁盘) 数据盘 30GB(本地磁盘) 公网带宽 1Mbps 通过SSH登录服务器 1.在主机控制台中将root用户的密码重置为常用密码 2.在本地使用PuTTY客户端连接服务器 设置如下: 涂蓝色处填写主机公网IP.默认窗口配色过于伤眼请自行修改. 3.登录 login as: root [email protected]'s password: Last

我是如何设计游戏服务器架构的

前言 现在游戏市场分为,pc端,移动端,浏览器端,而已移动端和浏览器端最为接近.都是短平快的特殊模式,不断的开服,合服,换皮.如此滚雪球! 那么在游戏服务器架构的设计方面肯定是以简单,快捷,节约成本来设计的. 来我们看一张图: 这个呢是我了解到,并且在使用的方式,而PC端的游戏服务器而言,往往是大量的数据处理和大量的人在线,一般地图也是无缝地图的完整世界观,所以不同的程序都是独立的进程并且在不同的server中运行! 而浏览器端和移动终端,在上面就说过了,它主要是不断的开服,合服,开服,合服,那

游戏服务器开发需要学习的技术

一,游戏服务器编程语言的选择 所谓的游戏服务器编程语言其实有很多,基本上任何一种语言都可以作为游戏服务器的编程语言.这需要根据自己游戏的类型和要求加以选择.比如C++,Java ,Erlang,go等等.目前我用过的只有C++和Java.但是以Java为主.所以接下来就以自己的经验,谈谈以Java为核心的游戏服务器开发技术体系. Java目前作为游戏服务器开发语言已经很是普遍.但是大多数是作为页游或手游的服务器,而端游戏一般选择C++,因为端游对服务器的性能要求相对比较高一些.两种语言各有利弊.

Netty游戏服务器之一

所谓磨刀不误砍柴工,所以在搭建netty游戏服务器之前,我们先要把要准备的东西做好. 首先进入netty的官网下载最新版本的netty的jar包,http://netty.io/downloads.html,这里我下载的是netty-5.0.0.Alpha2.tar.bz2 版本的. 打开压缩包,找到all-in-one下面的netty-5.0.0.Alpha2.jar包. 打开我们的eclipse我们神圣的编辑器,然后新建一个File,取名叫lib,专门存放第三方的jar. 然后把之前的net

基于Linux环境Tomcat-MySQL的服务器搭建

在开发日趋激烈的今天,我们可不能再只会编码了,这样搞不好,就成了一辈子的码奴!所以这里简单的分享一下服务器的搭建,由于Linux的安全性等一切因素让它成为了服务器平台的首选环境!今天跟大家分享的是Java项目的服务器搭建,好啦,步骤来了: 1.下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 2.下载tomcat wget http://apache.etoak.co