游戏后端和 Web 后端有什么区别?

2020-07-08 22:39:46 +08:00
 yoke123

突然心血来潮,想从事游戏后端开发,求打醒我。

顺便 V 友们给我科普科普一下游戏服务端和传统的 Web 服务端的区别和坑在哪里和需要掌握哪些技术。

谢谢各位了。

9565 次点击
所在节点    程序员
31 条回复
brader
2020-07-09 09:43:07 +08:00
@lululau 张口就来?连 HTTPS 通讯,内容都不是 RSA 加密的,只是在握手阶段,用 RSA 加密传输 key,数据传输阶段,用 key 对称加密算法的。
为什么不使用 RSA 加密内容呢?
1.加解密性能问题。
2.RSA 能加密的明文长度是有限制的。

所以,就算银行在传输内容中使用 RSA 加密,也只是部分敏感明文信息使用 RSA,而不可能所有明文使用 RSA
xuanbg
2020-07-09 09:52:03 +08:00
最大的区别就是游戏后端接口大部分只有 action 和 action 对象作为输入参数,而且接口也没有 web 后端那么多。
zdt3476
2020-07-09 09:58:03 +08:00
楼上很多人说 http 适合页游是不太对的。正确来说,使用长连接和短链接主要区别是这个游戏是弱联网游戏。很多页游也是需要长连接的。比如很多微信小游戏,只有获取排行榜之类的模块的时候需要请求后端服务器,这种使用 http 就够了。有些页游需要实时对战同步战斗数据的,这种也是需要长连接的。
hantsy
2020-07-09 10:02:46 +08:00
游戏也有走 HTTP 的。
594duck
2020-07-09 10:10:14 +08:00
端游要 Socket 编程。这年头的互联网从业人员都是搞 HTTP 的,对 Socket 编程不熟悉(太复杂了)。至于某些回答说游戏走 HTTP 的

页游是走 HTTP 的居多,那东西没啥实时性,一个服务器 1000 人顶了天了。所以 HTTP 撑的住。

你要端游走 HTTP,谁见过么?我是没见过。从末见过端游走 HTTP 的。

另外端游动不动万人在线一个服务器,架构也是水平分布的。

我 10 年搞端游的时候,一个 MAP 服务可以拆十来台服务器,如果有需求,什么算钱的服务,MAP 服务,PK 图的服务,后台的服务,可以拆的多了。

人家毕竟叫,大型多人 MMORPG 。

像魔兽世界这种,连副本都可以拆成服务器来 RUN (变像的 MAP 服务的服务器)



说点题外话

2008 年的时候在 IDC 碰到一个土豪,每个柜子放一台 F5 。我问这是谁的,太有钱了,旁边的哥们说,我们是盛大的。我说一台一个 F5,你们钱多烧啊。

盛大”一台 F5 的钱也就是一组传奇一个月回本,你要把眼界放宽点“

大哥,我请你吃饭吧。你们这水平要求高么。钱多么。。。
594duck
2020-07-09 10:11:59 +08:00
游戏公司在 13 年还不是 LOW B 的时候,那时候游戏公司爽啊。

某游戏上线大会,就是一办公室里坐满了人,什么客服,运维,程序,产品经理,数值经理全在里边。

会议桌上放着一堆钱,用罩子罩着

上线一周疯狂加班,上线后一周疯狂开服。

然后上线成功,上线人数稳定,百万注册,几十万在线。老板当场开罩子分钱。那时候爽啊。

再看现在的互联网老板,扣扣索索,也叫老板。。。真的是。
594duck
2020-07-09 10:17:24 +08:00
@Graves 听说过加密机么?江南天安加密机。就这一个东西,互联网公司就没有多少人知道了。
lniwn
2020-07-09 10:29:46 +08:00
除了上面很多人已经提到的,还有一点,是业务开发层面的区别,游戏服务器是逻辑帧驱动,考核指标是多少毫秒内要执行完一帧,但是 web 服务器是事件驱动的,有 request 就触发执行逻辑。
不管有没有 client 在链接,游戏服务器都是按照时间一帧一帧来执行的,但是对于 web 服务器,如果没有 client,那服务端就不会执行任何逻辑了(定时或者延时任务之类的除外)。
fireleaves
2020-07-09 10:35:49 +08:00
游戏行业 MMORPG 后端,基本没有做过 Web 后端。

网络通讯确实是长连接,有自己的网络库,基于 epoll 封装,MMO 还可以是 TCP,至于 MOBA 就只能是 UDP 了。通讯数据格式用 protobuf 。
实时性要求相对较高,目前所在的项目,服务器是 10 帧,现在测试的话一般一条协议或者一个 tick 超过 100ms 就要有警告了。
业务比较复杂,耦合度比较高,里边各种养成,例如装备,锻造,宠物,伙伴等,各种玩法,各种场景切换。这一部分基本是体力活。
服务端压力较大,同场景人数,移动,技能要给视野内玩家广播,同一刻消息数量大,性能差会限制玩法的实现,例如多人战斗的玩法。这部分基本可以看作 MMO 核心。
网关是项目组自己实现的。没有用 Redis,直连 MySQL,一个服一个库,服里人数有上限,所以还 OK,业务对内存操作,落地到库走一个自己的中间件。当然也有很多项目用 Redis,前几天有个项目分享了用阿里云 Redis 集群的踩坑经历。
加班就一句,12 点下班要偷偷摸摸的,周六不来要请假,当然基本没有不来的。

不知道转行互联网容易不🥺
edk24
2020-07-09 10:51:07 +08:00
看你是做哪一种游戏, web 游戏得 ws http(s), 客户端游戏得会 socket udp tcp 加密通信

没做过游戏, 但从通信协议上来讲应该是这样. 而且游戏服务端一般多是 c++ python 亦或者 java 之类的语言来开发, 要么追求极致的性能把服务器压榨干净, 要么是开发比较容易
sadfQED2
2020-07-09 19:12:28 +08:00
@fireleaves 我旁边就是完美世界跳出来的同事,他表示加班属实

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

https://tanronggui.xyz/t/688374

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

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

© 2021 V2EX