今天给大家介绍一个开源的游戏框架,它是基于Spring Cloud + Netty实现的一个分布式游戏服务器框架,支持负载均衡,集群部署,动态扩展和伸缩,能基本满足休闲游,卡牌游戏,SLG游戏的服务器框架快速搭建。此框架配合Unity3d,提供了一个简单的捕鱼游戏案例,方便大家学习。
源码克隆地址:https://gitee.com/wgslucky/xinyue-game-frame
游戏案例地址:https://gitee.com/wgslucky/fishing-hunter

主要使用的技术

unity3d,protobuf Spring Boot,Spring cloud,Netty,RocketMQ,Protobuf

客户端实现(game-frame-client)

  1. 客户端基本Unity3d开发,unity版本是2019.3.1f
  2. 实现了的Http Json通信,可以方便的发送和解析与服务器交互的Json数据
  3. 实现了长连接Socket通信,与网关建立Socket连接。
  4. 使用Protobuf做为协议编码。
  5. 实现了心跳管理网络连接的各个状态:正在连接,连接成功,连接失败,重新连接
  6. 与服务器一同使用,实现了用户的登陆与注册功能
  7. 与服务器一同使用,实现了角色创建的功能

服务器实现(game-frame-server)

  1. 服务器基于Spring Cloud框架实现分布式服务,可以动态扩展,
  2. 使用Nacos实现服务治理,服务启动时自动注册。
  3. 使用RocketMQ消息队列实现服务器内部服务通信。
  4. 与客户端一起使用,实现了用户的登陆与注册
  5. 与客户端一起使用,实现了角色的创建
  6. 数据库是Mongodb和redis,redis做为二级缓存,数据先从redis中获取,如果redis不存在所要的数据,再从数据库查询。
  7. 网关基于Netty实现,实现了Socket通信,断包粘包处理,心跳管理,消息分发
  8. 实现了网关的负载均衡,可以部署多个网关。
  9. 数据库连接基于spring-data-mongodb实现
  10. 服务端业务架构已实现了消息的顺序处理,引入项目之后,可以直接接收客户端请求,并处理业务内容。

通信层-Protobuf编码

使用Protobuf编码协议,实现了通信消息的对象封装,可以方便的定义网络通信协议,不需要关心底层网络的实现,数据对象可以直接在业务中使用。

项目工程介绍

  • Web服务网关(xinyue-game-web-gateway)
  1. 实现请求服务的跳转。
  2. 实现登陆用户统一权限验证
  3. 可以独立启动
  • 游戏中心服务(xinyue-game-center)
  1. 实现用户的注册与登陆,生成用户的token。
  2. 实现多游戏网关的管理,用户进入游戏时,负载网关的负载均衡。
  3. 可以独立启动
  • 游戏网关(xinyue-game-gateway)
  1. 与客户端建立长连接,并对连接进行认证。
  2. 实现通信内容加密和解密(待添加)
  3. 负责客户端请求的路由和转发
  4. 客户端请求限流(待添加)
  5. 可以独立启动
  • 系统负载均衡管理(xinyue-game-server-balance)

    主要负责用户请求的目标服务的负载均衡,支持同一个服务的多实例服务。

  • 协议对象封装(xinyue-game-network-message)

    实现网络通信协议消息的封装,包括网关与客户端的交互协议和网关与内部服务交互的协议。

  • 消息和分布式事件系统(xinyue-game-mq-system)

    基于RocketMQ消息队列组件,实现服务端内部系统之间的网络通信。

  • 数据存储封装(xinyue-game-dao)

  1. 实现Redis做为二级缓存的封装,数据访问的时候先访问redis,如果redis中没有,再访问数据库。
  2. 实现数据库配置的封装。并实现数据库异步访问的封装。方便项目中的使用。
  • 游戏服务框架(xinyue-game-logic-frame)
  1. 实现与网关的相互通信。
  2. 实现用户请求的线程封装,让同一个用户的请求都在同一个线程中处理。
  3. 实现客户端消息处理的分发,将协议消息和处理方法映射起来,让开发者直接处理业务内容而不用关心底层通信的实现。
  • 公共项目(xinyue-game-common)

实现基本的公共工具类集合,方便多个项目依赖和使用,减少重复代码。

服务整体架构

项目部署方式

安装基础服务

  1. 安装Nacos-服务发现与注册服务
  2. 安装RocketMQ-消息服务
  3. 安装MongoDB
  4. 安装Redis

单服务方式

终极部署方式

更多信息,可以关注公众号获取

QQ群交流:66728073,197321069

基于此框架实现的一款小游戏源码:https://gitee.com/wgslucky/fishing-hunter

游戏案例下载体验:http://www.xinyues.com

游戏服务器开源框架(xinyue-game-frame)相关推荐

  1. 游戏服务器Mina框架开发

    游戏服务器Mina框架开发 作者:老九-技术大黍 社交:知乎 公众号:老九学堂(新人有惊喜) 特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系笔者授权 前言 如果要使用Java语言来开发游戏 ...

  2. 基于Socket的游戏服务器通信框架的设计与实现

    博客地址:blog.liujunliang.com.cn 开发工具:VS2017.Unity2017 本文介绍使用Socket/TCP来开发客户端与服务器端通信框架 博主使用过PhotonServer ...

  3. python游戏服务器框架_有那些比较成熟的开源游戏服务器引擎/框架(编程语言不限)?...

    更新,没有看到服务器(逃. 下面仅为游戏引擎和框架推荐,需要的小伙伴简单看一下,正确的答案努力撰写中. 从角色扮演游戏到即时策略游戏,从冒险解谜游戏到动作射击游戏,甚至是只有一兆大小的迷你游戏,都有起 ...

  4. Unity3damp;amp;C#分布式游戏服务器ET框架介绍-组件式设计

    前几天写了<开源分享 Unity3d客户端与C#分布式服务端游戏框架>,受到很多人关注,QQ群几天就加了80多个人.开源这个框架的主要目的也是分享自己设计ET的一些想法,所以我准备写一系列 ...

  5. java 分布式游戏服务器框架,集群游戏服务器框架,游戏服务器网关框架 ioGame 网络游戏服务器框架

    网络游戏框架简介 ioGame 是一个由 java 语言编写的网络游戏服务器框架.支持 websocket.tcp ,适用于全球同服.回合制游戏.策略游戏.即时战斗等游戏服务器的开发.具有高性能.稳定 ...

  6. 游戏服务器引擎的设计(一)介绍游戏服务器部署框架

    服务器的架构,根据游戏类型不同大多有:账号服务器.全局服务器.网关服务器.场景服务器.中心服务器.存储服务器,配合其他的服务器(比如日志服,监控服等).传统的游戏是单服模式,现在也有很多的是分布式模式 ...

  7. 开源游戏服务器框架NoahGameFrame(NF)简介(一)

    本文介绍的知识点很多都是来自于官方:NoahGameFrame(NF)官网.点击链接如果没用的话,可以在GitHub上搜索NoahGameFrame. 一.NoahGameFrame是什么? Noah ...

  8. 值得推荐的C/C++开源框架和库

    原文链接:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm 留档备查,非常强大的C/C++开源项目总结文档- 值得学习的C语言开源项目 ...

  9. 值得学习的C/C++开源框架(转)

    值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...

最新文章

  1. 1一10到时的英文单词_10张“牛皮癣”可换1个鸡蛋!徐州一街道全民总动员
  2. 读《编程之道》-对于程序员的抽象描述
  3. (五)python3 只需3小时带你轻松入门—— 逻辑运算符
  4. tcp通讯一次最多能发送多少数据?_关于TCP/IP,必须知道的十个知识点
  5. android 跨应用,Android跨应用获取资源
  6. 不要62(HDU-2089)
  7. 前端 鼠标一次移动半个像素_Web前端(二):CSS3
  8. JAVA大数据-Week4-DAY3
  9. 获取批量导入数据后,所产生所有自增ID的值
  10. 盛大如何再次“盛大”
  11. 【drawio笔记】在drawio中添加数学公式
  12. 南信院计算机应用专转本,2019年南京信息工程大学专转本招生计划
  13. 云服务器Docker安装ElasticSearch却启动不了怎么办?
  14. 国际商务谈判 简答题
  15. Jetpack Compose 无限加载列表(滚到底部自动加载更多)
  16. 盲打打字php,盲打26键打字口诀是什么
  17. c语言写拼图游戏算法,[原创]拼图游戏移动算法,简单易懂
  18. 品达物流TMS项目_第6章 数据聚合服务开发(pd-aggregation)
  19. 低频能不能采到高频?采样定理指导硬件设计
  20. 10大最具影响力人物

热门文章

  1. 洛谷 P2728 纺车的轮子 Spinning Wheels
  2. 20.编写函数int fun(int lim,int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。
  3. $axios.post 表单序列化 URLSearchParams
  4. matlab对外部导入的数据进行三维曲面绘制
  5. windows安装redash
  6. 设置input隐藏并用js控制显示和隐藏
  7. 上海迪士尼推出冬季节庆新体验;丹纳赫宣布IDT中国正式成立 | 美通企业日报...
  8. 20220111时间-入职新公司的感觉
  9. TC的完整形式是什么?
  10. python3异步task_Python异步编程4:task对象