Unity联网多人游戏技术方案调研

这篇具有很好参考价值的文章主要介绍了Unity联网多人游戏技术方案调研。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于联网方案

  • Listen Server (Host) 和 Relay转发服务器游戏包同时包含客户端和服务端逻辑,联网时一个客户端开主,称为Host,其他客户端连入。局域网和互联网都支持。互联网需要有一个匹配服务器帮助找到不同人建立的主机。如果不使用Relay服务器,那对于互联网连接就要使用NAT穿透下的P2P,但是P2P的成功率是80%90%,所以还是需要转发服务器来处理剩下的10%20%的用户。Host模式下由于Host机是某一个客户的机子,性能不可控,如果Host机性能差则联网体验差。另外Host模式要处理Host掉线的问题。Host模式安全性也比较差,黑客可以使用一个破解修改后的客户端开主,从而作弊。好处是不需要独立的游戏服务器,除了匹配服和转发服之外没有什么开销。
  • Delicated Game Server(DGS)即服务端单独编译成一个包运行。需要独立的服务器去运行服务端,需要考虑扩容。好处是服务端机器性能可控,且可在全球部署多个服务器点位,给玩家分配最优的服务器。DGS模式可以将游戏逻辑或者校验逻辑写在服务端,安全性较高。

UNet

UNet是早期的方案,也被称为HLAPI (High Level API),提供了一系列高层组件进行快速的联网开发。网络拓扑方案使用了Listen Server模式同时支持Relay(转发),也支持DGS(专用游戏服务器)。UNet现在已经被官方废弃了,在Unity2020下面还可以通过安装HLAPI的包继续使用,但Unity2021已经找不到这包了。

MLAPI / Netcode (for GameObjects)

即Middle Level API,是一个开源项目,被Unity采用。现在Unity已经升级为Netcode for GameObjects了。他提供了比较中间级的接口,比如 NetworkVars, SyncVars, RPCs, scene management, Messaging System。同样有DGS模式,也支持Relay,最多支持64人(但如果不使用RPC据说可以支持更多人数)。不过这个库还比较新,感觉不够成熟。

Netcode supports the following platforms:

Windows, MacOS, and Linux
iOS and Android
XR platforms running on Windows, Android, and iOS operating systems
Most closed platforms, such as consoles. Contact us for more information about specific closed platforms.

When working with consoles (such as PlayStation, Xbox, or Nintendo Switch), there may be Netcode-specific policies you should be aware of while testing and before launching your game live. Refer to the console’s internal documentation for more information. This content is typically protected by NDA.

Mirror

https://assetstore.unity.com/packages/tools/network/mirror-129321

免费的第三方插件,也是一个高层的API。使用client-server模式,并且提供很多中间层特性,如SyncVars。

其他收费插件

DarkRift2, Photon PUN, Photon Quantum2.0这几个都是收费的。
Unity联网多人游戏技术方案调研

非Unity集成方案

以上方案/插件都是可以高度集成到Unity中,都是直接使用Unity C# API写逻辑的。现在有一些开源的或者自研的服务端方案,比如使用Go,Lua, C++, Rust, Java等开发的服务器,这种基本都是独立服务器DGS,服务器端就不能使用Unity的API写逻辑了,比如物理计算和寻路等,都要是有其他方案,脱离了Unity引擎,而客户端就要使用底层的网络代码,重新封装到游戏逻辑层。此方案适合大型项目或者公司本来有积累的代码库,可以最大程度的定制开发,但是成本也较高(也要看积累)。

参考资料

  • https://docs-multiplayer.unity3d.com/netcode/current/about

  • https://docs-multiplayer.unity3d.com/netcode/current/about

  • https://images.response.unity3d.com/Web/Unity/%7B305691e0-36c5-4b1a-ae4d-a2e43d4569cb%7D_Unity-Choosing_Netcode-Research_Report-v1_1.pdf文章来源地址https://www.toymoban.com/news/detail-407515.html

到了这里,关于Unity联网多人游戏技术方案调研的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity Photon Fusion 2】多人联网插件,共享模式基础教程

    见主机模式基础教程 【Unity Photon Fusion 2】多人联网插件,主机模式基础教程-CSDN博客 概述 该部分解释了如何设置一个简单的场景以及如何创建一个玩家预制件。在本节结束时,您将拥有一个工作的网络场景,为每个连接的客户端生成一个播放器对象。 2.1.1 设置场景 从一个空

    2024年04月27日
    浏览(45)
  • unity使用PhotonEngine实现多人联机游戏开发(一)

    先来了解一下PhotonEngine(光子引擎),这是德国ExitGame公司开发的网络引擎,photonengine简单易上手,很多游戏公司开发的网络游戏都是使用的这个。这个网络引擎里面包括了PhotonCloud(光子云)、photonServer(光子服务器)、PhotonQuantum(确定性量子引擎)、PhotonVoice(光子语音)

    2024年02月07日
    浏览(56)
  • 【Unity2022】Unity多人游戏开发教程-安装Netcode for GameObjects

    首先亮出文档,可以直接去看官方文档。 本文章大部分内容来源于官方文档,另一部分为笔者讲解的教程。 如果英语不好,或看不懂文档的人,可以阅读本文章。 官方文档 官方文档的中文翻译: 中文翻译 本教程使用的开发环境如下: Windows10 Unity 2022.3.0f1c1 Netcode for GameOb

    2024年02月11日
    浏览(56)
  • 项目实训--Unity多人游戏开发(十一、PUN框架--游戏场景篇(加载与同步))

    本地加载 有许多方法,举几个例子: 本地加载 本地异步加载(场景内容过多时,防止卡顿异步加载) 多人游戏加载场景 pun2插件加载 这个异步加载起初是觉得场景内容如果过多会引起卡顿。所以把这个应用在了单机模式上。 至于多人游戏加载场景,可能用不到而且也没法

    2024年02月01日
    浏览(63)
  • 【Unity工具,简单学习】PUN 2,多人在线游戏开发,初步使用

    链接 PUN 可以让你 简单地开发多人游戏 ,在 全球范围 推出 让开发者 不用管托管、链接和延迟 支持移动端、台式、一些主机 全球范围内低延迟 始终连接,无需穿透 免费20 CCU(Concurrent User, 并发用户) 支持 Unity 2019 - 2022 安装包,输入邮箱来注册,或输入Appid来登录。 输入邮箱

    2024年02月07日
    浏览(59)
  • Unity之NetCode多人网络游戏联机对战教程(1)

    官网链接:https://docs-multiplayer.unity3d.com/netcode/current/about/ Netcode for GameObjects(NGO)是专为Unity构建的高级网络库。它能够在网络会话中将 GameObject 和 世界数据 同时发送给多名玩家。使用NGO不必关心低级协议和网络框架。 打开一个unity项目,在菜单栏中选择 Window Package Manager

    2024年02月07日
    浏览(58)
  • Unity之Photon PUN2开发多人游戏如何实现组队功能

    Photon Unity Networking 2 (PUN2) 是一款基于Photon Cloud的Unity多人游戏开发框架。它提供了一系列易于使用的API和工具,使开发者可以快速构建多人戏,并轻松处理多人游戏中的网络同步、房间管理、玩家匹配等问题。 我们在查看Pun2的Demo时,会发现Demo中自带了一个简易的PhotonTeam和

    2024年02月11日
    浏览(64)
  • Unity从零开始制作多人回合制对战游戏(1)——网络通讯

    考虑到我们的教程是网络游戏,所以还是得先写个服务器,本篇教程会向你科普什么是网络通讯、实现网络通讯需要的工具protobuf及其使用方法,最后,其主要内容是教你运用这些知识来开发一个使用c#作为后端的服务器,并完成通讯功能 新建一个unity项目作为客户端和c#控制

    2024年02月04日
    浏览(60)
  • Unity之使用Photon Server + PUN2 开发局域网多人游戏

    Photon Engine是一款跨平台的实时多人游戏引擎,它提供了可靠的基础设施和工具,使开发者能够轻松地构建和部署多人游戏。Photon Engine支持多种平台,包括PC、移动设备和Web,同时还提供了多种语言的SDK,如C++、C#、Java、JavaScript等,使得开发者可以使用自己熟悉的编程语言进

    2024年02月13日
    浏览(42)
  • Unity之NetCode多人网络游戏联机对战教程(4)--连接申请ConnectionApproval

    没看过前面的教程请先阅读前面的教程,本期将会讲到Netcode联机的申请,当一个Client想连接进来,应向Server发送申请联机的信息,然后由服务端向客户端下发数据,所有数据应该在服务端,而不是在客户端。 举几个常见的例子需要用到 ConnectionApproval 的场景 使用密码加入房

    2024年02月03日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包