# xinyue-game-frame **Repository Path**: leelinqi/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**: 0 - **Forks**: 118 - **Created**: 2024-07-29 - **Last Updated**: 2024-09-06 ## Categories & Tags **Categories**: Uncategorized **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 * 异步socket通信 * 异常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 ### 修改项目配置 1. xinyue-game-server 修改resource中的bootstrap.yml,当前项目默认是从naocos读取的数据库及redis配置,需要把配置添加到nacos中,且要配置好nacos的命名空间namespace,需要使用者对nacos的使用有些了解。如果不想使用nacos中的配置,可以注释掉nacos获取配置的配置,修改并激活application-dev002配置即可。 2. xinyue-game-gateway 修改resource中的bootstrap.yml,application-dev.yml, application.yml相关配置,把nacos相关配置配置成自己环境的nacos配置。  更多信息,可以关注公众号获取 