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
    游戏通信消息包,对于开发者而言,网络层的消息都会在项目底层被转化对象使用,这些对象被称为客户端与服务器的通信消息。把它们放在一个项目中实现,方便客户端与服务器依赖使用

项目启动

  1. 将项目导入到IDEA之中,在IDEA中直接启动即可
  2. 将项目打包成单独的Jar包,在命令窗口中启动
    进入项目的game-frame目录,在此目录打开命令窗口,执行命令:
    1. mvn clean pacakge
  • 启动服务器
    执行打包命令成功之后,在命令窗口中进入game-server/target目录下面,执行命令:

    1. java -jar game-server-1.0-SNAPSHOT.jar
  • 单服游戏服务器框架源码介绍 - 图1

  • 启动客户端
    执行拍板包命令成功之后,在命令窗口中进入game-client-shell/target目录下面,执行命令:

    1. java -jar game-client-shell-1.0-SNAPSHOT.jar
  • 单服游戏服务器框架源码介绍 - 图2

  • 连接服务器
    输入命令:connect-server localhost 8089
    发送登陆消息: login wwww 3333

单服游戏服务器框架源码介绍 - 图3

  • 查看客户端支持的命令

使用help命令,可以查看客户端支持的命令:
单服游戏服务器框架源码介绍 - 图4

  1. 注意事项
    在mac或linux上执行上面的命令基本没有问题,但是在windows dos窗口中执行,有可能出现乱码,因为windows dos默认的编辑是GBK,解决方法请点击这里:去解决乱码问题

配置管理

  1. 本项目使用的spring boot框架开发,所以项目的配置遵循spring boot的约定。

交流方式

可以加入QQ群: 66728073 欢迎关注下面的公众号,会定期推送游戏开发相关文章

单服游戏服务器框架源码介绍 - 图5