请教个关于 go 开发游戏服务端的问题

63 天前
 davince

go 开发放置类游戏,一般用什么框架,或者有什么架构啊 大佬们

3121 次点击
所在节点    Go 编程语言
17 条回复
sunny352787
63 天前
游戏这边本身就没啥公认好用的框架,都是自己根据自己项目情况选组件或者自己写,golang 倒是有一些开源的游戏服务端但不一定适合你的情况,给你列几个你自己看看能不能用上吧,反正我只是 star 收藏当作扩展知识面,实际我们项目的框架还是自己写,核心是用 gin 的 http 服务,加上 grpc 做简单的服务间通讯,毕竟太复杂的也用不上

https://github.com/topfreegames/pitaya
https://github.com/duanhf2012/origin
https://github.com/dobyte/due
https://github.com/Golangltd/LollipopGo
https://github.com/lonng/nano
https://github.com/kercylan98/minotaur

这些是最近还在更新的,还有很多已经很久没更新的就不列了
davince
63 天前
@sunny352787 谢谢大佬,我搜了 2 个 Leaf 和 Nakama 不知道 靠谱不
sunny352787
63 天前
@davince leaf 很久很久没更新了,nakama 没看过,这些你挑个顺眼的试试,我觉得最后你会发现,还是自己手搓更方便
assiadamo
63 天前
看你游戏类型,http 短连接 gin ,tcp/ws 长连接 https://github.com/aceld/zinx
这些大多是通信层框架,缓存设计、数据持久化、负载均衡、部署方式这些大多都是藏着掖着不愿意分享的,需要自己选型踩坑
Maboroshii
63 天前
框架就是一些网络或者 rpc 之类的,真正复杂 4L 都说了,各个公司都是自己踩的坑,框架里是没有的
newtype0092
63 天前
放置游戏逻辑主要是客户端逻辑吧,服务器只要提供计时的服务就好了。
然后就是提升用户体验的杂项,作弊校验、存档、排行之类杂七杂八的,和普通的 web 服务没区别。
davince
63 天前
悟了, 到最后还是得自己搓才好掌控 😄
realpg
62 天前
游戏这俩字过于庞大了...

你随便打开一个手机应用商店

"游戏"都是跟"应用"并行的分类

这么问问题, 就跟 "我想开发一个软件有啥框架"一样不存在适配的答案
BALDOOR
62 天前
非实时的,跟做 Web 一样轮询都可以,数据放数据库不用缓存实时 IO 都没问题
实时的,数据放内存,别听什么鬼话放什么 Redis/SSDB 或者其他什么的,做好代码热更新,别做快速重启/重连方案

看下 Actor 相关知识,很快就能自己搞一套能用脚手架出来了,核心知识是《可变不共享,共享不可变,要想改变共享,使用消息队列更新》,不要上来就我“精通”数十种锁,除了玩编译器和内核那堆大牛,没人能玩的转,就跟那群学了 21 天就觉得自己“精通”C++的人一样,自以为是只能自嗨而已,随便来个几个随机 Bug 就老实了

网上一大堆脚手架,@sunny352787 这里面的也都是脚手架不是什么框架,就跟渲染器和引擎的差别一样大
不用迷恋大厂甚至宇宙厂拥有几十人的中台堆出来的框架,就算各种 title 爆炸,博客文章写得飞起的“大牛”,各种意淫脑补的“高性能”满天飞,一样是垃圾,跟 Web 不一样,除了像登录/MQ/RPC 之类的其他都是不通用的。

也不要迷信什么成熟稳定之类的,软件乃至互联网软件估计最差的就是游戏了,从来就没有稳定这种说法,甚至都没有成熟这种概念,只是过往项目堆出来的混杂着各种不同屎的屎山缝缝补补,跟互联网那些 Spring/Laravel 之类的比,就是初中被 55 分流的小孩跟图灵奖得主比
techone
62 天前
Pitaya 可以试一下
William97
61 天前
@assiadamo 哈哈哈,这个我前段时间还学习了一波,照着手搓了一遍,学到了很多
William97
61 天前
@davince 自己手搓吧,开源的框架踩坑的时间都能手搓一个了。再者就是找有没有那种商业付费的
digdug
60 天前
我早期入坑的时候看的 leaf 然后魔改的

actor 的话那个 due 也一直在更

最终都是自己搓
Gilfoyle26
60 天前
go 不是有 gc 的吗,我一直以为有 gc 的语言做不了游戏服务端,难道是我的错误认知?
WilliamColton
59 天前
@Gilfoyle26 #14 为什么啊,纯新手不是很懂,性能问题吗?
suruiran
56 天前
@Gilfoyle26 fps 或者 moba 这种有 gc 当然不太好,但是楼主说的这种游戏,肯定是无所谓的,Python 都行。
lolizeppelin
53 天前
不用看 Leaf, 几万年前的代码,每年更新一下 readme 让你觉得在更新
这框架没什么功能,就实现了一点组件反射功能和路由....

pitaya 是 nano 的上位替代,nano 之前是没有不区分内外 rpc 的,不知道现在怎么样了
pitaya 一直在更新,各种小 bug 也有,opentelemetry 都上了,直接折腾这个,就算后面用不上也可以提供设计思路

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1146330

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX