Unity新的网络引擎UNET(一) 概括 孙广东 2015. 7.12
Unity5.1 为开发者发布全新的多玩家在线工具、技术和服务。该技术的内部项目名称为 UNET,全称为 Unity Networking。然而,我们的愿景却不仅仅只是简单的联网。众所周知,Unity 公司的愿景是实现游戏开发民主化。Unity Networking 团队尤其想实现多玩家在线游戏开发的民主化。我们希望所有游戏开发人员都能够创建支持任意玩家数量的不同类型游戏。
加盟 Unity 公司之前,Networking 团队成员主要从事大型多人网游,比如网络创世纪、指环王 Online、龙与地下城网络版、漫威英雄、极品飞车 Online 和魔兽世界。他们热衷于开发多玩家在线游戏、技术和基础架构并拥有丰富的开发经验。
正如他们所说:”我们被Unity 公司的愿景所吸引,通过开发多玩家在线技术来实现 Unity 愿景,对我们而言是一个施展身手的机会,我们没有理由拒绝。因此,我们都辞掉原有的工作加入了 Unity 团队,以便为实现 Unity 愿景做出贡献。现在,我们正努力开发相关工具、技术和服务,以帮助所有人都能实现多玩家在线游戏的梦想。“
这当然是一项伟大的事业,但是,正如刚刚所说,这些事情我们过去都做过,现在,我们都非常想去再次参与这样的事业,因为这真的很酷!。我们采用分阶段实现目标的方法去开发技术,Unity 开发人员对此应该非常熟悉。我们先发布第一阶段的技术,从用户手上得到反馈,然后将所反馈的不足之处在第二阶段的工作中得到解决,反复如此。
对 UNET 而言,第一阶段是多玩家在线技术基础(稍后进一步解释)。第二阶段基于第一阶段,借助模拟服务器引入服务器权威游戏 (server authoritative gaming) 概念,之后有博文对此进行详述。第三阶段是最后阶段,我们想通过主模拟服务器赋予协调多个模拟服务器的能力。与通常情况一样,这一技术具体的最终发布日期尚不可知,因为我们常常碰到变化,尤其是收到用户反馈之后。但是,我们可以肯定第一阶段将成为 5.x 发布周期的一部分,而第二阶段正处于研发阶段。
那么,为什么我们说第一阶段是多玩家在线技术基础?主要特征如下:
1. 基于 UDP 的高性能传输层支持所有的游戏类型
2. 底层 API (LLAPI) 通过类似套接字的接口提供全面控制
3. 高层 API (HLAPI) 提供简单、安全的客户端/服务器网络模型
4. 匹配服务提供基本功能,让一个用户创建多人模式并允许他人加入
5. 中继服务器解决连接问题,以便玩家在使用防火墙的情况下能相互连接
我们的旧有系统中存在一些需要我们去解决的固有缺陷,而随着我们的目标变得更为远大,我们明白我们必须一切从头开始。既然我们的目标是支持一切游戏类型和任意数量的连接,我们首先开发基于 UDP 的新型高性能传输层。尽管使用 TCP 可以很好地开发出很多游戏,快速动作游戏需要使用 UDP,因为如果数据包不按次序到达的话,TCP 会截留最近收到的数据包。
在这个新的传输层的基础上,我们建立了两个新的 API。高层 API (HLAPI) 提供简单、安全的客户端/服务器网络模型。如果您不是网络工程师,但想要轻松开发一款多玩家游戏,HLAPI 可能会符合您的兴趣。
我们也希望解决用户反馈的有关旧有系统的问题。有些用户需要较底层的访问权限,以便实现更大的控制权限。于是,我们采用底层 API (LLAPI) 为传输层提供一个更加类似于套接字的接口。如果您是网络工程师,需要定义自定义网络模型或需要微调网络性能,LLAPI 将会符合您的兴趣。
匹配服务用于配置多人在线游戏空间,以便玩家相互寻找。最后,中继服务器确保玩家始终可以相互连接。
根据过去的经验,我们知道开发多玩家在线游戏需要付出很多心血。而多玩家在线技术基础是一套全新的、易于使用的专业联网技术、工具和基础架构,方便开发人员轻松开发多玩家在线游戏。首先,可以这么说,开发多玩家在线游戏需要比较丰富的网络和协议知识。您可以比较痛苦地去亲自学习这些知识,也可以请网络工程师帮忙。一旦越过这道障碍,您需要解决的问题是让玩家能相互找到。而解决这个问题之后,您需要做的便是让玩家能够相互连接,如果玩家使用了带有 NAT 的防火墙,这可能会有些麻烦。然而,解决了所有这些问题之后,意味着您创建了一系列相关的基础架构,创建这些基础架构的过程本身并不属于游戏开发过程,也并不好玩。到了这一步,您不得不费心思考如何动态地扩展您的基础架构,要做好这个工作需要事先拥有较丰富的相关经验。
我们的第一阶段解决了所有这些难题。有了 HLAPI,就不再需要有丰富的网络知识。而如果您是网络工程师,想以自己的方式解决问题,则 LLAPI 可以帮得上忙。匹配服务可以解决玩家相互寻找的问题。中继服务器可以解决玩家相互连接的问题。而且,我们也帮您解决了建立相关基础架构和动态扩展基础架构的问题。匹配服务和中继服务器驻留在 Unity 的多玩家云 (Multiplayer Cloud) 中。因此,不只是物理服务器根据需求扩展或收缩,相关进程也会扩展或收缩。
??
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/u010019717/article/details/46845753