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

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

  •  
  •   davince · 55 天前 · 3094 次点击
    这是一个创建于 55 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    17 条回复    2025-07-29 20:48:35 +08:00
    sunny352787
        1
    sunny352787  
       55 天前   ❤️ 2
    游戏这边本身就没啥公认好用的框架,都是自己根据自己项目情况选组件或者自己写,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
        2
    davince  
    OP
       55 天前
    @sunny352787 谢谢大佬,我搜了 2 个 Leaf 和 Nakama 不知道 靠谱不
    sunny352787
        3
    sunny352787  
       55 天前
    @davince leaf 很久很久没更新了,nakama 没看过,这些你挑个顺眼的试试,我觉得最后你会发现,还是自己手搓更方便
    assiadamo
        4
    assiadamo  
       55 天前   ❤️ 4
    看你游戏类型,http 短连接 gin ,tcp/ws 长连接 https://github.com/aceld/zinx
    这些大多是通信层框架,缓存设计、数据持久化、负载均衡、部署方式这些大多都是藏着掖着不愿意分享的,需要自己选型踩坑
    Maboroshii
        5
    Maboroshii  
       55 天前
    框架就是一些网络或者 rpc 之类的,真正复杂 4L 都说了,各个公司都是自己踩的坑,框架里是没有的
    newtype0092
        6
    newtype0092  
       55 天前
    放置游戏逻辑主要是客户端逻辑吧,服务器只要提供计时的服务就好了。
    然后就是提升用户体验的杂项,作弊校验、存档、排行之类杂七杂八的,和普通的 web 服务没区别。
    davince
        7
    davince  
    OP
       55 天前
    悟了, 到最后还是得自己搓才好掌控 😄
    realpg
        8
    realpg  
    PRO
       55 天前
    游戏这俩字过于庞大了...

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

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

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

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

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

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

    actor 的话那个 due 也一直在更

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

    pitaya 是 nano 的上位替代,nano 之前是没有不区分内外 rpc 的,不知道现在怎么样了
    pitaya 一直在更新,各种小 bug 也有,opentelemetry 都上了,直接折腾这个,就算后面用不上也可以提供设计思路
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2874 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 08:20 · PVG 16:20 · LAX 01:20 · JFK 04:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.