游戏的种类也很多,各种3A大作、手机游戏、小游戏等。就游戏服务端而言,由于游戏本身差异,很难有一个大而全的游戏服务端框架,为满足日益变化的业务需求,很多企业都是自主开发定制自己的框架,或者从很小的一个http+rpc基础开始,不断扩展来满足的各自的业务需求。

非要说推荐几个Golang的游戏服务端框架,也不是没有,这里更加Gibhub的 star 数来推荐几个还不错的框架。

下面这些都是有一定 star 并且还在活跃的项目:

Pitaya,可扩展的游戏服务器框架,通过 C SDK 提供集群支持和适用于 iOS、Android、Unity 和其他平台的客户端库。

Nano,轻量、便捷、高性能的基于golang的游戏服务器框架。

origin 是一个由 Go 语言(golang)编写的分布式开源游戏服务器引擎。origin适用于各类游戏服务器的开发,包括 H5(HTML5)游戏服务器。

due 是一款基于Go语言开发的轻量级、高性能分布式游戏服务器框架。 其中,模块设计方面借鉴了kratos的模块设计思路,旨在为游戏服务器开发提供完善、高效、优雅、标准化的解决方案。 框架自创建至今已在多个企业级游戏项目中上线实践过,稳定性有充分的保障。

Leaf,是一个由 Go 语言(golang)编写的开发效率和执行效率并重的开源游戏服务器框架。Leaf 适用于各类游戏服务器的开发,包括 H5(HTML5)游戏服务器。

GoWorld,一个分布式的游戏服务器引擎,理论上支持无限横向扩展。 一个GoWorld服务器由三种不同的进程注册:dispatcher、gate、game。(这个目前几年没有更新了)

就个人而言,深度使用过Pitaya,算是一个微服务游戏框架,支持服务注册与发现,可以搭配k8s部署集群游戏服务。并且还提供了iOS、Android 客户端库。

另外,Leaf Nano也是值得一试,新手入门的话,可以从 Leaf 开始,快速掌握基础架构。分布式部署就先Pitaya,原生支持微服务拆分(如网关、逻辑服、匹配服),通过 ETCD/Nacos 实现服务发现,同时支持 Protobuf/JSON 作为传输协议,文档以英文为主,中文相对较少。

最后,即便是较为流行的框架,也需要去踩很多坑,然后去填坑。

如果才开始做游戏,毫无头绪,不知道如何选型,那就挑一个你认为顺眼的试一试,然后慢慢摸索,不断踩坑填坑就知道自己的项目到底适不适合用这些框架。