UE4多人游戲中的關(guān)卡切換(b站-巡邏貓)
UE4單機游戲的關(guān)卡切換?OpenLevel
僅適用于StandAlone(單機)游戲
Absolute選項作用
ListenServer或DedicateServer模式:
服務器執(zhí)行:服務器正常切換到新關(guān)卡,客戶端會被切換到ProjectSetting中GameDefaultMap地圖
客戶端執(zhí)行:
1)不勾選Absolute
不會切換到新關(guān)卡,會重新加載當前關(guān)卡
2)勾選Absolute
可正常切換到新關(guān)卡
Options作用
如果為空 則切換到新關(guān)卡后服務器和客戶端都作為單機模式運行 不能通過命令行open IP加入服務器
如果Options輸入listen?
此時如果把ProjectSetting GameDefaultMap設(shè)置為新關(guān)卡 則聆聽服務器執(zhí)行OpenLevel 服務器和客戶端都會各自切換到新關(guān)卡,且互相沒有連接
客戶端可以通過命令行open IP加入服務器
UE4多人游戲中的關(guān)卡切換 ServerTravel
概念科普
一般地圖切換(非無縫):會斷開連接
無縫切換:不是指流關(guān)卡,真正的無縫是指多人游戲時關(guān)卡切換客戶端不斷開與服務器的連接
一般地圖切換的幾種情況
1.客戶端斷開鏈接自行切換地圖,服務器地圖不變
APlayerController::ClientTravel 未設(shè)置IP? Absolute=True
等同藍圖:OpenLevel? 勾選Absolute
2.客戶端斷開鏈接加入新的服務器地圖,原服務器地圖不變
APlayerController::ClientTravel 未設(shè)置IP(或者設(shè)置了IP) Relative
等同命令行open 127.0.0.1(假如服務器開在本地)
3.服務器切換地圖,客戶端跟隨服務器切換地圖
UWorld::ServerTravel 只設(shè)置地圖信息
4.客戶端,服務器都斷開鏈接,各自切換到自己的新地圖
先執(zhí)行情況1,再執(zhí)行情況3
注意:在編輯器里面,會有一些比較奇怪的表現(xiàn)。比如,編輯器下ListenServer端執(zhí)行ServerTravel 后會發(fā)現(xiàn)客戶端會卡?。▉G失控制)。而客戶端執(zhí)行ServerTravel則完全沒反應。其實是因為下面的代碼,
UEngine::LoadMap()
編輯器的GIsClient屬性為true(正常一個DedicateServer一定為false),導致服務器在LoadMap的時候不能正常初始化監(jiān)聽的NetDriver,因此客戶端無法與服務器建立連接而一直處于Pending狀態(tài)。表現(xiàn)上就是客戶端角色卡住不動。
解決方法是(UE 4.26):
1)如果在編輯器運行,Playe Mode請選擇Standalone Game(獨立窗口運行)或開啟獨立服務器模式,這兩種方式無論服務器還是客戶端都能正常切換關(guān)卡
2)打包后運行若一個作為服務器,另一個為客戶端加入游戲,則都能正常切換關(guān)卡
如果打包了獨立服務器,則所有客戶端都可正常切換關(guān)卡。