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