{"repo":"cherry-game/cherry","free":true,"listed":false,"github":"https://github.com/cherry-game/cherry","clone":"git clone https://github.com/cherry-game/cherry.git","description":"🍒 Cherry — Go game server framework powered by Actor Model. Serial goroutine per actor, NATS/etcd discovery, pluggable connectors (TCP/WS/HTTP), protobuf & object-pooled messaging, time wheel, snowflake. Born for MMO/SLG/RPG, scales to millions.","language":"Go","stars":802,"topics":["golang","game","gameserver","game-engine","pitaya","gamedev","http","websocket","nats-server","natsio"],"license":"MIT","category":"game-templates","readme_excerpt":"🍒 欢迎使用 cherry！ 🌐 English Documentation - 高性能分布式的 Golang 游戏服务器框架 - 采用 Golang + Actor Model 构建，具备高性能、可伸缩等特性 - 简单易学，让开发者更专注于游戏业务开发 📦 安装 需要 Go 1.24+。 🚀 快速开始 🗺️ 架构 模块 路径 职责 ------ ------ ------ 应用装配 cherry.go → application.go 组件注册、生命周期、启动 Actor 执行 net/actor/ 每 Actor 独立 goroutine，串行 mailbox，本地/远程/事件分发 集群通信 net/cluster/ + net/nats/ + net/discovery/ 跨节点 RPC，NATS 传输，成员发现 前端接入 net/parser/ + net/connector/ 协议解码，会话管理，agent Actor，WebSocket/TCP 🌟 核心功能 AppBuilder 与生命周期 通过 Builder API 将组件链式装配为运行中的服务： 生命周期保证： 组件按注册的逆序停止。通过 SIGINT / SIGQUIT / SIGTERM 信号触发优雅关闭。 Actor 模型 每个 Actor 运行于独立 goroutine，逻辑串行处理。三种独立队列按 FIFO 原则消费： 队列 来源 用途 ------ ------ ------ Local 客户端 → Actor 处理玩家请求 Remote Actor → Actor（跨节点） 服务间 RPC Event 系统事件 解耦通知 子 Actor — Actor 可创建子 Actor，消息由父 Actor 路由转发，子 Actor 与父 Actor 共享生命周期。 Actor Timer — 直接在 Actor 上注册定时器和定时任务，保证在 Actor 的 goroutine 上执行。 集群 & 注册发现 三种发现后端，通过 profile 配置切换： 模式 配置值 适用场景 ------ -------- ---------- default 从 profile 配置读取 单进程开发/测试 nats NATS 主从心跳发现 多节点生产环境 etcd etcd lease + watch 多节点生产环境（独立仓库） 基于 NATS 实现跨节点 RPC 调用，支持同步/异步方式，可配置超时时间。 连接器 & 协议 内置连接器： - TCP — 原生 Socket - WebSocket — 浏览器客户端 - HTTP Server — REST API - HTTP Client — 对外请求 两种协议格式： 协议 格式 适用场景 ------ ------ ---------- Pomelo type(1b) + length(3b) + data 兼容 pomelo 各平台客户端 Simple id(4b) + dataLen(4b) + data 自定义轻量协议 消息 & 序列化 基于对象池的零分配消息传递： - sync.Pool 消息池 + 引用计数，减少 GC 压力 - 默认 Protobuf 序列化，同时支持 JSON - 同进程消息免序列化直传；跨节点消息通过 ClusterPacket 自动编解码 Extend 工具库 框架内置 21 个工具包： 分类 包 ------ ----- 时间 time wheel （分层时间轮）， time （辅助","default_branch":null,"files":null,"tree":[],"storefront":"/r/cherry-game","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/cherry-game/cherry/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}