背景
我们在游戏开发、仿真推演中可能会遇到这样的需求:
- 要搭建局域网,可以多人对战的。
- 要可以回放,能把大家玩耍的过程记录下来,重放给玩家们看,做复盘。
于是我们需要开发【联网】和【回放】功能。联网使用RPC方式,通过事件发送来实现。回放是将事件按时间顺序记录下来的方式,也从网络模块里抓信息存下来。
但这时我们可能会遇到问题。联网和回放都是用的网络模块,冲突了怎么解决?打印时报错了:“客户端漫游失败,待定网络游戏创建失败” 怎么解决?
问题描述:
- 创建UE4工程后,使用蓝图创建多人局域网蓝图,在多人局域网下测试,可以运行。
- 单独制作回放(重播)系统,可以运行。
- 但将多人局域网和回放系统放一起就无法同时存在。具体问题:在PIE模式下可以联网,可以回放。但Standalone模式无法联网,无法回放。在发布独立游戏过程中无报错。
- 经测试:能搜索到房间session但无法加入session。于是想到使用NetworkError和TravelError 对gameinstance检测(蓝图如下图)

测试结果:Network并没有报错,但得到TravelError的报错如下: 客户端漫游失败,待定网络游戏创建失败。

检查结果:
- 多人网络session蓝图,创建session、find session、join session 无问题
- 回放系统无问题
- 找了另外一个联网工程,代码对比排查后。发现问题很可能出在配置上。
找到了解决方法
打开UE4工程下的Config/DefaultEngine.ini文件,这里面有UE4联网的设置。允许UE4链接局域网、steam、还是不允许联网。

找到对应的中括号的位置并增加或修改如下代码。如果没有中括号的项,可以自己创建一个。
如果你跟我一样UE4工程体量很大,那么DefaultEngine.ini内的信息也会很多,我们找的时候需要点耐心,
[/Script/Engine.GameEngine]
#使用井号可注释
#局域网配置,有这条才能连局域网玩
NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
#回放系统配置,但无法联网的游戏 也无法启用回放系统。 注意前面有个+,就是说在局域网基础上 追加 对回放的支持。
+NetDriverDefinitions=

最低0.47元/天 解锁文章
5957

被折叠的 条评论
为什么被折叠?



