xinyue-alone-game-server
源码地址:https://gitee.com/wgslucky/xinyue-alone-game-server
摘要
这是一款单服框架的游戏服务器架构。俗话说,麻雀虽小,五脏俱全,虽然是单服框架,但是也是包罗了很多游戏服务器开发必用的技术要点,方便部署和使用,可以说是从入门到高级的一个学习过程,也是通往分布式服务器开发的阶梯。本项目简单易用,稍加修改就可以用于一般的单服游戏开发。
使用的技术栈
- Spring Boot
- Netty Client/Server 实现网络层的客户端与服务器通信
- Spring Shell 用于开发命令窗口,模拟客户端操作
- Arthas 实现不重启服务器热更新代码
- Logback 日志框架
主要实现的功能
- 使用Netty实现游戏服务器的启动与端口监听
- 使用Spring shell与Netty实现一个模拟的客户端,可以与服务器建立连接并正常通信。
- 解决了网络通信的断包粘包问题
- 实现了消息的序列化与反序列化
- 实现了业务逻辑与底层消息的分离,开发者可以直接上手写游戏业务逻辑,而不用过多的了解底层的实现,提高开发效率
- 保存每个用户的基本业务操作都是顺序性的,不需要加锁。
- 客户端连接认证
- 集成了阿里的Arthas,实现代码热更新。
使用说明
项目简介
- game-client-shell
客户端模拟项目,使用spring shell框架实现,主要用于模拟客户端连接服务器,并向服务器发送消息 - game-server
服务器项目,使用spring boot + netty实现,接收客户端的请求并处理请求和返回数据 - game-network
网络层封装,单独把它做为一个项目实现,可以方便game-client-shell和game-server项目的依赖。让它们共用一套网络层实现。 - game-network-messages
游戏通信消息包,对于开发者而言,网络层的消息都会在项目底层被转化对象使用,这些对象被称为客户端与服务器的通信消息。把它们放在一个项目中实现,方便客户端与服务器依赖使用
项目启动
- 将项目导入到IDEA之中,在IDEA中直接启动即可
- 将项目打包成单独的Jar包,在命令窗口中启动
进入项目的game-frame目录,在此目录打开命令窗口,执行命令:mvn clean pacakge
启动服务器
执行打包命令成功之后,在命令窗口中进入game-server/target目录下面,执行命令:java -jar game-server-1.0-SNAPSHOT.jar
启动客户端
执行拍板包命令成功之后,在命令窗口中进入game-client-shell/target目录下面,执行命令:java -jar game-client-shell-1.0-SNAPSHOT.jar
- 连接服务器
输入命令:connect-server localhost 8089
发送登陆消息: login wwww 3333
- 查看客户端支持的命令
使用help命令,可以查看客户端支持的命令:
- 注意事项
在mac或linux上执行上面的命令基本没有问题,但是在windows dos窗口中执行,有可能出现乱码,因为windows dos默认的编辑是GBK,解决方法请点击这里:去解决乱码问题
配置管理
本项目使用的spring boot框架开发,所以项目的配置遵循spring boot的约定。
交流方式
可以加入QQ群: 66728073 欢迎关注下面的公众号,会定期推送游戏开发相关文章