V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
uiosun
V2EX  ›  Go 编程语言

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

  •  
  •   uiosun · 2021-02-25 16:57:46 +08:00 · 10273 次点击
    这是一个创建于 1401 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    游戏是:

    • 长连接
    • 2C 核心、4G 内存、5M 带宽的阿里小服务器(最大可立刻扩容一倍)
    • Unity 客户端
    • 个人项目
    • 科幻 RPG

    简单搜了一下,目前发现四个 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 号;

    21 条回复    2023-02-24 19:43:03 +08:00
    Oktfolio
        1
    Oktfolio  
       2021-02-25 17:02:20 +08:00
    leaf 上次更新核心代码 Release 是 2016 年
    janxin
        2
    janxin  
       2021-02-25 17:24:10 +08:00
    没用过

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

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

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

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

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

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

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

    @hellodudu86 喔竟然是开源项目,也是大佬哈哈,参考一下大佬的代码,已给 star !
    hellodudu86
        19
    hellodudu86  
       2021-02-26 17:26:55 +08:00
    @uiosun 大佬谈不上哈,只是做过几款游戏,以前一直用 c++开发的,新项目在用 golang,有些地方也没想很明白,欢迎提各种建议意见,共同进步[握爪]
    ZackKing
        20
    ZackKing  
       2021-03-03 11:51:03 +08:00
    @whitehack fresh
    shawanna6
        21
    shawanna6  
       2023-02-24 19:43:03 +08:00
    有 nodejs pomelo 经验的,推荐用 pitaya
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   968 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:37 · PVG 04:37 · LAX 12:37 · JFK 15:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.