光环网络:采访克里斯屠夫

克里斯屠夫是四个之一工程领导Bungie工作室他们负责监督轰动”的创建《光晕2》”。如果你读过我们的文章《光晕2》的人工智能你已经知道,克里斯是一个非常聪明的家伙。当我访问Bungie 11月3日我有机会坐下来与克里斯两次。

最大的区别之一《光晕2》,原来的“光环”,《光环2》可以在Xbox Live。为了拉,Bungie必须创建一个新的网络光环多人比赛在互联网上。这一责任落在很大程度上克里斯的肩膀。在我的第二次面试我们讨论了网络”光环2。”

广告

Bungie正在向世界《光晕2》的多人。
照片由Bungie.net

现在,而不是把这篇文章在传统的问答形式,你习惯看,我要让你阅读克里斯不得不说些什么。因为事实上我只问克里斯一个问题:

“所以,必须做些什么来把《光环2》直播吗?”

继续阅读他的回答。

广告

现在在一起

“晕1什么是被称为同步网络。”
照片由Bungie.net

克里斯屠夫:

“晕1是一个网络游戏,因为你可以玩它了局域网(局域网)与系统链接。这是一个非常成功的一部分。我们真正想做的《光环2》是网络模型和扩展到互联网,这样你就可以在Xbox Live。

广告

“晕1”网络是什么被称为同步网络。这意味着如果你有许多不同的应用程序和软件的实例运行在不同的机器上。在这种情况下,四个便携电脑游戏。这些机器都运行相同的游戏模拟和游戏模拟是确定的。这意味着如果你提供相同的仿真输入就会产生相同的输出,当您运行代码。我们用这一事实来利用多人游戏。相反(信息)发送给每台机器,每一条信息在整个游戏18luck手机登录世界发生了什么,而不是我们发的是,“这里是输入,我们提供游戏模拟在这一刹那的时间。”

现在我们的游戏运行以每秒30蜱虫,因为NTSC 60赫兹。所以我们运行一个游戏屏幕的蜱虫每2平....我们一次渲染一帧,帧速率是每秒30帧。我们每次运行游戏,机器样本的玩家在游戏中所做的那一刻。喜欢,他们在做什么控制器是否跳或车辆,把三度到左边,把火按钮……或类似的东西。

然后发送信息的玩家在游戏中输入模拟所有18luck手机登录其他机器。它也接收信息从所有的球员不是在本地18luck手机登录机器上,所以这意味着每台机器同时具备所有的输入需要和他们一起运行仿真……然后所有的机器知道每个玩家的行动是世界上和后果,和所有机器的后果是颁布了……所以世界的状态是整个机器保持一致。”

广告

这里谁负责?

这个网络模型”的是如果有一个错误在两台机器的计算机代码可以提供相同的输入而得到不同的输出,可以有问题。”
照片由Bungie.net

克里斯屠夫继续:

“光环也基于客户机/服务器的网络模型,即一台机器在游戏游戏的服务器,然后每个人都加入它使机器的主人。如果你是客户,你向服务器发送你的行动,然后当服务器收到每个人的行动然后发送大家的集体行动,所有客户。这就是我们要确保每个人18新利最新登入都在同一个游戏在一起。

广告

它实际上是相同的我们使用的网络模型马拉松从前,虽然马拉松了一些bug。该网络模型的事情是如果有一个错误在两台机器的计算机代码可以提供相同的输入而得到不同的输出,可以有问题。有很多不同的方法,可能发生。它可能是一个错误,您使用的是一些随机的垃圾电脑中的内存,将随机从机器到机器。这将是糟糕的。

另一件事是我们没有在所有机器上运行相同的仿真。当(服务器)发送信息行为发生在所有的机器上(不)寄给每一个18luck手机登录人。这将是一个纯对等模型如果我们寄给每一个人。

事情是这样的,我们运行仿真和运行,这是一个我们所做的一部分,然后每一帧,我们也要做的事情只是为了当地的球员,就像你必须找出他们的第一人的武器,他们是否重载或投掷了一枚手榴弹。我们实际上呈现他们的世界观。

这些行动——因为他们只发生在一台机器上——这些行为不能被允许影响世界的确定性状态。所以我们有一个内部分离我们的游戏。这是确定性的东西——这是世界上所有的对象以及他们如何移动。18新利最新登入这个东西是不确定的,在本地机器上的声音,你可以听到,你与你的图形渲染和一些其它的东西。我们已经把这两个分开。

如果我们让他们分开,那么比赛将在其他机器之间的同步。但是如果他们没有正确分离,如果两者之间传输信息,机器就会发散的模拟,你未必会注意,因为一台机器可以像这里的球员18luck手机登录但相同的球员在一个稍微不同的地方在别人的机器上,所以你可能不一定注意到,除非你尝试对他们开枪,子弹击中了他们以这样一种方式,他们在一台机器上,错过了另一台机器上。然后散度基本上瀑布这样直到最后游戏完全不同的在不同的机器上,然后当然是毫无意义的。”

广告

《光晕2》的新网络

克里斯屠夫继续:

“所以的事,因为客户端发送服务器自己的行为和服务器发送回客户机你必须有一个在客户机和服务器之间往返。这一规定发挥的作用很好,在当地的区域网络。之间的延迟可能是两个或三个毫秒。你知道,如果你使用XB连接软件你可以有一个电脑,隧道交通从你的Xbox在互联网上,你可以在互联网上人们之间的工作。但我们的经验是,因为你是一个客户,你必须等待为你从您的服务器往返的行动去做任何事情。你所有的运动或你的射击滞后一些。我们要避免与《光环2》是设计一个网络模型很容易。

广告

所以搬到《光晕2》…发送你的行动而不是从机器到机器,我们要做的是我们还有一个客户端和服务器,而不是客户机等待服务器告诉它应该发生什么,客户预计整个世界。它模拟是世界上完全按照它认为事情应该发生,这将是完全与服务器同步。客户端并不知道的事情是其它来源的输入,像其他玩家在游戏中。

所以当你把这个模型可以预测自己完美,所以你能跑能跳,电梯和所有这些事情你可以预测客户端的玩家盒子做的很好。进来的差异在哪里当你与他人互动。客户预测,其他球员正在离开是因为最后一个信息从服务器说,但如果他们搬到这个时候,可能会有轻微的差异。18luck手机登录

这些都是网络的类型的工件模型。,当你与一个集体从其他来源的输入机器,你会看到陌生不匹配你的预测世界是在你的机器上。所以我们这样做的方式是我们仍然需要一个客户端服务器/模型但是客户机发送服务器不仅信息这些按钮将我所做的事,但它是在一个更高的水平,它是世界上的信息我在哪里,知道我在做什么。18luck手机登录所以不是说我调整操纵杆力23度,它就会说我在疣猪,我在这里,我开车在这个方向。

你也向服务器发送的事件流说这是我认为发生在我的世界。就像我觉得我投掷了一枚手榴弹,我认为我中伤说那个家伙,我打了他的头。然后会发生什么是服务器处理这些流从每台机器——这是所有版本的事件。发生了什么是服务器也运行仿真本身。不同的是,它不是预测;这是权威。它负责所有的事情发生在比赛。”

广告

例如

“服务器的唯一的机器,可以创建一个破坏对象和做其他事情喜欢伤害人或奖杀死了之类的。”
照片由Bungie.net

克里斯屠夫继续:

“如果我是客户,我扣动扳机,扔了一枚手榴弹,我创建一个手榴弹。我将播放动画,播放声音。但手榴弹(实际上的影响世界)——我不允许创建,因为这是一个行动,要求当局这样做。服务器是唯一的机器,可以创建一个破坏对象和做其他事情喜欢伤害人或奖杀死了之类的。那么会发生什么是客户向服务器发送请求,比如“我请求扔了一枚手榴弹。服务器会说,好吧我相信你说你因为我的知识在这个位置,这是符合我的版本的事件。所以从本质上讲,客户端发送的版本之间有相互作用事件服务器和服务器试图调解他们和创造世界的权威版本。然后发出权威版本为世界上的每一个人。

广告

所以投掷了一枚手榴弹的完整的事件顺序是:我扔了一枚手榴弹,我看到动画,我听到声音,然后一些的毫秒数后,服务器将开始发送信息这世界上新对象创建的手榴弹,结果我的行为。18luck手机登录所以从用户的角度看,你看到这个榴弹出现在半空中,这一切欺骗和预测让它看起来像这些复杂的相互作用。交互喜欢寄宿别人的车基本上是由五、六种不同的来自服务器的消息。你在车上,你开始动画董事会他,他被踢出,他在这里。所有这些事件之间的交互从服务器发送作为一个单独的消息。”

一切都在正确的位置上

“那客户端可以使用这些信息来预测或许下一个300毫秒之前的是18luck手机登录什么样子的家伙会。”
照片由Bungie.net

克里斯屠夫继续:

“拼图的最后一块是客户你想提供一个一致的世界观的球员。服务器发送你是什么也许是发送你4更新第二个球员你附近的运行和射击。基本上第二个你要的四倍,“这就是球员,这是他的世界上,这是他在做什么。”So if you were to just present that the way it is sent, the client would see a lot of jerky, stuttering behavior because it's not necessarily a smooth packet that's coming from the server.

广告

我们有管理对象的代码,在预测客户端。基本上它试图消除的球员在世界上发生了什么。例如,而不是发送球员的他在这里,他在这里,他在这里。“服务器发送,”他在这里,这是他在做什么,这是他去的方向。然后客户端可以使用这些信息来预测未来可能300毫秒之前的是什么18luck手机登录样子的人会在那里。因此而不是看到一个男人混蛋,混蛋,混蛋,混蛋,我看到他在这里,他东奔西跑东奔西跑。

一旦你预测人的行为你主要应用平滑消除这些差异在传输数据,这样你看到的人。也许他的运动的范围并不是完全一致的,但我们不混蛋他从一个地方到另一个地方。我们他加速或延缓他的基础上,我们认为他需要在那个时间点上。当然你做同样的汽车,世界上的物理对象,一切都像这样。

所以问题本质上……服务器必须生成这从客户的信息。18luck手机登录和他们是18新利最新登入如何做到的?我们这样做是有两种不同类型的服务器可以发送的东西:有对象的持久性状态和发生的事件。

想象的持久性状态这球衣放在桌子上,它在这个位置(Chris移动球衣)或者是在这个位置上,对吧?对于世界上的每一个对象,服务器跟踪信息已经改变了什么对象,这机器是这个信息被发送。18luck手机登录

例如,如果我扔了一枚手榴弹,还有一大堆的对象在这个位置和他们去飞行,他们最终会在新的地方定居。这些对象将标记。他们的新位置需要发送到世界上每个人都因为他们的位置已经发生了改变。

但还有很长的路要走的人不太关心这些对象,因为也许他们战斗的地方。但当他们来这个位置他们最终会想要这些对象在正确的位置。这意味着,这些对象是低优先级,因为他们很长一段路要走。但最终因为他们需要传播。所以随着时间的推移,这些对象的优先级会上升,上升直至最终通过阈值发送。”

广告

让事情的轻重缓急

克里斯屠夫继续:

“基本上,系统还记得发送什么人。它知道我有5000条信息,我喜欢你,但我只能给你也许50这个包,因为特定大18luck手机登录小的网络只允许数据包,传播一定比例以疏通网络。

广告

因此,找出最重要的事情是基于你在哪里,你在做什么,不管你是活着还是死了,无论你是射击的人。你知道如果我开枪射击,他们的人在我面前,我需要知道他们在非常高的优先级。但是,如果有人在我身后,我看不到,我不需要知道。服务器的优先级决定了对象。有很多规则的事情。手榴弹有50到70之间的优先级,但只是一个躺在地上的小对象,也许不是一个优先级,10至20你知道,之类的。有情况下,低优先级的对象不会呈现在所有从客户端。

基本上有两种类型的数据得到优先。有对象的持久性状态最终总是会被发送。他们可能会需要很长时间的原因,如果有物体移动的持续低优先级,那么你不想发送对象,直到你看到它的信息。18luck手机登录您可能希望一个更新每10秒说在一个低优先级,“这里。”The priority system manages the priority of the objects, the time since it was last transmitted and how much information is needed to transmit that data.

有持久状态,还有一个流是世界上发生的事件,像一颗子弹撞了南墙或一些人说“开始”,因为他被杀。这些事件我们不需要发送的信息。18luck手机登录如果有必要将事件,我们会的。例如,如果我炸毁一百万手榴弹在多人比赛,其中许多手榴弹就结束掉下来,因为他们无法进入管道不够快。他们会被丢弃,无关紧要。所以有这种平衡之间的事情你必须和那些世界上给你更好的照片,但不是必要的。

这种分离的数据意味着我们可以支持各种各样的有趣的事情。例如,因为每一个客户端发送实体世界的持久状态(实体是世界上我们所说的持久对象),这意味着对世界的任何客户的所有信息。18luck手机登录因为客户知道关于这个世界的一切,我们可以支持使其成为一个新的服务器,如果服务器机器关掉,断开Xbox Live或只是想离开游戏的玩家。所发生的是,游戏暂停,确定一个新服务器,控制转移,游戏还在继续。在一个局域网游戏也是如此。所以你可以完成一个游戏完全不同的球员比开始的时候,因为我们有技术复制这些信息并重新分配一个新的服务器。18luck手机登录

Xbox live的潜在可能是非常令人兴奋的。有各种各样的有趣的社会影响在网上把这个游戏。还有更多比我们已经讨论过。我不是最好的人谈论的所有社交方面设计一个用户界面或指引玩家游戏,但我可以肯定谈论网络的一面。”

你当然可以克里斯,你当然可以。

广告

广告

加载……
Baidu