简介:网游云上网络优化方案

1. 游戏行业背景

1.1 行业概况

2019全球数字游戏营收1094亿美元,其中中国市场328亿美元。国内游戏⽤户数6.5亿;移动端
(60%)>PC端>主机。移动游戏占⽐逐年增⻓已成为绝对的主流。国内公司近3万+,近200上市,Top10:腾讯53%,网易15%,三七,中手游,世纪华通,完美,搜狐畅游、游族、多益,紫龙互娱。
趋势:业务上融合电竞赛事/直播往社交化、多元化发展;技术上通过AR/VR/云游戏等来提升体验。
政策管控:18年开始趋严,文化部管运营备案;广电总局管版号,19年只有数百个版号。

1.2 业务类型

  • 分类维度:终端、题材、美术风格、玩法、架构
  • 终端:端游、⼿游、页游、主机
  • 玩法:MMORPG、ACG、MOBA、RTS、FPS、SLG
  • 风格:武侠、魔幻、写实、⼆次元
  • 架构:分区分服、全区全服、全球同服

2. 游戏技术特征

2.1 核心技术逻辑

对于任何网络游戏而⾔,同步是⼀定要解决的核心问题,甚至比游戏玩法逻辑本身还重要,什么是同步?同步是网络游戏的基础,通过网络通讯来确保同屏玩家看到的游戏世界中每个游戏单位的位置、世界场景、状态属性都要保持⼀致。即:客户端的表现要⼀致,同时客户端与服务端的数据要⼀致。业界主要有两种同步方式。

状态同步


图1

状态同步玩法逻辑(比如战⽃逻辑)写在服务端,服务端作为逻辑控制层,客户作为⼀个表现层,玩家对象数据在服务端生成并维护,客户端中玩家对象的所有动作都会通知到服务端,服务端进⾏逻辑计算并将结果同步给所有客户端,客户端执行表现(播放动画、特效并修改玩家对象的属性显示),这种方式下,客户端的数据只能由服务端的指令来修改。
优点:安全性极高,防外挂能力强;断线重连⽐较好实现,无非就是把整个场景和⼈物全部重新⽣成⼀遍发给中途掉线重连上来的客户端去表现即可。
缺点:服务端压力较大(所有动作的计算逻辑需要在服务端上做),网络交互流量大,实现难度大,开发效率低。(通过分区风服来平行扩展);对于格⽃竞技竞速类,玩家动作、位移、⻆度的切换⾮常频繁且快,也需要比较强的同步校验,这时状态同步无法解决。
典型游戏:状态同步对网络延迟的要求并不高(玩家表现层是不是⼀致没有太大关系,只要结果⼀致就行),
⼀般RPG游戏在200-300ms的延迟也能玩下去,如MMORPG,魔兽世界、天龙八部等。

帧同步


图2

帧同步也叫指令同步,玩法逻辑写在客户端了(比如战斗逻辑),客户端所有动作生成⼀条指令发给服务端(比如攻击对象B),服务端收到指令后什么也不做,直接转发给所有客户端,客户端收到指令后执⾏逻辑计算并执行表现层(播放动画、特效并修改玩家对象的属性数据)。
优点:服务端压力小(仅仅起到⼀个转发的作⽤),网络流量小,能做到更好的及时反馈及细节反馈的⽤户体
验。
缺点:容易外挂,断线重连会⽐较繁琐,需要在客户端重放每⼀条指令。
典型游戏:RTS、moba等即时对战类游戏,对同步性的要求很高,⼀场战斗的人数是确定的。王者荣耀、魔兽争霸3、所有格斗类游戏等。实时性要求非常高,要求RTT小于50ms才能有流畅的体验。

2.2 典型技术架构

分区分服:典型MMORPG

MMORPG 大型多人在线角色扮演,如魔兽世界,剑灵,天龙八部


图3

特点:玩家之间强交互、实时性要求⾼、全⾯的游戏世界系统。

  1. 业务流:特征,交付实时性,主要压力在哪⾥(网络、cpu、内存)。
  2. 数据流:对数据库的访问逻辑,压力情况。
全区全服:典型MOBA

分少量几个大区、分服对用户不可见;或者全局对客户不可见,应⽤层按⼀定算法进行分配。
ACG/SNS:休闲竞技类
MOBA(Multiplayer online battle arena)匹配开房间类,大逃杀吃鸡类(MOBA+FPS)王者荣耀、绝地求生;堡垒之夜。
特点:休闲竞技类,匹配玩法,需要大量的可匹配玩家,匹配后生成战斗服。


图4

全球同服:典型SLG

为什么要做全球同服,是⼀个运营需求还是⼀个技术需求?不是所有的游戏类型都适合全球同服。
特点:游戏对象之间弱交互,实时性要求并不高,300ms内的同步延迟可接受;卡牌,SLG等,如COC:往往有3种架构:

  1. 服务端全集中部署,优化接入网络(加速器、DCDN)。
  2. 全分布式部署,服务端应⽤+数据都分区域部署,做区域间数据同步。
  3. 服务端应用层分区域部署,数据集中部署,通过区域缓存+高速通道(专线方式访问DB)。

数据⼀致性问题:⼀个玩家断线,缓存数据还未落地,玩家重新登录被判定到另⼀个区域登录了,可能获取不⼀致的角色数据;需要gamesvr判定上一次登录在哪个区域,通过⼀个全局服务去通知对方gamesvr下线玩家并回写数据,然后再预取数据。


图5

2.3 技术痛点及诉求

游戏业务最主要就是要求服务端逻辑处理的实时性和高并发支撑能力,玩法逻辑和数据都在⼀个进程是最理想的方式,但往往因为性能容量的限制,⽬前主流都是逻辑模块拆分、分布式部署,同时又要控制分布式调⽤的链路和次数来控制延迟的目的;对于运行时数据基本都是在内存进行处理(如共享内存),玩家角色的结算/存档数据以固定周期持久化。


图6

基于以上游戏技术特征分析,总体来说对游戏对技术层⾯的诉求优先级是:网络>计算>安全>数据库。
在网络方面核心痛点其实就是如何解决网络延迟、丢包、抖动对玩家卡顿、掉线等体验的破坏,随着服务端技术更新和同屏玩家数量的增加,对游戏服务层的并发访问、稳定性、⽹络延迟也有了越来越高的要求。

3. 游戏网络优化

游戏体验的优化是⼀个系统工程,需要多种优化手段联合作用,业界很多的精力是放在逻辑层的处理上,纯网络层面的优化只能说是一方面,以下基于云环境的网络优化方案进行阐述。

3.1 游戏单服网络能力

对于状态同步的MMORPG类游戏,每⼀次网络同步的数据是整个游戏世界场景的所有单位的属性、状态、行为判定等数据,同步量大,网络吞吐要求高,以⼀个单服设计容量1万在线的MMORPG游戏来说,通常⼀次网络同步的包大小在512byte左右,单⽤户评估带宽30kbps,则出网卡吞吐、包量能力需要的值:

以上是出公网的网卡的流量,GameServer还存在内网通信的需求,因此在这种场景⼀般建议是选择能⽀持百万级别pps的实例,如:
ecs.c6.4xlarge 依托神⻰架构,将网络虚拟化功能卸载到专用硬件,提供了更⾼的网络io承载能力和稳定性。
同时建议将网络中断分散给不同的vCPU处理,提升网络PPS和带宽性能。即开启网卡多队列功能:


图7


图8

3.2 玩家接⼊网络加速

这块主要是玩家到游戏服的公网链路上进行加速。

基于加速器优化玩家接入

加速器与游戏是天然关联的两个行业,主要解决玩家与游戏服因物理距离遥远而出现的延迟、丢包等情况对游戏流畅度的影响,这在国内玩家访问海外游戏服的场景中很常见(比如某些游戏国内禁止发行而国内玩家只能登陆海外服来体验),玩家可以购买各类加速器产品,或者使⽤游戏客户端⾃集成的加速产品来实现链路优化,在云上要构建这⼀层加速其实已经⾮常简单,甚⾄直接利⽤云的架构轻松实现⼀个加速器产品。


图9

具体流量路径

  • 在上海VPC和⽇本VPC建⽴高速通道实现两地ECS内网互通。
  • 在两端地域ECS之间建立隧道协议,GRE或VXLAN,分别绑定本地地域EIP。
  • 国内玩家通过公⽹VPN连接到上海上车点ECS,经过隧道接⼝路由到日本下车点ECS。
  • ⽇本ECS接收到去往游戏服的数据包从日本本地EIP出去,同时回程路由到隧道接口发给上海ECS。
基于DCDN动态加速页游

对于页游、H5小游戏等产品由于其⾛http协议,轻客户端模式动态逻辑中也包含有⼤量静态资源,这类游戏往往是全区全服单地域覆盖全国,网络上的主要痛点是:玩家跨运营商跨地域访问游戏服,网络传输拥塞的时延、丢包等情况严重影响用户体验,同时客户自行去做动静分离、动态加速等方案需要大量的时间、成本投入。


图10

全站加速(DCDN)通过动静分离、边缘缓存、智能路由、压缩传输等技术,解决跨运营商、网络不稳
定、单线源站、突发流量、网络拥塞等诸多因素导致的响应慢、丢包、服务不稳定的问题,提升动静态混合、纯动态站点或App的加速性能和访问体验;这种比较适合如三七页游、抖⾳小游戏等,其实对于⼀些重度游戏的全局⾮战斗模块、周边系统等也能接入DCDN来进行全局加速。

基于CEN加速特定地区玩家

国内地域⼴阔,游戏服虽是尽量做本地覆盖,但出于成本因素对于有些偏远地区还是覆盖不全,这部分玩家涉及跨运营商跨地域的远程访问游戏服,游戏掉线、卡顿时有发⽣,⽐如对于新疆、⻄藏、宁夏、⻘海等地域,游戏服在部署上基本不会做本地覆盖,如果拉近游戏服与玩家的距离?⽬前基于阿⾥云有种可行的方案是:SLB+CEN+游戏服(跨地域)。


图11

该⽅案对于没有POP点、anycast⽀持的地域比较合适,相当于SLB挂载跨地域的ECS(白名单开放),拉近游戏服到用户侧距离。

3.3 全球同服⽹络构建

这块主要是基于专线的加速方案,在全球同服游戏类似中,数据传输需要跨运营商、跨多国通信,这对⽹络质量提出更高的要求,当然⽬前能实现真正意义上的全球同服游戏其实没有,主要还是对即时性体验要求不高的SLG、卡牌等类型,游戏对象之间弱交互,实时性要求并不高。

基于GA全球加速

GA利⽤阿⾥云全球传输网络,实现全球用户就近接入和跨地域部署,减少延迟、抖动、丢包等网络问题的影响,按区域覆盖玩家。


图12

GA为每个接⼊加速区域的地域分配⼀个加速IP,客户端流量通过加速IP就近从接⼊点进⼊阿⾥云加速网络。进⼊阿⾥云加速网络后,全球加速可以智能选择路由并⾃动完成网络调度,然后把客户端的网络访问请求送达至最佳终端节点,避开公网的拥堵,达到减少时延的效果。

基于Anycast EIP 加速

同样全球同服的场景,Anycast 主要解决多国多地域的跨网通信链路的质量问题,通过单个ip覆盖全球的加速能力,这大大简化了游戏全局模块的部署问题。


图13

阿⾥云⽬前在全球各地域部署anycast pop点,覆盖地域/国家通过这些点来就近接⼊,部署在HK的游戏
服只需要⼀个ip,通过Anycast路由协议在多个Anycast POP点发布该ip,pop点通过专线连接部署在阿⾥云VPC的游戏服务。

我们是阿里云智能全球技术服务-SRE团队,我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队;提供专业、体系化的SRE服务,帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统,提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云,让客户云上业务运行更加稳定可靠的技术,您可用钉钉扫描下方二维码,加入阿里云SRE技术学院钉钉圈子,和更多云上人交流关于云平台的那些事。

原文链接:https://developer.aliyun.com/article/783629?

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

网游云上网络优化方案相关推荐

  1. 云服务器配置网站卡顿,大型网游云服务器要多大配置才能解决卡顿等问题?

    用云服务器做游戏服务器自然是可以的,要是私人玩没有那么限制,一般1核2g的新睿云服务器就能够满足2-4个用户的需求.2个人玩的话一年也不卡,4个人勉强能玩,6个的话就会很卡.如果4个人以上联机玩,那么 ...

  2. 华为云开发者官网首页焕新升级,赋能开发者云上成长

    摘要:近日,华为云开发者官网首页迎来全新改版升级. 本文分享自华为云社区<华为云开发者官网首页焕新升级,赋能开发者云上成长>,作者: 华为云社区精选 . 近日,华为云开发者官网首页迎来全新 ...

  3. 网游服务器通信架构设计

    随着网游从业者的规模和需求不断扩大,越来越多的朋友进入了网游开发这个领域,使得市场中网游开发技术相关的需求量迅猛增长.目前,网游行业比较紧缺的是具有较深技术功底的"专家型"开发者, ...

  4. 华栖云携阿里云首发云上电视台服务:致力于把电视台搬上云端

    5月23日,华栖云携手阿里云宣布,正式推出国内首个"云上电视台"解决方案,致力于为视频节目制播单位打造一个云端媒体核心生产业务资源平台,提供高清视频在公共云上安全的采.编.播.存. ...

  5. 网游服务器通信架构的设计

    转自:http://www.cppblog.com/jack-wang/archive/2009/01/02/70963.aspx 随着网游从业者的规模和需求不断扩大,越来越多的朋友进入了网游开发这个 ...

  6. 阿西莫夫50年前预言,网文网游正媾和——王冠雄

    "2014年,机器做工作将会比人类做的更好,因此人类将陷入无边的无聊中,这种无聊会越传越广,且每年大量递增."--这是科幻大师阿西莫夫50年前的预言,各位,想必感同身受? 在人类越 ...

  7. 互动赠书 | 云上云下K8s多集群如何实现集群管理和安全治理的一致体验?

    作者|郝树伟(流生) 以 Kubernetes 为代表的云原生技术不仅屏蔽了各个云厂商和数据中心在基础设施上的差异性,还使得应用可以在不同的云上使用标准化的方式描述和部署运行.在此基础之上,我们才可以 ...

  8. 日志审计携手DDoS防护助力云上安全

    简介: 本文主要介绍日志审计结合DDoS防护保障云上业务安全的新实践. 日志审计携手DDoS防护助力云上安全 1 背景介绍 设想一下,此时你正在高速公路上开车去上班,路上还有其他汽车,总体而言,大家都 ...

  9. 奉上一份云上数据安全保护指南

    阿里云资深安全专家黄瑞瑞 本方案的目标是为用户提供从底层云平台数据安全到上层的云上环境保护,并标明各层次模块,让用户可以像建房子一样,一层层的搭建可信的在云上数据的安全保护.在各横向层次模块之外,云上 ...

最新文章

  1. PyTorch算法加速指南
  2. 干货丨最全技术图谱:一文掌握人工智能各大分支技术(经典好文,值得收藏)
  3. iOS 本地时间与GMT时间相互转换
  4. 聊聊 Service 命名与设计
  5. OSI七层模型的作用
  6. Maven包装过程中跳过测试
  7. java充血模型orm框架,关于领域驱动设计和贫血、失血、充血模型
  8. 利用pushState开发无刷页面切换
  9. 创强教师办公用计算机配备要求,信息技术如何开展“创强”.doc
  10. vue 判断是否是微信浏览器
  11. shadowdocksc错误;端口已被占用
  12. Unity强化学习之ML-Agents的使用
  13. Spring Boot2 系列教程(三十三)整合 Spring Security
  14. Win10离线安装choco方案
  15. ValueError: You are trying to load a weight file containing 0 layers into a model with 16 layers.
  16. 解决win10只有IE可以上网,其他浏览器都无法连接网络
  17. (每日一练c++)组合总和
  18. 一个程序员单枪匹马,靠一个网站一年赚1个亿
  19. Scrapy爬虫报错HTTP status code is not handled or not allowed
  20. QGIS输出地图图片操作指引

热门文章

  1. Apache Flink 零基础入门(三)编写最简单的helloWorld
  2. 从零开始学习docker(十六)Swarm mode 创建集群
  3. 收藏 | 49 个 Python 学习资源
  4. 用fft对信号进行频谱分析实验报告_FFT分析频谱无泄露的条件
  5. broker可以禁用吗 time_很多人会问Win8.1系统Runtime Broker是什么进程?可以禁用吗?带着这两个问题...
  6. 点击button时候传递一个参数实现局部刷星_Tkinter的一个小小的规则,如果不了解,可能不会解决掉这个问题...
  7. o型圈沟槽设计_深圳综合O型密封圈ID544.4MM*8.6MM报价-星湖蓝海科技
  8. java gc 触发_Java GC种类和触发时机
  9. python打开哪个答案_关于 Python 文件的 ‘r’ 打开模式,哪个选项的描述是正确的?_学小易找答案...
  10. 机器学习:梯度下降法,几种实现策略