关于UE4多人局域网联机游戏中联网和回放的设置细节问题

这篇具有很好参考价值的文章主要介绍了关于UE4多人局域网联机游戏中联网和回放的设置细节问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

我们在游戏开发、仿真推演中可能会遇到这样的需求:

  1. 要搭建局域网,可以多人对战的。
  2. 要可以回放,能把大家玩耍的过程记录下来,重放给玩家们看,做复盘。

于是我们需要开发【联网】和【回放】功能。联网使用RPC方式,通过事件发送来实现。回放是将事件按时间顺序记录下来的方式,也从网络模块里抓信息存下来。
但这时我们可能会遇到问题。联网和回放都是用的网络模块,冲突了怎么解决?打印时报错了:“客户端漫游失败,待定网络游戏创建失败” 怎么解决?

问题描述:

  1. 创建UE4工程后,使用蓝图创建多人局域网蓝图,在多人局域网下测试,可以运行。
  2. 单独制作回放(重播)系统,可以运行。
  3. 但将多人局域网和回放系统放一起就无法同时存在。具体问题:在PIE模式下可以联网,可以回放。但Standalone模式无法联网,无法回放。在发布独立游戏过程中无报错。
  4. 经测试:能搜索到房间session但无法加入session。于是想到使用NetworkError和TravelError 对gameinstance检测(蓝图如下图)
    关于UE4多人局域网联机游戏中联网和回放的设置细节问题
    测试结果:Network并没有报错,但得到TravelError的报错如下: 客户端漫游失败,待定网络游戏创建失败
    关于UE4多人局域网联机游戏中联网和回放的设置细节问题

检查结果:

  1. 多人网络session蓝图,创建session、find session、join session 无问题
  2. 回放系统无问题
  3. 找了另外一个联网工程,代码对比排查后。发现问题很可能出在配置上。

找到了解决方法

打开UE4工程下的Config/DefaultEngine.ini文件,这里面有UE4联网的设置。允许UE4链接局域网、steam、还是不允许联网。
关于UE4多人局域网联机游戏中联网和回放的设置细节问题

找到对应的中括号的位置并增加或修改如下代码。如果没有中括号的项,可以自己创建一个。
如果你跟我一样UE4工程体量很大,那么DefaultEngine.ini内的信息也会很多,我们找的时候需要点耐心,


[/Script/Engine.GameEngine]
#使用井号可注释
#局域网配置,有这条才能连局域网玩
NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")

#回放系统配置,但无法联网的游戏  也无法启用回放系统。 注意前面有个+,就是说在局域网基础上 追加 对回放的支持。
+NetDriverDefinitions=(DefName="DemoNetDriver",DriverClassName="/Script/Engine.DemoNetDriver",DriverClassNameFallback="/Script/Engine.DemoNetDriver")

#链接到Steam平台的配置,局域网用不上,就先注释掉
#+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[/Script/OnlineSubsystemUtils.IpNetDriver]
#一堆Copy过来的代码,不太懂,就直接用了----------------------------
AllowPeerConnections=False
AllowPeerVoice=False
ConnectionTimeout=60.0
InitialConnectTimeout=60.0
RecentlyDisconnectedTrackingTime=120
TimeoutMultiplierForUnoptimizedBuilds=1
KeepAliveTime=0.2
MaxClientRate=100000
MaxInternetClientRate=100000
RelevantTimeout=5.0
SpawnPrioritySeconds=1.0
ServerTravelPause=4.0
NetServerMaxTickRate=30
MaxNetTickRate=120
NetConnectionClassName="/Script/OnlineSubsystemUtils.IpConnection"
MaxPortCountToTry=512
ResolutionConnectionTimeout=20.0
#一堆Copy过来的代码,不太懂,就直接用了----------------------------


[/Script/Engine.NetDriver]
#如果有控制、声音、Actor等需求。这里是从其他地方copy过来的,我眼下用不上,但也保留了
+ChannelDefinitions=(ChannelName=Control, ClassName=/Script/Engine.ControlChannel, StaticChannelIndex=0, bTickOnCreate=true, bServerOpen=false, bClientOpen=true, bInitialServer=false, bInitialClient=true)
+ChannelDefinitions=(ChannelName=Voice, ClassName=/Script/Engine.VoiceChannel, StaticChannelIndex=1, bTickOnCreate=true, bServerOpen=true, bClientOpen=true, bInitialServer=true, bInitialClient=true)
+ChannelDefinitions=(ChannelName=Actor, ClassName=/Script/Engine.ActorChannel, StaticChannelIndex=-1, bTickOnCreate=false, bServerOpen=true, bClientOpen=false, bInitialServer=false, bInitialClient=false)

[OnlineSubsystem]
#无法联网,经测试此种方法无法链接局域网。就好像一个网络开关一样。
#DefaultPlatformService=Null

#允许联网,经测试在断开网线后,此种方法可以组建局域网,并非链接到steam平台。
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName=OnlineSubsystemSteam.SteamNetConnection

[/Script/WindowsTargetPlatform.WindowsTargetSettings]
Compiler=VisualStudio2017

设置完成后,重启UE4引擎,再次以Standalone模式运行游戏,就可以既支持联网,也可以录制回放了。

重点1:

是 [/Script/Engine.GameEngine] 这个设置,由于我的游戏是局域网的,不需要链接steam平台。而且局域网支持录制回放,所以我用注释的方式关闭了OnlineSubsystemSteam.SteamNetDriver。

#局域网配置
NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")

#回放系统配置,但无法联网的游戏  也无法启用回放系统。
+NetDriverDefinitions=(DefName="DemoNetDriver",DriverClassName="/Script/Engine.DemoNetDriver",DriverClassNameFallback="/Script/Engine.DemoNetDriver")

#链接到Steam平台的配置
#+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
注意:GameNetDriver 和 DemoNetDriver 两个名字要分开,不能用一个替代,否则错误。
我测试时,一看都是一样的,那就合并了把,就把 DemoNetDriver 改成了 GameNetDriver ,结果报错了。

重点2:

把 DefaultPlatformService 设置成Null ,无法联局域网。设置成steam后,可以链接局域网。
在断开路由器跟互联网的链接后,使用DefaultPlatformService=Steam,路由器的局域网段内,可以顺利搭建局域网多人游戏。说明此处的steam并非Steam游戏平台。如下代码

[OnlineSubsystem]
#无法联网,经测试此种方法无法链接局域网。
#DefaultPlatformService=Null

#允许联网,经测试在断开网线后,此种方法可以组建局域网,并非链接到steam平台。
DefaultPlatformService=Steam

以上基于经验性探索,有错误请朋友们指正,希望能帮助到朋友们。文章来源地址https://www.toymoban.com/news/detail-427582.html

到了这里,关于关于UE4多人局域网联机游戏中联网和回放的设置细节问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • UE4/5多人游戏详解(七、自定义委托,实现寻找会话和加入会话的函数,通过Steam进行两台电脑的联机)

    UE4/5多人游戏详解(七、自定义委托,实现寻找会话和加入会话的函数,通过Steam进行两台电脑的联机)

    目录 可能出现问题(在六部分的测试可能无法连接的问题【在末尾加上了,怕有人没看见在这里写一下】) 自定义委托 调整位置 创建更多的委托和回调函数给菜单: 多播和动态多播  代码: 委托变量  代码: 回调函数  代码: 绑定委托和动态函数:  代码: 头文件添加

    2024年02月04日
    浏览(44)
  • 【UE4】多人联机教程(重点笔记)

    【UE4】多人联机教程(重点笔记)

    1. 创建房间、搜索房间功能 2. 根据指定IP和端口加入游戏 1. 新建一个第三人称角色模板工程 2. 创建一个空白关卡,这里命名为“InitMap” 3. 新建一个控件蓝图,这里命名为“UMG_ConnectMenu” 在关卡蓝图中显示该控件蓝图 打开“UMG_ConnectMenu”,添加如下控件 首先添加创建房间按

    2024年02月14日
    浏览(28)
  • 公网连接内网工具推荐(还在为局域网联机发愁?)

    公网连接内网工具推荐(还在为局域网联机发愁?)

     下载地址 Windows 64位 Mac OS X 64位 Linux 64位 Linux/ARM 32位 64位 一、FastNat可为您解决的问题 1.没有公网服务器,需要发布本地的站点或网络程序到公网上,供他人访问; 此项功能大大方面开发人员进行远程调试,微信小程序等开发工作进行。 2.需要远程到在其他网络中的设备,

    2024年02月11日
    浏览(7)
  • 阿里云服务器开服教程,用于我的世界等局域网联机

    阿里云服务器开服教程,用于我的世界等局域网联机

    想要和好朋友在家玩我的世界局域网联机?又不想用frp(花一元巨款)?还没有公网IP?完全可以联机,还不用和frp抢带宽,相当方便。 首先,我们需要注册一个阿里云账号 然后选择ECS 然后选择立即购买,这里也可以点击免费试用,同样系统选择CentOS就可以了 其它配置不需

    2024年02月09日
    浏览(18)
  • 【UE5 多人联机教程】04-加入游戏

    【UE5 多人联机教程】04-加入游戏

    1. 新建一个控件蓝图,父类为“USC_Button_Standard”  控件蓝图命名为“UMG_Item_Room”,用于表示每一个搜索到的房间的界面 打开“UMG_Item_Room”,在图表中新建一个变量,命名为“Session”  变量类型为“蓝图会话结果”,选择可编辑实例和生成时公开 2. 打开“UMG_MainMenu”,添加

    2024年02月15日
    浏览(6)
  • 和朋友一起玩游戏怎么创建局域网

    大家有没有遇到过想和朋友一起玩游戏却不知道怎么创建局域网的情况,其实非常的简单,下面小编教大家怎么做。 点击电脑右下角的网络图标,然后选择打开网络和共享中心。 在网络共享中心中选择设置新的连接或网络。 在设置网络或连接中选择设置无线临时网络,然后

    2024年02月06日
    浏览(12)
  • 关于:在企业局域网中启用 Delivery Optimization

    1、技术说明: 1)Windows Update Delivery Optimization(WUDO)服务类似于 torrent,并且基于点对点(P2P)原则:    - 在从 Windows Store 下载 Windows Update 或应用程序之前,计算机会尝试在本地网络中的附近计算机上查找该文件。    - 如果找到该文件,计算机则从相邻计算机下载该文件

    2024年02月16日
    浏览(10)
  • UE4第三人称多人联机游戏开发01

    UE4第三人称多人联机游戏开发01

    单人游戏 中一台电脑只有一个游戏会话(Session),我们可以通过在同一电脑中分屏并用不同的输入设备,单人游戏不需要使用互联网。 多人游戏 中,游戏实例在独立的两台电脑中运行,而由于玩家在不断地输入指令,因此我们需要将一个游戏实例中的信息通过互联网传输到

    2024年02月07日
    浏览(54)
  • 关于微信小程序使用UDP实现局域网通讯及UDP模块的封装

    关于微信小程序使用UDP实现局域网通讯及UDP模块的封装

    距离我上一次发物联网类前端的教程好久了 前段时间刚刚实现了以下小程序使用UDP进行了局域网的控制 做的时候发现网上对应的教程比较少或者有的看着有点头晕 特此不要脸的发一篇教程,写得不好多多包涵。咱话不多说,直接开写!!! 首先,老规矩,先上图: 上图为

    2024年02月01日
    浏览(7)
  • UE4 无用の小技巧之联机游戏获取自身控制器

    UE4 无用の小技巧之联机游戏获取自身控制器

    文章内容仅为个人学习所得,如有错误,还请指正!谢谢 通常在UE4中获取玩家控制器是使用GetPlayerController,但在联机游戏中,想要获取玩家所拥有的控制器时,常规的GetPlayerController所获取的控制器只在服务端是正确的,因为在联机模式下,玩家的PlayerIndex是不一致的 在Paw

    2024年02月12日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包