开发游戏服务器的分布式架构需要掌握那些技术栈 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zzlettle
V2EX    问与答

开发游戏服务器的分布式架构需要掌握那些技术栈

  •  
  •   zzlettle 2019-08-14 03:45:02 +08:00 4815 次点击
    这是一个创建于 2282 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想开发一款自己的在线多人游戏

    开发框架是 unity

    但是在后端服务器开发方面

    没有这方面的知识积累

    不清楚现在游戏后端服务器一般都是如何架构的

    目标是能对付百万在线玩家的话

    后端的服务器架构和技术选型上

    哪种方案在开发效率和硬件成本上比较经济实惠

    本人现在学的技术积累比较杂

    python go 数据库 服务器都会一些

    主要做的工作,都是小型 web 开发

    单机一般就能应付

    对游戏分布式开发不是很熟悉

    在 V2EX 这里看到经常有人发贴

    说到中间件,消息队列,缓存什么的

    技术方案太多,不知道哪种最适合我现在自身的能力和需求

    最好能说的详细些

    希望有经验的大佬指点下

    指明我下一步学习的方向
    第 1 条附言    2019-08-14 14:08:21 +08:00
    大家对百万在线百万这个数字比较敏感

    我也知道了百万应该是现阶段不实际的目标

    作为一个游戏开发的小白,确实不是很了解

    可能单机服务器就能对付了

    但是对多人多场景在线的后端服务器架构需要哪些知识

    还是希望大哥大姐们能多介绍下
    19 条回复    2019-08-14 14:10:58 +08:00
    ETiV
        1
    ETiV  
       2019-08-14 03:56:16 +08:00 via iPhone
    啥类型啊百万在线,棋牌吗
    zzlettle
        2
    zzlettle  
    OP
       2019-08-14 03:59:08 +08:00
    在线游戏,预计实现百万在线的处理能力
    只要游戏做的好,哪个类型都能实现百万在线吧
    greatdancing
        3
    greatdancing  
       2019-08-14 06:03:52 +08:00 via Android
    百万在线!
    v 才 5000 多
    JohnLou
        4
    JohnLou  
       2019-08-14 07:08:16 +08:00 via Android
    还百万,我做的第一款游戏目标就是用户破百而已。随便写,有个几千人玩你都可以数钱数到笑醒了,凡是技术相关的问题都不是问题。
    Mutoo
        5
    Mutoo  
       2019-08-14 07:32:11 +08:00
    @zzlettle 同服在线与同副本在线是有很大区别的。游戏类型不同的实现方式也很不一样。FPS 和 MMORPG 还有格斗游戏用到的同步机制大相径庭。一般有帧同步和状态同步两大类,可以了解一下:

    https://github.com/MFatihMAR/Awesome-Game-Networking
    murmur
        6
    murmur  
       2019-08-14 08:29:41 +08:00
    /div>
    百万在线你说的是绝地求生么
    silencefent
        7
    silencefent  
       2019-08-14 09:04:50 +08:00
    百万在线的级别也不需要你设计这些了
    参考蓝洞的用户量爆发 中期直接重构了项目
    tvallday
        8
    tvallday  
       2019-08-14 09:08:04 +08:00 via Android
    别闹,你只会累死自己。而且个人做的游戏上不了线,也是白做。网络游戏不是小工程,要真想做绝不会在没有网游服务器经验的情况下业余时间内可以完成。你说做一些小场景下的技术验证,倒是有可能。
    gaokevin163
        9
    gaokevin163  
       2019-08-14 12:31:26 +08:00
    第一步先学会 unity,能做一款单机游戏,第二步找个后台的人帮你做把单机链接起来的任务
    0ZXYDDu796nVCFxq
        10
    0ZXYDDu796nVCFxq  
       2019-08-14 12:33:56 +08:00 via Android
    妈呀,动不动就百万人在线
    locoz
        11
    locoz  
       2019-08-14 12:38:01 +08:00 via Android
    建议先做到能用就行,一开始就设想那么大,容易出现步子太大扯到蛋的情况。小步快跑,快速迭代。
    agdhole
        12
    agdhole  
       2019-08-14 12:58:51 +08:00 via Android
    steam 上破百万的游戏,十年来都没几个
    stanjia
        13
    stanjia  
       2019-08-14 13:01:12 +08:00
    @JohnLou 哈哈哈哈哈哈哈
    across
        14
    across  
       2019-08-14 13:23:45 +08:00
    https://gameinstitute.qq.com/community/detail/117210
    这里有一篇详细介绍的。

    大部分 MMORPG 游戏都是分区的,MOBA 类是开小房间的。上来百万级一般是不可行,也没必要,那这个架构有可能吗? 其实也是有 EVE 这种万人同服的架构,难度很高。

    至于游戏内同步、用户数据同步,房间匹配,逻辑分很多模块,相当于一个操作系统,里面各有分工。我做客户端的,对服务器只知道个大概,具体怎么上路修炼就不清楚了。
    across
        15
    across  
       2019-08-14 13:32:36 +08:00
    另外楼主似乎对百万级别理解有误,百万在线,像王者荣耀不知道优化怎么样,假设一台最高同时运行 100 场,也要一万台服务器,这花销 6 位数都是白菜价吧?(现在云服务器行情我是不知道的啦,自己查查阿里收费) 百万在线收入有多少? 王者荣耀好像日活 4、500 万时,月入 40 亿?
    across
        16
    across  
       2019-08-14 13:33:52 +08:00
    opengps
        17
    opengps  
       2019-08-14 13:49:00 +08:00   1
    游戏的百万在线跟 web 可不一样:
    web 的在线是按照 session 失效时间算,中途打开一下晾在那没请求,也占用默认 20 分钟的在线时长。
    游戏用的得是 tcp 长连接和 udp,这个承载量属于并发实时数据
    一般来说一个客户端尽量只占用 1 个连接,不过也有某些模块单独占用 1 个连接,假设 1 个用户占用 10 个连接,那么 100 万用户就是 10000 万连接,一台高配一点的服务器承载 5 万连接,那也已经需要 2000 台服务器了。弱弱问一下,能找我买服务器吗?大生意啊!
    zzlettle
        18
    zzlettle  
    OP
       2019-08-14 14:02:28 +08:00
    @across 谢谢文章推荐,算了解下游戏服务器的基本知识
    CallMeReznov
        19
    CallMeReznov  
       2019-08-14 14:10:58 +08:00
    看一下 pomelo 吧,虽然现在被放弃但那是正经的分布式的,之前兼职的公司游戏服务端就是用这套
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     948 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 22:24 PVG 06:24 LAX 14:24 JFK 17:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86