依星源码资源网,依星资源网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

【好消息,好消息,好消息】VIP会员可以发表文章赚积分啦 !
查看: 33|回复: 0

一个高性能、模块化的分布式游戏服务器框架,旨在简化游戏服务器的开发和部署

[复制链接] 主动推送

1万

主题

1万

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
16327
发表于 昨天 10:35 | 显示全部楼层 |阅读模式
一个高性能、模块化的分布式游戏服务器框架,旨在简化游戏服务器的开发和部署
它支持多种服务器类型的协同工作,提供了灵活的消息路由和高效的 RPC 调用机制。
功能特点
  • 模块化设计:支持按需加载模块,方便扩展和维护。
  • 高性能消息处理:基于 MsgHandler 的消息分发机制,支持普通消息、RPC 消息和服务器间消息。
  • 分布式架构:支持多服务器协作,提供负载均衡和服务发现功能。
  • 灵活的协议支持:基于 Protobuf 定义协议,支持客户端与服务器、服务器之间的通信。
  • 易于扩展:通过注册消息处理器和自定义逻辑,快速实现业务需求。
目录结构
  1. /
  2. ├── dbmanager/          # 数据库管理模块
  3. ├── entity/             # 实体管理模块
  4. ├── global/             # 全局配置和常量
  5. ├── logger/             # 日志模块
  6. ├── msgdef/             # 消息定义和 Protobuf 文件
  7. ├── msghandler/         # 消息处理模块
  8. ├── service/            # 服务管理模块
  9. ├── sess/               # 会话管理模块
  10. └── tools/              # 工具和辅助脚本
复制代码
快速开始1. 下载附件源码
2. 安装依赖
确保已安装 Go 环境,运行以下命令安装依赖:
  1. go mod tidy
复制代码
3. 编译和运行
使用以下命令编译并运行服务器:
  1. go build -o gobige-server main.go
  2. ./gobige-server
复制代码
4. 配置文件配置文件说明
server.json 是 Gobige 框架的核心配置文件,包含以下主要字段:
  • Config:全局配置部分。

    • Recover:是否启用 recover 机制,默认为 true。
    • Debug:是否启用调试模式,默认为 false。
    • IsCreateDB:是否创建数据库表,默认为 false。
    • EncryptEnabled:是否启用加密,默认为 false。
    • SessTicker:服务器连接心跳时间(秒)。
    • SessTimeout:服务器连接超时时间(秒)。
    • LogFile:日志配置文件路径。
    • Etcd:ETCD 配置。
      • Addrs:ETCD 集群地址列表。
      • DialTimeout:连接超时时间(秒)。
      • LeaseTTL:租约时间(秒)。

  • [ServerName]:服务器实例配置部分。

    • ServerID:服务器唯一标识符。
    • TickCount:服务器帧间隔时间(毫秒)。
    • DebugAddr:调试模式监听地址。
    • MysqlConfig:MySQL 数据库配置。
      • MySQLUser:用户名。
      • MySQLPwd:密码。
      • MySQLAddr:数据库地址。
      • MySQLDB:数据库名称。
      • MySQLMaxIdleConns:最大空闲连接数。
      • MySQLMaxOpenConns:最大打开连接数。
      • MySQLMaxLifetime:连接最大存活时间(秒)。
    • Listen:监听配置。
      • Inner:内部监听地址。
      • Outer:外部监听地址。
      • Http:HTTP 监听地址。
    • RedisList:Redis 配置列表。

Redis 配置说明
Redis 配置在 server.json 文件的 RedisList 字段中定义,每个 Redis 配置包含以下字段:
  • Name:Redis 实例的名称,用于标识。
  • Addr:Redis 服务器地址。
  • Index:Redis 数据库索引。
  • MaxIdle:最大空闲连接数。
  • IdleTimeout:空闲连接超时时间(秒)。
  • MaxActive:最大活跃连接数。
  • Password:Redis 访问密码。
Redis 使用示例
  • 定义 Redis 实例
    在 server.json 中定义 Redis 实例,例如:
    1. "RedisList": [
    2.     {
    3.         "Name": "LoginRedis",
    4.         "Addr": "127.0.0.1:6379",
    5.         "Index": 0,
    6.         "MaxIdle": 10,
    7.         "IdleTimeout": 300,
    8.         "MaxActive": 20,
    9.         "Password": ""
    10.     }
    11. ]
    复制代码

  • 初始化 Redis 实例
    在服务启动时,通过 global.SetRedisByName 注册 Redis 实例:
    1. rd := redislib.NewRedisAccess(
    2.     redislib.RedisSetAddr("127.0.0.1:6379"),
    3.     redislib.RedisSetIndexDB(0),
    4.     redislib.RedisSetMaxIdle(10),
    5.     redislib.RedisSetIdleTimeout(300*time.Second),
    6.     redislib.RedisSetMaxActive(20),
    7. )
    8. global.SetRedisByName("LoginRedis", rd)
    复制代码

  • 获取 Redis 连接
    使用 global.GetRedisAccess 获取 Redis 实例,并通过 GetConn 方法获取连接:
    1. conn := global.GetRedisAccess("LoginRedis").GetConn()
    2. defer conn.Close()

    3. // 使用 Redis 连接执行操作
    4. conn.Set(context.Background(), "key", "value", 0)
    复制代码

  • 使用 Redis 工具类
    框架提供了工具类(如 LoginPlayer 和 GateSession)封装了 Redis 操作。例如:
    1. player := redisutil.NewLoginPlayer(12345)
    2. player.SaveInfo(map[string]interface{}{
    3.     "playerid": 12345,
    4.     "name":     "test_player",
    5. })
    复制代码

附件中包含基于框架开发的游戏服务器示例项目源码

该项目适用于多种类型的游戏开发,例如:
  • MMORPG: 支持大规模玩家在线交互,提供场景管理和实时通信功能。
  • 卡牌游戏: 提供高效的数据库管理和缓存系统,支持复杂的游戏逻辑处理。
  • 休闲游戏: 提供快速开发和部署能力,适合轻量级游戏的开发需求。
项目的主要特点包括:
  • 高性能: 基于 Go 语言开发,充分利用多核 CPU 的并发能力。
  • 分布式架构: 支持多种服务类型(如网关、登录、数据库服务等),通过 etcd 实现服务发现和管理。
  • 模块化设计: 各功能模块独立开发,易于扩展和维护。
  • 工具支持: 提供多种开发工具(如协议生成工具、配置生成工具),提高开发效率。
  • 跨平台支持: 可在 Windows、Linux 和 macOS 上运行。
通过本项目,开发者可以快速上手框架,学习如何构建一个完整的游戏服务器,并根据自身需求进行定制开发。
软件架构
  • 服务端架构:

    • 基于框架开发,支持高并发和分布式架构。
    • 使用 Go 语言编写,模块化设计,易于扩展和维护。
    • 提供多种服务类型(如网关服务、登录服务、数据库服务等),通过 etcd 进行服务发现和管理。
  • 通信协议:

    • 使用 protobuf 定义客户端与服务器之间的通信协议。
    • 支持消息路由和序列化,确保高效的数据传输。
  • 数据库管理:

    • 集成 MySQL 数据库,用于存储用户数据、角色信息等。
    • 提供模块化的数据库访问层,支持延迟加载和脏数据管理。
  • 缓存系统:

    • 使用 Redis 作为缓存层,存储会话信息、玩家状态等。
    • 提供高效的缓存操作接口,支持多种缓存策略。
  • 工具支持:

    • 提供json 工具,用于生成服务器配置文件。
    • 提供协议生成工具,自动生成 protobuf 消息的注册代码。
  • 日志与监控:

    • 集成日志系统,支持多级别日志输出。
    • 提供服务器负载监控和性能分析功能.

环境要求
  • 操作系统: Windows、Linux 或 macOS。
  • 开发工具:
    • Go 编译器(建议使用最新版本)。
    • Git 版本控制工具。
  • 数据库: MySQL(建议使用 8.0 或更高版本)。
  • 缓存: Redis(建议使用 5.0 或更高版本)。

生成服务器程序
也可使用 vscode--终端--运行生成任务--"go:build all server"
生成工具
也可使用 vscode--终端--运行生成任务--"go: build server.json tool"
启动服务器
  1. ./bin/{服务器名}.exe
复制代码
提取码下载:
文件名称:提取码下载.txt 
下载次数:0  文件大小:16 Bytes  售价:39金钱 [记录]
下载权限: 不限 [购买VIP]   [充值]   [在线充值]   【VIP会员6折;永久VIP4折】
安全检测,请放心下载




相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员6折;永久VIP4折
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
售前咨询热线
312337667

微信扫一扫,私享最新原创实用干货

QQ|免责声明|小黑屋|依星资源网 ( 鲁ICP备2021043233号-3 )|网站地图

GMT+8, 2025-5-22 18:28

Powered by Net188.com X3.4

邮箱:312337667@qq.com 客服QQ:312337667(工作时间:9:00~21:00)

快速回复 返回顶部 返回列表