环球今日报丨UE4多人游戏中的关卡切换(b站-巡逻猫)
2023-06-18 16:39:37    哔哩哔哩

UE4单机游戏的关卡切换 OpenLevel

仅适用于StandAlone(单机)游戏

Absolute选项作用


(资料图片仅供参考)

ListenServer或DedicateServer模式:

服务器执行:服务器正常切换到新关卡,客户端会被切换到ProjectSetting中GameDefaultMap地图

客户端执行:

1)不勾选Absolute

不会切换到新关卡,会重新加载当前关卡

2)勾选Absolute

可正常切换到新关卡

Options作用

如果为空 则切换到新关卡后服务器和客户端都作为单机模式运行 不能通过命令行open IP加入服务器

如果Options输入listen 

此时如果把ProjectSetting GameDefaultMap设置为新关卡 则聆听服务器执行OpenLevel 服务器和客户端都会各自切换到新关卡,且互相没有连接

客户端可以通过命令行open IP加入服务器

UE4多人游戏中的关卡切换 ServerTravel

概念科普

一般地图切换(非无缝):会断开连接

无缝切换:不是指流关卡,真正的无缝是指多人游戏时关卡切换客户端不断开与服务器的连接

一般地图切换的几种情况

1.客户端断开链接自行切换地图,服务器地图不变

APlayerController::ClientTravel 未设置IP  Absolute=True

等同蓝图:OpenLevel  勾选Absolute

2.客户端断开链接加入新的服务器地图,原服务器地图不变

APlayerController::ClientTravel 未设置IP(或者设置了IP) Relative

等同命令行open 127.0.0.1(假如服务器开在本地)

3.服务器切换地图,客户端跟随服务器切换地图

UWorld::ServerTravel 只设置地图信息

4.客户端,服务器都断开链接,各自切换到自己的新地图

先执行情况1,再执行情况3

注意:在编辑器里面,会有一些比较奇怪的表现。比如,编辑器下ListenServer端执行ServerTravel 后会发现客户端会卡住(丢失控制)。而客户端执行ServerTravel则完全没反应。其实是因为下面的代码,

UEngine::LoadMap()

编辑器的GIsClient属性为true(正常一个DedicateServer一定为false),导致服务器在LoadMap的时候不能正常初始化监听的NetDriver,因此客户端无法与服务器建立连接而一直处于Pending状态。表现上就是客户端角色卡住不动。

解决方法是(UE 4.26):

1)如果在编辑器运行,Playe Mode请选择Standalone Game(独立窗口运行)或开启独立服务器模式,这两种方式无论服务器还是客户端都能正常切换关卡

2)打包后运行若一个作为服务器,另一个为客户端加入游戏,则都能正常切换关卡

如果打包了独立服务器,则所有客户端都可正常切换关卡。

关键词:

下一篇: 南方电网南方能源大数据中心落地贵安新区,总投资14.5亿元
上一篇: 最后一页