# xinyue-game-frame
**Repository Path**: wgslucky/xinyue-game-frame
## Basic Information
- **Project Name**: xinyue-game-frame
- **Description**: 心悦游戏开发框架包括Unity3d客户端通信,服务器架构,可以直接用于卡牌游戏,休闲类游戏的开发。本框架实现了客户端与服务端的一些基本功能,让游戏开发者可以尽快的进行业务开发,减少项目的开发周期。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 258
- **Forks**: 118
- **Created**: 2018-10-13
- **Last Updated**: 2025-09-07
## Categories & Tags
**Categories**: game-dev
**Tags**: None
## README
# xinyue-game-frame
## 心悦集群模式游戏框架
------------------------------------------------------------------------------------------------------------------------
## 版本说明
版本由三部分组成,格式为a.b.c,a是主版本,b是小版本,c 代表bug修复
1. 如果新的修改不兼容旧的版本,a会发生变化
2. 如果新的修改只是增加了部分功能,但是兼容旧版本,b会发生变化
3. 如果新的修改只是修复旧有的bug,c会发生变化
## 主要使用的技术框架
### 前端
* 提供客户端client-demo
* unity3d
* Newtonsoft.Json
* 协议-http post
* 支持PC及移动端异步socket通信
* 支持PC及移到端异步websocket通信
* 支持webGL下websocket通信
----------------------------------------------------
## 项目PC客户端
本项目提供了一个PC端的可运行的示例,在client-demo中,运行起来服务器之后,可以下载到本地与服务器联调(如需要客户端源码,可以加微信号:291123097支付获取,并提供全部的技术支持)。

1. 设置服务器地址及长连接方式


2. 登陆界面

3. 选服界面

4. 登陆成功界面

### 服务器端
* JDK 17
* Spring Boot3.2.4 Spring Cloud(2023.0.2)
* Spring Cloud Alibaba (2022.0.0.0)
* Nacos 服务注册与发现 版本:2.2.1
* game-gateway 使用netty实现游戏网关,兼容socket及websocket协议
* Netty Client/Server 实现网络层的客户端与服务器通信,实现网关与业务服务之间的通信
* Logback 日志框架
* MongoDB 数据库
* Redis 缓存
* lombok 用于自动生成类的Getter和Setter方法,在IDEA中需要安装Lombok插件
## 框架层项目
* xinyue-game-gateway-framwork
网关框架,主要实现的功能有:
1. 使用Netty网络通信框架为客户端提供socket或websocket的长连接服务
2. 使用Netty网络通信框架与网关后面的业务服务建立连接,负责转发与响应客户端的请求消息
* xinyue-game-gateway
使用网关框架的demo项目,它依赖了xinyue-game-gateway-framwork项目,自动提供与客户端相互的功能服务,配置好nacos之后,可以直接在idea中启动
* xinyue-game-service-framework
游戏业务服务框架,它提供了网关可以连接的服务接口,与维护与网关的长连接。封装了处理客户端的业务请求接口,开发人员只关注于业务的开发即可。
* xinyue-game-server
这是一个游戏业务服务的示例服务,它依赖了xinyue-game-service-framework,并实现了几个简单的示例接口处理。
* xinyue-game-common
公共代码及工具代码都放在这里,方便不同项目的依赖
* xinyue-game-dependencies
整个项目的版本依赖管理项目,方便在开发项目时,依赖对应的maven坐标
* xinyue-center-server
这是一个web项目,负责用户注册,角色创建,及相关的公共接口管理,可以理解为一个综合功能的项目。
## 实现的主要功能
1. 实现unity C#客户端与服务器的TCP SOCKET网络连接(比较大型的游戏会使用这种,比较端游,APP游戏)
2. 实现unity C#Ptyn端与服务器的WEB SOCKET网络连接(小程序游戏会使用这种,比如微信小程序,抖音小程序,或h5小游戏)
3. 实现网络连接的断开重连功能,解决在弱网环境下网络不稳定的问题
4. 实现网络层的心跳机制
5. 实现网络消息的序列化与反序列化
6. 实现网络消息包的粘包与断包处理
7. 实现账号注册与登陆功能
### 服务整体架构

## 项目部署方式
### 安装基础服务
1. 安装Nacos-服务发现与注册服务
2. 安装MongoDB
3. 安装Redis
### 添加maven mirror
在maven的settings.xml中,添加mirror配置仓库地址:
```