综述

本文探究了游戏后台架构的发展历史及展望。随着技术的进步,游戏需求的变化,游戏架构也在不断发生变化来满足越来越高的游戏需求。总体来说是需求在推动着架构的变化。本文最后也根据现在人们的游戏需求和现在业界技术情况,给出了后台架构展望。

游戏后台架构发展历史

第一代网游服务器

最早的游戏服务器是1978年,英国著名的财经学校University of Essex的学生 Roy Trubshaw编写了世界上第一个MUD程序,叫做《MUD1》。MUD1是一款纯文字的世界,没有任何图片,但是不同计算机前的玩家可以在游戏里共同冒险、交流。与以往具有网络联机功能的游戏相比, MUD1是第一款真正意义上的实时多人交互的网络游戏。
MUDOS使用单线程无阻塞套接字,单服务器来服务所有玩家,架构如下:

第二代网游服务器

2000年左右,随着图形界面的出现,游戏更多的采用图形界面与用户交互。此时随着在线人数的增加和游戏数据的增加,服务器变得不抗重负。于是就有了分服模型。
分服模型是游戏服务器中最典型,也是历久最悠久的模型。在早期服务器的承载量达到上限的时候,游戏开发者就通过架设更多的服务器来解决。每个服务器的帐号是独立的,每台服务器用户的状态都是不一样的,一个服就是一个世界,大家各不牵扯。
分服模型结构如下:

在线程调度方面,与以往的单线程模型相比,又衍生出了另外两种线程模型:
- 异步-多线程:基于每个场景(或者房间),分配一个线程。每个场景的玩家同属于一个线程。
- 多进程:能够利用上多核CPU能力、更容易进行容灾处理。多进程系统比较经典的模型是“三层架构”。分成网络,游戏逻辑,数据库三个部分。

第三代网游服务器

之前的网游服务器都是分区分服,玩家都被划分在不同的服务器上,每台服务器运行的逻辑相同,玩家不能在不同服务器之间交互。想要更多的玩家在同一世界,保持玩家的活跃度,于是就有了世界服模型了。世界服类型也有以下3种演化,除了世界服类型游戏之外,目前比较火的还有房间类玩法(如王者荣耀):

一类型(三层架构)

网关部分分离成单端的gate服务器,DB部分分离为DB服务器,把网络功能单独提取出来,让用户统一去连接一个网关服务器,再有网关服务器转发数据到后端游戏服务器。而游戏服务器之间数据交换也统一连接到网关进行交换。所有有DB交互的,都连接到DB服务器来代理处理。

二类型(Cluster)

有了一类型的经验,后续肯定是拆分的越细,性能越好,每个相同的模块分布到一台服务器处理,多组服务器集群共同组成一个游戏服务端。一般地,我们可以将一个组内的服务器简单地分成两类:场景相关的(如:行走、战斗等)以及场景不相关的(如:公会聊天、不受区域限制的贸易等)。经常可以见到的一种方案是:gate服务器、场景服务器、非场景服务器、聊天管理器、AI服务器以及数据库代理服务器。如下模型:

通过这种类型服务器架构,因为压力分散了,性能会有明显提升,负载也更大了,包括目前一些大型的 MMORPG游戏就是采用此架构。不过每增加一级服务器,状态机复杂度可能会翻倍,导致研发和找bug的成本上升,这个对开发组挑战比较大,没有经验,很容出错。

三类型(无缝地图)

魔兽世界的中无缝地图,想必大家印象深刻,整个世界的移动没有像以往的游戏一样,在切换场景的时候需要loading等待,而是直接行走过去,体验流畅。
为了解决这个问题,比较以往按照地图来切割游戏而言,无缝世界并不存在一块地图上面的人有且只由一台服务器处理了,此时需要一组服务器来处理,每台Node服务器用来管理一块地图区域,由 NodeMaster(NM)来为他们提供总体管理。更高层次的World则提供大陆级别的管理服务。

房间服务器(游戏大厅)

房间类玩法和MMORPG有很大的不同,在于其在线广播单元的不确定性和广播数量很小。而且需要匹配一台房间服务器让少数人进入一个服务器。

这一类游戏最重要的是其“游戏大厅”的承载量,每个“游戏房间”受逻辑所限,需要维持和广播的玩家数据是有限的,但是“游戏大厅”需要维持相当高的在线用户数,所以一般来说,这种游戏还是需要做“分服”的。典型的游戏就是《英雄联盟》这一类游戏了。而“游戏大厅”里面最有挑战性的任务,就是“自动匹配”玩家进入一个“游戏房间”,这需要对所有在线玩家做搜索和过滤。

玩家先登录“大厅服务器”,然后选择组队游戏的功能,服务器会通知参与的所有游戏客户端,新开一条连接到房间服务器上,这样所有参与的用户就能在房间服务器里进行游戏交互了。

游戏后台架构展望

游戏后台架构是由游戏玩家地需求不断地改变,对应的游戏设计者(或者说游戏策划)对游戏有了更高更新的需求,游戏后台的整体架构也就会发生新的变化。

从现阶段来说,伴随着移动互联网时代的到来,移动端游戏地崛起,网络游戏的计算开始逐渐往云端迁移,目前来说重度的计算都放在了云服务器上。移动客户端上只会做一些简单的运算。而目前的后台架构,在进行重度运算的同时,也基本能支撑起中国庞大的用户量,所以说在短时间内,服务器的整体架构不会有太大变化。

短期视角

从一个短视的角度来看,游戏后台的架构调整可能会更多地去适应现在的云原生技术,主要是为了解决以下几个问题:

  • 国内游戏行业产品更迭迅速,通常一款游戏可能在几个月的时间内就需要发布,并且在此基础上频繁地更新发布,利用现在云原生技术可以使开发更加地敏捷
  • 游戏DAU变化快,通常需要迅速地开服合服,并且适应高并发地情况。利用现在的云原生技术能够实现这种高弹性,易扩展的需求
  • 网络攻击频繁,将游戏部署在云上能够避免很多网络攻击

长期视角

从一个长期的角度来看,就不得不提一些现在很火的技术,Cloud Gaming, VR, AR.

Cloud Gaming

云游戏(Cloud Gaming),有时称为即时点播游戏(gaming on demand ),是一种在线游戏。目前有两种主要类型的云游戏:基于视频流(Video Streaming)的云游戏和基于文件流(File Streaming)的云游戏。云游戏旨在提供终端用户在各种设备上玩游戏的无摩擦和直接播放能力。目前有诸如onLive, Gaikai等游戏商正在做这方面的应用。

  • Video Streaming
    所有的游戏逻辑都在云上,客户端只负责发送用户输入,并且接收视频流进行播放。
  • File Streaming
    绝大部分游戏逻辑都在云上,一小部分在客户端上,客户端也负责发送用户输入,并且接收文件流进行处理,播放。

优势

  • 不需要昂贵的硬件设施,也不需要对系统,软件进行升级
  • 可以在任意OS或者设备玩游戏
  • 即时游戏
  • 容易进行数字版权管理(DRM)

劣势

  • 视频压缩。通常进行视频传输的时候,都会进行一定的压缩,而这个压缩通常会降低画面质量
  • 带宽。Cloud Gaming需要大量的带宽,onLive需要5Mbps的带宽来支持它的游戏,这是一个很严重的问题,如果玩家多了的话,即时对于云服务器也是一个很大的挑战
  • 延时。因为所有计算都在云上进行的话,本地游戏没办法即时响应你的动作,较大的延时将会极其影响游戏体验。

基于以上考虑,伴随着5G甚至6G时代的到来,网络的进一步优化,带宽和延时的问题可能得到改善,并且随着网络的优化,可能之后的手机只需要一个投影仪,所有的计算都在云上进行,在这种情况下,那么今后所有的游戏也都会变成Cloud Gaming。

Cloud Gaming的游戏后台和客户端都将部署在云上,整体作为一个Service,这时候后台和客户端的区分将不会向现在这样是根据所在的物理机来进行区分,而是根据各自的职能来进行区分。这也顺应了云原生计算的思想

VR & AR

VR 和 AR 从本质上来说其实都是从显示层面改变了游戏体验,而且现在技术还不够成熟,有以下问题:

  • 输入方式仍然不够丰富
  • 头戴设备较重,还需要连接电缆
  • 设备的刷新频率仍然不够高,会造成长时间体验后恶心等问题
  • 设备成本高

试想如果需要花高昂的价格来进行VR的游戏体验,并且设备绝大多数时间处于空闲状态,这是对计算资源的极大浪费。那么将来的VR或者AR的计算将来也有可能会部署到云上,不过这个的难度可能就会比Cloud Gaming要难很多了。

参考文章

部分参考文章链接:What Is Cloud Gaming, and Is It Really the Future?
游戏服务器架构演进(完整版)
VR is great, but let’s be honest about its limitations

游戏后台架构发展历史及展望相关推荐

  1. 【20140429】两种游戏后台架构的简单总结

    先后遇到两种游戏后台架构,做个简单描述和对比 1. 在线架构 接入层长连接, 当玩家登录zone时,从cache拉取数据,并在zone的内存中保持数据拷贝,以后数据的修改直接在拷贝上进行,拷贝定时回写 ...

  2. service mesh(一)架构发展历史

    service mesh(一)架构发展历史 文章目录 service mesh(一)架构发展历史 数据面和控制面 service mesh架构演变 istio sidecar模式 流量治理 熔断 限流 ...

  3. 不同类型游戏后台架构的思考

    目前接触的游戏主要有两类:分区分服,全区全服. 分区分服:如果从后台架构上做区分,分区分服特点: 1.每个服都有各自独立的DB: 2.数据不互通(除非业务做跨服数据的玩法): 不同业务有着不同分区分服 ...

  4. java 架构发展历史_Java架构发展历程与Spring简介

    一.计算机架构发展历程 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 网站应用的演进 单一应 ...

  5. OR Paper Weekly (2)| 深度强化学习在库存管理、自动驾驶等领域的应用;MS主编看管理科学发展历史与展望

    作者:徐思坤,姜凯雯 精选论文(一) 论文题目:  Can Deep Reinforcement Learning Improve Inventory Management? Performance ...

  6. 我们游戏后台架构学习

    今天我们的游戏开始第一次的游客模式导入测试,出现了不少问题.这些问题主要还是基础的网络的连接这一块.但是网络连接这一块我还不是非常熟悉.有时间好好研究一下 下面是使用游戏的主要架构图和主要几个关键点 ...

  7. PCB的发展历史及展望

    印刷电路板(PCB)是由相互连接的电子元件组成的独立模块,从我们身边日常使用的电子设备,如:手机.路由器.个人电脑到复杂的雷达.导弹.卫星上,都能找到它们的身影,只是它们靓丽的光芒被设备外壳给遮盖住了 ...

  8. 从技术演变的角度看互联网后台架构

    这是去年在部门内部做的一个面向后台开发新同学的课程,因为其他BG一些同学要求分享,所以发一下. 其实内容都是些常见开源组件的high level描述,比如flask, express框架,中间件的演化 ...

  9. 游戏后台杂谈:后台的语言、系统与构架

    前言 撸主踩坑游戏后台N年,受摧残无数,在饱受蹂躏的过程中,因为工作关系,有幸见识过不少项目的架构和实现方式:也因为熟识的兄弟各奔西东自立山头,领教了一些小公司的后台生存之道.些许感悟,抛砖引玉,望高 ...

  10. 区块链架构发展和特征以及B/S、C/S、云架构

    架构 架构发展历史 pc开发架构(个人计算机) c/s开发架构(服务器/客户端) B/S开发架构(浏览器/客户机) 云计算架构 区块链 组成 技术架构 架构发展历史 pc开发架构(个人计算机) c/s ...

最新文章

  1. Tensorflow—Fetch and Feed
  2. 如何给定两个gps坐标 算出航向角_如何获得飞机的小扰动模型
  3. 搜索插入位置—leetcode35
  4. 内网突破SSL嗅探的探究
  5. leetcode 434. 字符串中的单词数(Java版)
  6. RabbitMQ学习3----运行和管理RabbitMQ
  7. SQL--合并多条记录为一条记录
  8. 卖萌屋原创专辑首发,算法镇魂三部曲!
  9. ios10不能定位 window.navigator.geolocation.getCurrentPosition(定位第一节)
  10. 新建文件的UID和GID
  11. Windows开发——内存读写API
  12. S19王者荣耀服务器维护,王者荣耀:S19新赛季更新,她没上线惨遭重做,英雄调整,界面优化...
  13. 基于微信小程序的高校课堂教学管理系统#毕业设计
  14. 清华大学计算机秦凌霄,海南25名考生获得北大清华自主招生入选资格
  15. STM8/32 芯片数据擦除
  16. vim中字母大小写变换
  17. element-联动下拉框
  18. 曲线救国使用图片url
  19. Secure Boot Violation报错
  20. 英飞凌 | 140W(28V/5A) USB-PD3.1 高功率密度方案

热门文章

  1. macOS Mojave 夜神模拟器打不开解决办法
  2. 学习之苦也正是学习之甜------知识的本质
  3. C语言文件操作FILE文件指针fopen文件打开操作
  4. PHP回纹判断_第四十八章 回纹考核
  5. word文件怎么压缩?
  6. 创建一个三维空间形状,算立方体,球体,正三棱锥表面积体积
  7. 如何批量压缩图片?教你一键批量压缩图片的方法技巧
  8. 图片双面打印顺序混乱_打印,那些你没有注意的小细节
  9. 字节跳动上班有多累?
  10. html5+简约登录页面,简洁时尚的CSS3用户登录界面设计