Wargaming平台:发行

你好!



大约两年前,我的同事Maxim(max_posedon)发表了一篇文章《Wargaming平台:Hello World》,他在其中“尝试”(他自己指定)来解释什么是Wargaming平台。我和我的同事们希望继续分享信息,这一次我们将深入探讨-如文章标题所暗示的那样,进行分发。



每个人都熟悉数字发行,我们会定期使用它,我们已经看到了数字发行的20多年了,所以我将绕过市场的理论和示例,而我将详细介绍具体的实施和经验。



Wargaming的一般分配方案



让我们从图片开始:它显示了Wargaming分发系统(WDS)的主要组件和内容的数据流。





图1



流程可以简要描述如下:游戏工作室(Game Studio)将游戏的下一个版本上载到WDS服务器,该服务器在进行必要的处理(在“内幕”部分中对此有更多处理)之后,通过分发渠道(蓝色组件)将其分发给客户端WGC应用程序。



WGC(Wargaming游戏中心)是一个桌面客户端应用程序,是用户与Wargaming平台(特别是与分发系统)交互的一种方式。 WGC从当前可用来源将更新下载到用户的计算机。



WDS具有三个主要发行渠道





是的,BitTorrent技术是更新交付的核心。我必须马上说,就绝对流量而言,客户端之间的p2p数据交换绝对是最小的通道。它的主要功能是加速具有大量WGC客户端(例如,网吧)的本地网络的负载,并减少外部网络接口上的负载。而且,使用BitTorrent可以轻松在任何所需的位置组织一个存在点。



从历史的角度来看,发行渠道“静态种子”很有趣。看一下下面的条形图:它显示了最大的消费者(即批发,最低价格)CDN流量最低成本的动态。





图2



2010年,在《战车世界》破晓之时,每10 PB或更多的订购量,一千兆字节的流量成本约为0.2美元。通过定期更新AAA游戏并吸引数百万观众,流量成本相当可观。轻松地将节点添加到任何点的能力(从地理位置/提供者的角度来看)使您可以向其拉动大量的流量。取决于CDN在一个或多个点上的存在,发行期间系统上的负载,特定游戏的发行量,即使在今天,这种工具也具有良好的经济效果。



为了使基本分发方案完全可以理解,值得一提的是有关组件的信息,在图1中将其指定为Wargaming分发系统后端。组件的主要任务:



  • 准备更新,以确保客户端下载和安装的内容最少。
  • 通过分发渠道分发更新;
  • 向客户端提供更新信息。


现在让我们快速看一下分发选项。



功能性



BitTorrent技术,尤其是libtorrent的实现(感谢Arvid Norberg),“开箱即用”使您可以以最小的成本实现:



  • 本地跟踪器和种子-与用户组和游戏工作室有关;
  • 连接多个CDN-水平可伸缩性;
  • 不同CDN的权重因子-平衡,“备用” CDN;
  • 完整性检查和恢复-游戏文件可能由于疏忽大意,清理应用程序,杀毒软件,驱动程序或物理媒体问题而损坏。


不论libtorrent,还是关于下载:



  • 预加载更新。游戏工作室只能发布更新以供下载(不安装):发布新版本时,将应用这些更新,用户将更早开始播放新版本。
  • 预负载均衡。使用大量更新,您可以平均地“涂抹”更新的初步接收,以减少分发节点上的负载并平滑峰值。


安装/更新游戏:



  • 补丁。用户仅下载游戏中缺少的部分,并进行正确压缩。
  • DLC。可以根据用户的选择或根据游戏的逻辑来选择加载某些内容。
  • 客户类型。该游戏可以让用户选择要下载的“客户端类型”(例如,《战车世界》:可以在标准纹理(SD)和高清纹理(HD)之间进行选择,这使没有系统的用户不支持最大的图形设置。 )。
  • 迷你客户端。游戏工作室能够玩直到完全安装,并且能够确定启动游戏所需的最少文件集。


其他:



  • 安装可再发行组件。
  • 在安装/卸载过程中运行任意安装程序。




引擎盖下



零件和补丁



游戏可以分为几个部分,这些部分指定了一定的安装顺序。这使游戏工作室能够:



  • 仅将所选游戏语言的内容交付给用户;
  • 实施游戏的最低限度必要部分,以启动游戏并首先交付它;
  • 将某些部分指定为DLC,并允许游戏/用户单独请求它们。


要安装部件,必须交付并应用一个或多个补丁。该补丁的核心是带有LZMA2编解码器的7z存档。可以根据游戏内容的类型来更改压缩级别。要从头开始安装游戏,补丁必须包含游戏特定部分的所有内容。如果这是更新,则补丁仅包含所需的差异。使用以下算法逐个文件计算此差异:





第一种算法是基于块的,第二种算法提供了复制任意长度的部分并重复的功能。根据更改的性质(插入,删除,替换),在文件中进行更改的位置(开头,结尾,中间),它们的大小,文件冗余,其中一种算法可以大大优于另一种算法,或者根据生成的差异文件的大小,或通过其在用户计算机上的应用速度。WDS针对特定情况选择最佳二进制差分算法。



激流



要下载补丁,将按版本准备种子文件,WGC客户端从WDS后端接收必要的信息,并使用必要的种子启动种子会话。



如已经间接提到的那样,种子是CDN(网络种子),静态种子(具有基于libtorrent的客户端的特殊准备的机器),WGC客户端本身以及具有所需种子的任何torrent客户端。从以下来源获得这些种子的洪流会话:



  • WDS后端;
  • 洪流跟踪器;
  • DHT ;
  • LPD ;
  • PEX


一些提供程序阻止BitTorrent协议本身或* .torrent文件的下载。由于从Webseeds进行下载是通过HTTP进行的,而* .torrent文件本身是通过HTTPS下载的,因此这种阻塞对我们而言并不重要,因此游戏仍将交付。在最坏的情况下,来自“静态种子”和p2p的流量将消失。在美国,有些情况是提供商要求安装其证书并进行过滤,包括HTTPS流量(不是很好),在那里找到了一个种子文件并将其阻止。但是突然更改了torrent文件的扩展名,就可以下载该文件,也就是说,筛选器仅在内容名称级别。



WGC目前正在建立多达50个分配通道连接。可以在同一个CDN上建立几个连接,从而可以更有效地利用其节点与客户端之间的通道。除此之外,主CDN使用BBR拥塞控制算法,该算法被认为是贪婪的,并且很好地利用了信道。此配置可提供最高的带宽利用率,以实现快速的游戏交付,但是当然,在更新过程中,将Internet连接用于其他应用程序的舒适性可能会受到影响。目前正在进行一系列替代配置的测试,在不久的将来,我们可以预期连接数量会不断减少,而舒适度却会提高,但不会对传输速度产生明显影响。



为了以防万一,在这里我想再次强调,任何网络活动都会影响游戏客户端的流量质量,这一点至关重要。这就是为什么在游戏运行时,WGC在没有游戏客户端明确要求的情况下不执行任何网络操作(例如,授权操作)的原因。



在安装更新



补丁的下载和解压缩过程是并行组织的,如下所示:



  • 开始下载补丁,将下载优先级更改为带有存档头的部分。
  • 收到存档的完整标头后,将开始解压缩过程,并立即解压缩从网络接收的数据。
  • 解压缩后的数据将保存到磁盘。
  • 下载的补丁也保存在磁盘上,因为并非所有碎片都需要在接收时解包,并且分发给其他人也不需要。
  • 处理后,根据游戏工作室提供的配置,补丁文件可以留在磁盘上或立即删除。


解包和应用二进制差异的过程发生在一个单独的过程中,它使您可以通过OS控制其系统和I / O优先级。在此功能之上,还有一个自定义的“ turbo”设置,该设置将加快安装过程,但与其他应用程序争夺资源。默认情况下,WGC依靠舒适度在低资源模式下运行,但是在首次安装时,WGC会向用户说明他可以选择。



性能



更新量



最小化下载数据量是我们系统的主要任务之一。与Steam方法(游戏客户端的处理数据的离散度为1 MB)相反,我们在构造二进制差异时经常使用字节进行操作。此外,这些字节的块可以添加到文件的任何部分,也可以从文件中删除。因此,《战车世界》和《战舰世界》的预定版本更新通常具有1-2 GB的容量,而在Steam上下载的相同版本的游戏则需要下载约5 GB。《战舰世界》是通过Steam分发的,因此该数据会定期获得,而《战车世界》的数据则是从特殊测试下载中获取的。



所需的用户磁盘空间



对于最小量的下载数据和p2p,您必须使用操作来安装和更新客户端所需的磁盘空间。目前,用户需要的空间比游戏客户端占用的空间还多:这样的缓冲区最多可以占客户端大小的一半。我们正在努力降低此值,并且在不久的将来有可能将其固定为不超过2 GB,考虑到现代游戏的大小,这已经可以接受。但是还有一个重要功能:要更新游戏(在现代世界中是常规活动),相对较小的缓冲区也足够了,对于大多数游戏补丁来说,这已经是大约4 GB。同时,其中一些解决方案需要的磁盘空间是游戏客户端占用的磁盘空间的两倍。





我们进行了一系列测量,以比较在相同网络通道速度下WGC和Steam中的《战舰世界》客户端的安装速度。当使用标准WGC安装模式时,两个系统都显示几乎相同的结果(在这种实验中尽可能记录下来,甚至考虑到最干净的系统,定期重新启动等)。使用“涡轮”时,腔室的平均WGC增益为完全安装时间的5%至7%。我们还必须考虑到这样一个事实,即为了获得相同的条件和或多或少的稳定带宽,两个系统的网络接口带宽必须被低估。考虑到WGC更加强烈地利用了网络信道(请参阅Torrent部分),在不对定制计算机进行额外限制的情况下,游戏初始安装的速度明显提高。



最后的话,还是这里没有



Wargaming平台,尤其是Wargaming发行系统,是具有十年历史和数十种不同技术和编程语言的大型软件系统。在本文中,我们仅了解高级分发方案及其主要特征。由于本文的非橡胶内容,系统体系结构,大多数技术,开发过程,发行版,操作,发行的地理细微差别,WGC应用程序本身及其所有非发行功能以及更多内容都被排除在括号之外。这仅意味着我正在等待有关本文的问题,尤其是有关评论中未包括的问题。好的代码,祝大家好运!



All Articles