游戏后端和 Web 后端有什么区别?
突然心血来潮,想从事游戏后端开发,求打醒我。
顺便 V 友们给我科普科普一下游戏服务端和传统的 Web 服务端的区别和坑在哪里和需要掌握哪些技术。
谢谢各位了。
突然心血来潮,想从事游戏后端开发,求打醒我。
顺便 V 友们给我科普科普一下游戏服务端和传统的 Web 服务端的区别和坑在哪里和需要掌握哪些技术。
谢谢各位了。
那 Java 和 C#技术栈举例的话。
Java 的话一般后台开发用 spring boot 就够了。游戏要上 netty
.net 普通 MVC 肯定不够用,SignalR 需要用到。
大型游戏服务器一般用 C,Erlang,Golang,lua 这几种语言比较多。
另外可以看一下 GitHub 上面热门游戏服务器框架。
GitHub 上有哪些不错的游戏服务器框架?
https://www.zhihu.com/answer/1064619916
光是考虑常用的非功能性指标,游戏后端对可用性、健壮性、时延、错误容忍度等的要求应该会高许多,导致使用的技术架构会有更大的差异,比如我猜游戏后端的通信会依赖长连接的技术,游戏很多静态资源会放在客户端,或者强依赖于 CDN 等网络技术减轻服务端数据传输的压力。
而且,当业务复杂度很大的时候,即使同时 web 后端,顶层抽象的技术架构可能差异不大,但具体的技术架构也会有很大的差异。没有什么技术架构能简单打包就能被其他产品使用的。 我想游戏后端也是如此的。
很多年前,有一些比较弱逼的游戏,甚至本地改内存都能作弊,就是逻辑没处理好。
怎么解决这个问题呢,我记得有一下几种方案,通常使用 1 种或者多种并用(很久没有研究了,相关资讯可能有点落后,下请继续补充):
1 、客户端校验资源和数据文件完整性;
2 、检查客户端是否有可疑程序(类似期货的“看穿式监管”,搜集 ip 、mac 、磁盘序列号等所有数据);
3 、通信数据加密;
4 、保持长连接;
5 、逻辑检测(比如在坐标 a,b,不可能跨越时空出现在另一个坐标 c,d );
6 、行为检测(比如超越人类极限的 1ns 手速,或者固定模式的行为逻辑)。
所以,就算银行在传输内容中使用 RSA 加密,也只是部分敏感明文信息使用 RSA,而不可能所有明文使用 RSA
页游是走 HTTP 的居多,那东西没啥实时性,一个服务器 1000 人顶了天了。所以 HTTP 撑的住。
你要端游走 HTTP,谁见过么?我是没见过。从末见过端游走 HTTP 的。
另外端游动不动万人在线一个服务器,架构也是水平分布的。
我 10 年搞端游的时候,一个 MAP 服务可以拆十来台服务器,如果有需求,什么算钱的服务,MAP 服务,PK 图的服务,后台的服务,可以拆的多了。
人家毕竟叫,大型多人 MMORPG 。
像魔兽世界这种,连副本都可以拆成服务器来 RUN (变像的 MAP 服务的服务器)
说点题外话
2008 年的时候在 IDC 碰到一个土豪,每个柜子放一台 F5 。我问这是谁的,太有钱了,旁边的哥们说,我们是盛大的。我说一台一个 F5,你们钱多烧啊。
盛大”一台 F5 的钱也就是一组传奇一个月回本,你要把眼界放宽点“
大哥,我请你吃饭吧。你们这水平要求高么。钱多么。。。
某游戏上线大会,就是一办公室里坐满了人,什么客服,运维,程序,产品经理,数值经理全在里边。
会议桌上放着一堆钱,用罩子罩着
上线一周疯狂加班,上线后一周疯狂开服。
然后上线成功,上线人数稳定,百万注册,几十万在线。老板当场开罩子分钱。那时候爽啊。
再看现在的互联网老板,扣扣索索,也叫老板。。。真的是。
网络通讯确实是长连接,有自己的网络库,基于 epoll 封装,MMO 还可以是 TCP,至于 MOBA 就只能是 UDP 了。通讯数据格式用 protobuf 。
实时性要求相对较高,目前所在的项目,服务器是 10 帧,现在测试的话一般一条协议或者一个 tick 超过 100ms 就要有警告了。
业务比较复杂,耦合度比较高,里边各种养成,例如装备,锻造,宠物,伙伴等,各种玩法,各种场景切换。这一部分基本是体力活。
服务端压力较大,同场景人数,移动,技能要给视野内玩家广播,同一刻消息数量大,性能差会限制玩法的实现,例如多人战斗的玩法。这部分基本可以看作 MMO 核心。
网关是项目组自己实现的。没有用 Redis,直连 MySQL,一个服一个库,服里人数有上限,所以还 OK,业务对内存操作,落地到库走一个自己的中间件。当然也有很多项目用 Redis,前几天有个项目分享了用阿里云 Redis 集群的踩坑经历。
加班就一句,12 点下班要偷偷摸摸的,周六不来要请假,当然基本没有不来的。
不知道转行互联网容易不
没做过游戏, 但从通信协议上来讲应该是这样. 而且游戏服务端一般多是 c++ python 亦或者 java 之类的语言来开发, 要么追求极致的性能把服务器压榨干净, 要么是开发比较容易