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

2019-08-14 03:45:02 +08:00
 zzlettle
想开发一款自己的在线多人游戏

开发框架是 unity

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

没有这方面的知识积累

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

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

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

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

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

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

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

单机一般就能应付

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

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

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

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

最好能说的详细些

希望有经验的大佬指点下

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

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

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

至于游戏内同步、用户数据同步,房间匹配,逻辑分很多模块,相当于一个操作系统,里面各有分工。我做客户端的,对服务器只知道个大概,具体怎么上路修炼就不清楚了。
across
2019-08-14 13:32:36 +08:00
另外楼主似乎对百万级别理解有误,百万在线,像王者荣耀不知道优化怎么样,假设一台最高同时运行 100 场,也要一万台服务器,这花销 6 位数都是白菜价吧?(现在云服务器行情我是不知道的啦,自己查查阿里收费) 百万在线收入有多少? 王者荣耀好像日活 4、500 万时,月入 40 亿?
across
2019-08-14 13:33:52 +08:00
opengps
2019-08-14 13:49:00 +08:00
游戏的百万在线跟 web 可不一样:
web 的在线是按照 session 失效时间算,中途打开一下晾在那没请求,也占用默认 20 分钟的在线时长。
游戏用的得是 tcp 长连接和 udp,这个承载量属于并发实时数据
一般来说一个客户端尽量只占用 1 个连接,不过也有某些模块单独占用 1 个连接,假设 1 个用户占用 10 个连接,那么 100 万用户就是 10000 万连接,一台高配一点的服务器承载 5 万连接,那也已经需要 2000 台服务器了。弱弱问一下,能找我买服务器吗?大生意啊!
zzlettle
2019-08-14 14:02:28 +08:00
@across 谢谢文章推荐,算了解下游戏服务器的基本知识
CallMeReznov
2019-08-14 14:10:58 +08:00
看一下 pomelo 吧,虽然现在被放弃但那是正经的分布式的,之前兼职的公司游戏服务端就是用这套

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

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

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

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

© 2021 V2EX