用 Go 写游戏服务器,推荐哪个框架?

2021-02-25 16:57:46 +08:00
 uiosun

服务端工作者,业余 Go 人士,希望能上手一门专业的 Go 游戏引擎。

(学习曲线可以陡峭一些,但请专业、规范一些,英文无碍)

游戏是:

简单搜了一下,目前发现四个 github 上星比较多的,或者各位有更好的推荐(?):

pitaya,890 Star,最后一个 Commit/PR Merge 是 21 年 1 月 14 号;

goworld,1800 Star,最后一个 Commit/PR Merge 是 20 年 9 月 6 号;

nano,1600 Star,最后一个 Commit/PR Merge 是 20 年 12 月 10 号;

leaf,3900 Star,最后一个 Commit/PR Merge 是 20 年 5 月 16 号;

9642 次点击
所在节点    Go 编程语言
21 条回复
Oktfolio
2021-02-25 17:02:20 +08:00
leaf 上次更新核心代码 Release 是 2016 年
janxin
2021-02-25 17:24:10 +08:00
没用过

https://github.com/googleforgames/agones 要不要考虑一下这个?
jmyz0455
2021-02-25 18:23:54 +08:00
我倒是想问写后台业务 curd 用框架啥好。
sunny352787
2021-02-25 18:30:10 +08:00
你要干啥啊?据我所知各家公司都是自己从头手撸,服务端没有什么通用的游戏框架,用 go 搭个也很简单
vultr
2021-02-25 18:36:24 +08:00
uiosun
2021-02-25 18:36:35 +08:00
@Oktfolio 是不是说明 Leaf 稳定了?(或者没啥更新的动力了?)

@sunny352787 写个多人联网游戏(这段时间对 EndlessSky 、远行星号很感兴趣,想写个类似的 2D 网游),帅哥有啥推荐吗?

我觉得背靠大树好乘凉吧,直接选用框架,也就省的在安全性、基础性能之类的方面,不停的补漏洞了
whitehack
2021-02-25 18:41:31 +08:00
go 有不重启热更新方案了吗?
liuxu
2021-02-25 19:00:57 +08:00
@whitehack k8s,从运行环境层面热更新
Jelly97
2021-02-25 19:44:15 +08:00
cs8425
2021-02-25 20:32:05 +08:00
直接手撸就行
之前逆向造游戏模拟端就是直接手撸....
长连结用 websocket 或者自己包装一下 TCP 连线
没跨主机很好写
直接把状态塞内存 有需要再写回即可

只是不断线热更比较麻烦
个人目前是尽量把逻辑参数 /设定档化
需要热更就重载入设定档
真的要大改逻辑只能重起
目前量小 趁人少直接重起无所谓

但比较好的方式其实是加个 HA
有需要更新的时候 旧连线维持
新连线导到新的进程
等旧连线全结束后再关掉进程
Linxing
2021-02-25 20:35:04 +08:00
@jmyz0455 https://github.com/linxing/venus 安利下自己基于 gin 的 crud 框架
uiosun
2021-02-25 21:12:28 +08:00
@cs8425 真详细哇!

既然几位大佬都建议直接上手,我就用 pitaya 了,看了一下,它似乎很轻量级,连 DB 模块都没预设。

作为萌新,在完全手撸和彻底投入框架的选择里,适当折中吧(笑)
luoqeng
2021-02-26 10:06:50 +08:00
hellodudu86
2021-02-26 10:25:39 +08:00
我也是用 micro 做微服务框架,再手撸一套 tcp 长连接,然后在上面慢慢添砖加瓦,有兴趣可以参考下,目前陆陆续续一个人开发了一年时间。https://github.com/east-eden/server
jn5414
2021-02-26 14:31:47 +08:00
我也在做个 个人独立游戏,因为不会 go,最后选了 pinus,pomelo 的 ts 版本, 感觉学习成本低一点
joesonw
2021-02-26 14:34:25 +08:00
@janxin agones 不能算框架
uiosun
2021-02-26 15:30:16 +08:00
@jn5414 hah,我也是不太懂 go,慢慢熟悉嘛~反正是实验性项目
uiosun
2021-02-26 15:31:49 +08:00
@luoqeng 大佬好牛!我都试试看

@hellodudu86 喔竟然是开源项目,也是大佬哈哈,参考一下大佬的代码,已给 star !
hellodudu86
2021-02-26 17:26:55 +08:00
@uiosun 大佬谈不上哈,只是做过几款游戏,以前一直用 c++开发的,新项目在用 golang,有些地方也没想很明白,欢迎提各种建议意见,共同进步[握爪]
ZackKing
2021-03-03 11:51:03 +08:00
@whitehack fresh

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

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

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

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

© 2021 V2EX