跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 游戏后端和 Web 后端有什么区别?
未分類
8 7 月 2020

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

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

資深大佬 : yoke123 12

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

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

谢谢各位了。

大佬有話說 (31)

  • 資深大佬 : opengps

    游戏偏向于通信,我理解必然要求写 4 层 socket 通信(udp,tcp 都用)
    但是 web 后端,大部分人可能只写过 7 层 http ( s )通信

  • 資深大佬 : jiangzhuo9357

    咱还是说说相同点比较好……

  • 資深大佬 : Graves

    我也有个疑问,互联网项目和金融项目有什么区别,第一感觉就是金融需要安全性更高,具体高在哪?

  • 資深大佬 : MeteorCat

    天差地别

  • 資深大佬 : kaiki

    为啥要打醒,这个不是也挺好?

  • 資深大佬 : LokiSharp

    低实时要求的没区别直接 http 就行,高实时要求的得手撸 socket

  • 資深大佬 : lululau

    @Graves 金融行业都在 https 里再包一层加密,用 rsa 加密完整报文,还有的用私钥加密公钥解密

  • 資深大佬 : systemcall

    感觉可以试试做页游,既是 Web 开发又是游戏开发,实时的要求低,赚钱快

  • 資深大佬 : Graves

    @lululau #7 套娃? https 再套一层自己实现的类 https ?

  • 資深大佬 : mmdsun

    游戏客户端和服务器端基本上一直要保持连接,不是典型的 Request-Response 模式。需要长链接 socket 之类的。和一般后台开发差有些大。

    那 Java 和 C#技术栈举例的话。
    Java 的话一般后台开发用 spring boot 就够了。游戏要上 netty
    .net 普通 MVC 肯定不够用,SignalR 需要用到。

    大型游戏服务器一般用 C,Erlang,Golang,lua 这几种语言比较多。

    另外可以看一下 GitHub 上面热门游戏服务器框架。

    GitHub 上有哪些不错的游戏服务器框架?
    https://www.zhihu.com/answer/1064619916

  • 資深大佬 : raaaaaar

    游戏行业加班是不是要严重些。。

  • 資深大佬 : wenlele

    没真正从事过游戏的研发工作,但我觉得从业务需求去考虑,游戏后端和 web 后端差别应该挺大的。

    光是考虑常用的非功能性指标,游戏后端对可用性、健壮性、时延、错误容忍度等的要求应该会高许多,导致使用的技术架构会有更大的差异,比如我猜游戏后端的通信会依赖长连接的技术,游戏很多静态资源会放在客户端,或者强依赖于 CDN 等网络技术减轻服务端数据传输的压力。

    而且,当业务复杂度很大的时候,即使同时 web 后端,顶层抽象的技术架构可能差异不大,但具体的技术架构也会有很大的差异。没有什么技术架构能简单打包就能被其他产品使用的。 我想游戏后端也是如此的。

  • 資深大佬 : zqx

    @Graves 开发环境是局域网,Java 或 Node 的依赖都要手动维护一份版本列表,然后拷贝进开发环境,CICD 的时候也都是局域网。产品本身倒不一定有多安全,rsa 加密之类的和互联网应该一样

  • 資深大佬 : zjsxwc

    N 年前网游后端直接就是个 sqlserver 数据库吧,存储过程一把梭,逃

  • 資深大佬 : hanxiV2EX

    游戏后台管理系统开发属于 web 后端,可以先从游戏后台开发转游戏开发,我一个朋友转了两年游戏后端又回到 web 后端了,哈哈哈。。。

  • 資深大佬 : delectate

    当然都是加密后的长连接。
    短链接很容易被篡改,至于说 http,只适合页游。

    很多年前,有一些比较弱逼的游戏,甚至本地改内存都能作弊,就是逻辑没处理好。
    怎么解决这个问题呢,我记得有一下几种方案,通常使用 1 种或者多种并用(很久没有研究了,相关资讯可能有点落后,下请继续补充):
    1 、客户端校验资源和数据文件完整性;
    2 、检查客户端是否有可疑程序(类似期货的“看穿式监管”,搜集 ip 、mac 、磁盘序列号等所有数据);
    3 、通信数据加密;
    4 、保持长连接;
    5 、逻辑检测(比如在坐标 a,b,不可能跨越时空出现在另一个坐标 c,d );
    6 、行为检测(比如超越人类极限的 1ns 手速,或者固定模式的行为逻辑)。

  • 資深大佬 : scr

    差别很大. 游戏重实时, 用的长连接, 大部分公司里, 996 算休假模式

  • 資深大佬 : optional

    300ms 和 30ms 的区别。

  • 資深大佬 : paoqi2048

    看这里 /t/686506

  • 資深大佬 : Mutoo

    不同的游戏,后端区别也很大,MMORPG 跟棋牌游戏就是两种极端,FPS 、格斗游戏又是另一番天地。
    业务方面有游戏服务器管理、大厅、匹配、任务、活动、公会、玩家、升级、道具、交易、聊天、抽奖等等系统。
    实时性要求高的游戏,后端要处理数据同步问题、断线重连问题。

  • 資深大佬 : brader

    @lululau 张口就来?连 HTTPS 通讯,内容都不是 RSA 加密的,只是在握手阶段,用 RSA 加密传输 key,数据传输阶段,用 key 对称加密算法的。
    为什么不使用 RSA 加密内容呢?
    1.加解密性能问题。
    2.RSA 能加密的明文长度是有限制的。

    所以,就算银行在传输内容中使用 RSA 加密,也只是部分敏感明文信息使用 RSA,而不可能所有明文使用 RSA

  • 資深大佬 : xuanbg

    最大的区别就是游戏后端接口大部分只有 action 和 action 对象作为输入参数,而且接口也没有 web 后端那么多。

  • 資深大佬 : zdt3476

    上很多人说 http 适合页游是不太对的。正确来说,使用长连接和短链接主要区别是这个游戏是弱联网游戏。很多页游也是需要长连接的。比如很多微信小游戏,只有获取排行榜之类的模块的时候需要请求后端服务器,这种使用 http 就够了。有些页游需要实时对战同步战斗数据的,这种也是需要长连接的。

  • 資深大佬 : hantsy

    游戏也有走 HTTP 的。

  • 資深大佬 : 594duck

    端游要 Socket 编程。这年头的互联网从业人员都是搞 HTTP 的,对 Socket 编程不熟悉(太复杂了)。至于某些回答说游戏走 HTTP 的

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

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

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

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

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

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

    说点题外话

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

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

    大哥,我请你吃饭吧。你们这水平要求高么。钱多么。。。

  • 資深大佬 : 594duck

    游戏公司在 13 年还不是 LOW B 的时候,那时候游戏公司爽啊。

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

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

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

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

    再看现在的互联网老板,扣扣索索,也叫老板。。。真的是。

  • 資深大佬 : 594duck

    @Graves 听说过加密机么?江南天安加密机。就这一个东西,互联网公司就没有多少人知道了。

  • 資深大佬 : lniwn

    除了上面很多人已经提到的,还有一点,是业务开发层面的区别,游戏服务器是逻辑帧驱动,考核指标是多少毫秒内要执行完一帧,但是 web 服务器是事件驱动的,有 request 就触发执行逻辑。
    不管有没有 client 在链接,游戏服务器都是按照时间一帧一帧来执行的,但是对于 web 服务器,如果没有 client,那服务端就不会执行任何逻辑了(定时或者延时任务之类的除外)。

  • 資深大佬 : fireleaves

    游戏行业 MMORPG 后端,基本没有做过 Web 后端。

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

    不知道转行互联网容易不

  • 資深大佬 : edk24

    看你是做哪一种游戏, web 游戏得 ws http(s), 客户端游戏得会 socket udp tcp 加密通信

    没做过游戏, 但从通信协议上来讲应该是这样. 而且游戏服务端一般多是 c++ python 亦或者 java 之类的语言来开发, 要么追求极致的性能把服务器压榨干净, 要么是开发比较容易

  • 資深大佬 : sadfQED2

    @fireleaves 我旁边就是完美世界跳出来的同事,他表示加班属实

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具