Unity原生联机方案:UNet与Mirror网络框架

什么是Unity UNet?

Unity一直以来都是一个十分优秀的游戏开发引擎,但仅仅是在客户端层面上,在Unity5之后官方开始向“联机游戏引擎”上迈步,虽然直到2021年的今天效果并不太好,但Unet这类框架确实是帮助实现联机游戏的捷径之一,本文将根据作者的个人经验,为大家总结、分享Unity Unet的理解和介绍。

Unity Net是从Unity 5开始官方宣布开始更新的一个框架,据说某些逻辑是源自Udp框架专业户Raknet,但从Unity 2018版本左右就开始将这个框架撤出,原因我们不得而知,总之这个没有开发几年的网络框架已经被官方列为“不推荐”,所以一个新的框架就此诞生了——Mirror Networking

那什么又是Mirror?

如果你会使用百度翻译#滑稽,你会发现Mirror的意思可以表示“镜像”,顾名思义,Mirror框架的目的是为了让游戏的联机服务端、客户端在同一个环境下,也就是所谓的“服务器和客户端同时运行”,这种情况下可以解决大部分中小独立游戏的联机问题,值得一提的是这是一个专门为Unity 2019+开发的联机框架,最关键的地方在于——“它和UNet的使用方法差一不二”

Mirror网络框架几乎完全沿用了UNet的设计思路,并且因为是开源的社区框架(#滑稽就是可以白嫖),很多大佬的共同维护、更新让这个框架无论从速度、互联网支持、第三方扩展、易用性上都大幅度提升,如果你想实现一些基础的游戏网络通信,你甚至不需要掌握太多的网络知识,因为它真的很容易上手(#乖但仍然需要一定的Unity和C#经验,毕竟游戏都开发到联机层面了,网络逻辑是得有一点的)。

两者有什么区别?

众所周知,Unity UNet已经几乎停止开发了,其实最关键的原因之一就是很多开发者反馈“互联网支持不好”、“部分优化欠缺”,其中针对“几乎只能做局域网游戏”这点是很关键的,因为几乎没有人原因只做一个可以局域网联机的游戏,但UNet不知出于何种原因,或许对互联网的支持的确欠佳,好在Mirror完全弥补了这一缺陷。

稳定性比较

UNet是由Unity官方开发的网络框架,但目前官方已经停止更新,所以稳定性上不用想太多,只能作为学习和参考。

Mirror是由Github社区进行开发和维护,完全沿用了UNet的使用习惯,并且针对网络通讯进行了很大的优化(比如导入了Kcp,一种稳定快速的UDP协议),同时完全支持互联网和第三方扩展(如Steam P2P联机)。

速度比较

UNet同样已经被官方放弃,而Mirror即使今后不再进行更新,短时间内现有的框架也足以应对大多数联机游戏。

易用性比较

UNet不可忽略的是它最初设计出适应Unity的通讯习惯,如果不考虑一些UNet的缺点,在易用性上还是比较方便的,特别是针对中小独立游戏和新人开发者。

Mirror沿用了UNet的设计思路,使用方式和框架组件基本和UNet相同,但在整体上对框架进行了进一步的优化,部分UNet有些多余或者臃肿的使用方式,在Mirror得到了优化和解决。

两者使用上几乎差不多,只要掌握其中一个就可以很快的入门。

扩展性比较

UNet由于是Unity官方开发的框架,所以在扩展性方面会相对差一些,但可能在原生适配上会好一点,简单来说就是只能实现Unity允许你实现的功能(比如想要扩展Steam NAT就需要自己编写逻辑)。

Mirror内置了许多第三方扩展“插件”,比如想要实现Steam P2P联机,那么你只需要将Mirror的网络协议设置成Steamworks P2P就完成了,代码方面不需要任何改动。同样,你也可以指定其他协议作为Mirror的当前协议(默认协议是KCP,是目前Mirror认为最稳定快速的网络协议)。

想要开发联机游戏,选择什么?

本文为读者介绍了这两个框架:UNet、Mirror。

但实际上能实现联机功能的框架、方案数不胜数,如果你是一个高端玩家,那么不用我介绍你就可以选择一个正确的方案(比如高扩展Socket、出名的网络框架等)。

反过来说,如果是一个Unity入门开发者,或者中小独立游戏的开发者,那么本文介绍的两个框架你可以优先考虑,特别是Mirror。

关于Photon框架,对此评价是褒贬不一的,实际上个人认为这个框架对Unity支持也比较好,但实际使用上并不是太方便,更适合一些网游来使用(统一服务器),而UNet、Mirror这些则适合《我的世界》那种派对、聚会的游戏,玩家可以自己开服、创建房间等。

作者将在本文下方留下UNet和Mirror的网址资料,供有需要的人参考。

总结

本文为大家简单介绍了Unity原生支持较好的两个网络框架(UNet和Mirror),未来可能会更新一些关于Mirror的使用经验分享(UNet已经被放弃了,所以就不做分享啦),欢迎关注、收藏下这个小网站#滑稽。

Unity UNet既然已经被官方放弃了,也就不建议还没有使用的开发者再去使用了,但如果你已经掌握了UNet却突然感觉不香了?不要紧,Mirror的使用方式和UNet十分相似,你完全可以直接带着手艺开始Mirror的使用!

如果是出于学习的目的,因为Mirror在国内的资料比较少,所以你完全可以把UNet和Mirror认定为“同一个东西”,如果有些内容Mirror找不到资料,就去搜搜UNet是如何解决的吧!

 

Unity Net在2018版本左右已经被从引擎中剔除,如果想要在新版本Unity使用需要在Package Manager包管理器中启用。

 

UNet文档:https://docs.unity3d.com/Manual/UNet.html

Mirror文档:https://mirror-networking.gitbook.io

Mirror Github:https://github.com/vis2k/Mirror


感谢浏览!这是由 MP联机乐趣 提供的相关内容,原创文章转载请注明出处!

本文链接:https://www.mp-gamer.com/skills/2161.html

相关推荐

多人联机游戏网络协议+查询端口清单

如何查询某游戏服务器信息?联机游戏服务器在线查询?联机游戏网络协议列表及端口清单,提供GameQuery、Gamespy、Valve等著名游戏网络协议的通讯信息,您可以通过这些有用的信息组建服务器查询系统,以便查询游戏服务器房间的名字、人数、地图、模式等关键信息。

error: 尊重创作内容,请勿复制