關(guān)于聯(lián)網(wǎng)方案
- Listen Server (Host) 和 Relay轉(zhuǎn)發(fā)服務(wù)器游戲包同時(shí)包含客戶端和服務(wù)端邏輯,聯(lián)網(wǎng)時(shí)一個(gè)客戶端開主,稱為Host,其他客戶端連入。局域網(wǎng)和互聯(lián)網(wǎng)都支持?;ヂ?lián)網(wǎng)需要有一個(gè)匹配服務(wù)器幫助找到不同人建立的主機(jī)。如果不使用Relay服務(wù)器,那對(duì)于互聯(lián)網(wǎng)連接就要使用NAT穿透下的P2P,但是P2P的成功率是80%90%,所以還是需要轉(zhuǎn)發(fā)服務(wù)器來處理剩下的10%20%的用戶。Host模式下由于Host機(jī)是某一個(gè)客戶的機(jī)子,性能不可控,如果Host機(jī)性能差則聯(lián)網(wǎng)體驗(yàn)差。另外Host模式要處理Host掉線的問題。Host模式安全性也比較差,黑客可以使用一個(gè)破解修改后的客戶端開主,從而作弊。好處是不需要獨(dú)立的游戲服務(wù)器,除了匹配服和轉(zhuǎn)發(fā)服之外沒有什么開銷。
- Delicated Game Server(DGS)即服務(wù)端單獨(dú)編譯成一個(gè)包運(yùn)行。需要獨(dú)立的服務(wù)器去運(yùn)行服務(wù)端,需要考慮擴(kuò)容。好處是服務(wù)端機(jī)器性能可控,且可在全球部署多個(gè)服務(wù)器點(diǎn)位,給玩家分配最優(yōu)的服務(wù)器。DGS模式可以將游戲邏輯或者校驗(yàn)邏輯寫在服務(wù)端,安全性較高。
UNet
UNet是早期的方案,也被稱為HLAPI (High Level API),提供了一系列高層組件進(jìn)行快速的聯(lián)網(wǎng)開發(fā)。網(wǎng)絡(luò)拓?fù)浞桨甘褂昧薒isten Server模式同時(shí)支持Relay(轉(zhuǎn)發(fā)),也支持DGS(專用游戲服務(wù)器)。UNet現(xiàn)在已經(jīng)被官方廢棄了,在Unity2020下面還可以通過安裝HLAPI的包繼續(xù)使用,但Unity2021已經(jīng)找不到這包了。
MLAPI / Netcode (for GameObjects)
即Middle Level API,是一個(gè)開源項(xiàng)目,被Unity采用?,F(xiàn)在Unity已經(jīng)升級(jí)為Netcode for GameObjects了。他提供了比較中間級(jí)的接口,比如 NetworkVars, SyncVars, RPCs, scene management, Messaging System。同樣有DGS模式,也支持Relay,最多支持64人(但如果不使用RPC據(jù)說可以支持更多人數(shù))。不過這個(gè)庫還比較新,感覺不夠成熟。
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
免費(fèi)的第三方插件,也是一個(gè)高層的API。使用client-server模式,并且提供很多中間層特性,如SyncVars。
其他收費(fèi)插件
DarkRift2, Photon PUN, Photon Quantum2.0這幾個(gè)都是收費(fèi)的。
非Unity集成方案
以上方案/插件都是可以高度集成到Unity中,都是直接使用Unity C# API寫邏輯的。現(xiàn)在有一些開源的或者自研的服務(wù)端方案,比如使用Go,Lua, C++, Rust, Java等開發(fā)的服務(wù)器,這種基本都是獨(dú)立服務(wù)器DGS,服務(wù)器端就不能使用Unity的API寫邏輯了,比如物理計(jì)算和尋路等,都要是有其他方案,脫離了Unity引擎,而客戶端就要使用底層的網(wǎng)絡(luò)代碼,重新封裝到游戲邏輯層。此方案適合大型項(xiàng)目或者公司本來有積累的代碼庫,可以最大程度的定制開發(fā),但是成本也較高(也要看積累)。
參考資料
-
https://docs-multiplayer.unity3d.com/netcode/current/about文章來源:http://www.zghlxwxcb.cn/news/detail-407515.html
-
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文章來源地址http://www.zghlxwxcb.cn/news/detail-407515.html
到了這里,關(guān)于Unity聯(lián)網(wǎng)多人游戲技術(shù)方案調(diào)研的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!