首页 > 解决方案 > UE 4.24.1 高级会话插件 - Steam 专用服务器 - 找不到服务器 02-15-2020, 11:15 PM

问题描述

我正在尝试让 EpicGames 提供的 MultiplayerShootout 项目支持 Steam 专用服务器。但我无法管理 FindSessions 节点以返回专用服务器。

据说你不能在同一台机器上托管服务器和客户端,因此我使用两台计算机,我通过执行以下 bat 启动专用服务器:

"C:\Epic Games\UE_4.24\Engine\Binaries\Win64\UE4Editor.exe" "ProjectPath\ProjectName.uproject" Level_01 -server -log
pause

它成功创建了高级会话,我可以在 steam 的 View-Servers-LAN 选项卡的服务器列表中看到服务器。

从另一台计算机上,我启动了游戏的打包版本。但它找不到会话。如果我使用监听服务器一切正常。一台计算机启动侦听服务器,另一台计算机找到它并加入。但是专用服务器没有运气。

我还在“执行控制台命令”节点中尝试了“打开 192.68.1.9”(这是服务器的 IP)、“打开 192.168.1.9:7777”命令,以及与公共 IP 相同的操作。还尝试了具有私有和公共 IP 的开放级节点。

但在这里我有点困惑。这不是正确的加入方式吗?Find Sessions 节点应该返回服务器,我不应该手动输入任何 IP。

我在正确的道路上吗?还是完全失去了它?请给我指路。

到目前为止我所做的配置:

我添加了

bUsesSteam = true;

到 ProjectName.Target.cs

配置文件如下:

默认引擎.ini:

[URL]
GameName=MyProjectNameHere
[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]
DefaultPlatformService=Steam
PollingIntervalInMs=20

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
GameServerQueryPort=27015
bRelaunchInSteam=false
bVACEnabled=0
GameVersion=1.0.0.0
bAllowP2PPacketRelay=true
P2PConnectionTimeout=90

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

[/Script/Engine.PhysicsSettings]
DefaultTerminalVelocity=4000.000000
DefaultFluidFriction=0.300000
bEnableAsyncScene=False
LockedAxis=None
FrictionCombineMode=Average
MaxDepenetrationVelocity=0.000000
bSimulateSkeletalMeshOnDedicatedServer=True
MaxPhysicsDeltaTime=0.033333
bSubstepping=True
bSubsteppingAsync=False
MaxSubstepDeltaTime=0.016667
MaxSubsteps=12
SyncSceneSmoothingFactor=0.000000
AsyncSceneSmoothingFactor=0.990000
InitialAverageFrameRate=0.016667

[/Script/Engine.UserInterfaceSettings]
UIScaleCurve=(EditorCurveData=(Keys=((Time=480,Value=0.444),(Time=720,Value=0.666),(Time=1080,Value=1.0),(Time=8640,Value=8.0))),ExternalCurve=None)
UIScaleCurve=(EditorCurveData=(Keys=((Time=480.000000,Value=0.444000),(Time=720.000000,Value=0.666000),(Time=1080.000000,Value=1.000000),(Time=8640.000000,Value=8.000000))),ExternalCurve=None)

[/Script/Engine.RendererSettings]
r.MobileHDR=True
r.AllowOcclusionQueries=True
r.MinScreenRadiusForLights=0.030000
r.MinScreenRadiusForDepthPrepass=0.030000
r.PrecomputedVisibilityWarning=False
r.TextureStreaming=True
Compat.UseDXT5NormalMaps=False
r.AllowStaticLighting=True
r.NormalMapsForStaticLighting=False
r.GBuffer=True
r.GenerateMeshDistanceFields=True
r.Shadow.DistanceFieldPenumbraSize=0.050000
r.TessellationAdaptivePixelsPerTriangle=48.000000
r.SeparateTranslucency=True
r.CustomDepth=1
r.DefaultFeature.Bloom=True
r.DefaultFeature.AmbientOcclusion=True
r.DefaultFeature.AmbientOcclusionStaticFraction=True
r.DefaultFeature.AutoExposure=True
r.DefaultFeature.MotionBlur=True
r.DefaultFeature.LensFlare=True
r.DefaultFeature.AntiAliasing=2
r.EarlyZPass=3
r.EarlyZPassMovable=False
r.DBuffer=False
r.ClearSceneMethod=1
r.MSAA.CompositingSampleCount=4
r.WireframeCullThreshold=5.000000
UIScaleRule=ShortestSide
UIScaleCurve=(EditorCurveData=(Keys=),ExternalCurve=None)

[/Script/EngineSettings.GameMapsSettings]
EditorStartupMap=/Engine/Maps/Templates/Template_Default
EditorStartupMap=/Game/Maps/Level_01
TransitionMap=
bUseSplitscreen=True
TwoPlayerSplitscreenLayout=Horizontal
ThreePlayerSplitscreenLayout=FavorTop
GameInstanceClass=/Script/Engine.GameInstance
GameInstanceClass=/Game/Blueprints/MyGameInstance.MyGameInstance_C
GameDefaultMap=/Game/Maps/MainMenu.MainMenu
GameDefaultMap=/Game/Maps/MainMenu.MainMenu
GlobalDefaultServerGameMode=None

默认游戏.ini:

[/Script/EngineSettings.GeneralProjectSettings]
ProjectID=B1E7E17343DD95D5A526BEA810949FA8

[/Script/UnrealEd/ProjectPackagingSettings]
+DirectoriesToAlwaysStageAsUFS=(Path="Engine/Binaries/ThirdParty/Steamworks")

将 steam_api64.dll 添加到路径: packedProjectPath\WindowsNoEditor\Engine\Binaries\ThirdParty\Steamworks\Steamv146\Win64 (我需要在更新 steam 时更新这个吗?)

这是我添加的插件。

插件1 插件2 插件3

这是用于创建位于 Level_01 的关卡蓝图中的专用服务器会话的蓝图设置,这是玩家战斗的关卡。

bp1 bp2

标签: unreal-engine4steamunreal-blueprintdedicated-serversteamworks-api

解决方案


我没有解决这个问题,因为我有同样的问题但首先我不得不说,如果你使用子系统蒸汽,你不能直接通过 ip 连接。要通过控制台命令进行连接,您必须执行以下操作:open steam.SERVER_ID其中服务器 ID 是在 SERVER 下的 Steam 服务器浏览器中显示的数字。

我也有这个问题,如果我建立一个专用服务器,我的客户端没有通过查找高级会话找到服务器。

到目前为止,如果我通过编辑器使用快捷方式(-log -server)运行服务器,而不是客户端找到服务器。但我认为这也是一个监听服务器而不是专用服务器。


推荐阅读