Я пытаюсь заставить проект MultiplayerShootout, предоставляемый EpicGames, поддерживать выделенные Steam-серверы. Но я не смог управлять узлом FindSessions для возврата выделенного сервера.
Говорят, что вы не можете разместить сервер и клиент для steam на одной машине, поэтому я использую два компьютера, в один я запускаю выделенный сервер, выполняя следующую команду:
"C:\Epic Games\UE_4.24\Engine\Binaries\Win64\UE4Editor.exe" "ProjectPath\ProjectName.uproject" Level_01 -server -log
pause
Он успешно создает расширенный сеанс, и я могу видеть сервер в списке серверов на вкладке View-Servers-LAN.
From на другом компьютере я запускаю упакованную сборку игры. Но он не может найти сессию. Если я использую сервер прослушивания, все работает нормально. Один компьютер запускает сервер прослушивания, другой находит его и присоединяется. Но не повезло для выделенных серверов.
Я также попробовал «открыть 192.68.1.9» (который является ip сервера), «открыть 192.168.1.9:7777» в узле «Выполнить консольные команды» и то же самое с публичным c IP тоже. Также попробовал узел открытого уровня с приватным и публичным c IP.
Но тут я немного запутался. Это не правильный способ присоединиться правильно? Узел Find Sessions должен вернуть сервер, я не должен вводить IP-адреса вручную.
Я на правильном пути? Или полностью потерял это? Пожалуйста, покажите мне путь.
Конфигурации, которые я сделал до сих пор:
Я добавил
bUsesSteam = true;
в ProjectName.Target.cs
. Конфигурационные файлы:
DefaultEngine.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
DefaultGame.ini:
[/Script/EngineSettings.GeneralProjectSettings]
ProjectID=B1E7E17343DD95D5A526BEA810949FA8
[/Script/UnrealEd/ProjectPackagingSettings]
+DirectoriesToAlwaysStageAsUFS=(Path="Engine/Binaries/ThirdParty/Steamworks")
Добавлен steam_api64.dll по пути: packProjectPath \ WindowsNoEditor \ Engine \ Binaries \ ThirdParty \ Steamworks \ Steamv146 \ Win64 (нужно ли обновлять его при обновлении steam?)
Вот какие плагины я добавил.
Здесь приведена схема для создания сеанса выделенного сервера, расположенного в Level Blueprint уровня_01, который является уровнем, на котором сражаются игроки.