IOnlineSubsystem Null vs Steam

i’ve found i’ve come across a number of problems regarding online play after packaging and deploying the game, no matter if its debug, dev or ship, the behavior is the same.

-I wrote a server searching widget based on the shootergame serversearch widget, when playing in the editor, it searches fine and will detect servers i am hosting in other instances of the editor and allow me to join, etc… but when the game is packaged, it seems to fail to find any sort of servers immediately.

-i wrote a host game widget, that seems to work fine regardless of whether the game is being played in the editor or a packaged standalone (to those who have seen my other post, i am referring to the version of the UI before i made the new menu)

-i wrote a join server by IP widget, which has an OnClicked delegate that fires a bound function that accepts the IP address and calls the console command “open [ipn.umb.erh.ere]”. this also does not not seem to work at all, whereas pulling up the console and issuing the same command works to have other players join the current listening server.

i have added these definitions to my default engine.ini, and it seems to be falling back to the IOnlineSubsystemNULL successfully, as i do not have the steam onlinesubsystem.

is the NULL online subsystem usable outside of the editor?

here is my defaultengine.ini:

[URL]
GameName=MistOfTheDark

[/Script/Engine.Engine]
NearClipPlane=3.0
bEnableColorClear=true
GameUserSettingsClassName=/Script/MistOfTheDark.MOTDGameUserSettings

[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
;+NetDriverDefinitions=(DefName=“GameNetDriver”,DriverClassName=“OnlineSubsystemUtils.IpNetDriver”,DriverClassNameFallback=“OnlineSubsystemUtils.IpNetDriver”)
+NetDriverDefinitions=(DefName=“GameNetDriver”,DriverClassName=“OnlineSubsystemSteam.SteamNetDriver”,DriverClassNameFallback=“OnlineSubsystemUtils.IpNetDriver”)

[Core.Log]
LogOnline=verbose
LogAnalytics=log

[OnlineSubsystem]
;DefaultPlatformService=Null
DefaultPlatformService=Steam
PollingIntervalInMs=20

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

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName=“OnlineSubsystemSteam.SteamNetConnection”
AllowDownloads=false

[/Script/Engine.CollisionProfile]
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel1, Name=Weapon, bTraceType=true)
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel2, Name=Projectile)
+Profiles=(Name=“Projectile”, CollisionEnabled=QueryOnly,ObjectTypeName=Projectile, CustomResponses=(
(Channel=Static, Response=ECR_Block),
(Channel=PawnMovement, Response=ECR_Block),
(Channel=Dynamic, Response=ECR_Block),
(Channel=PhysicsBody, Response=ECR_Block),
(Channel=VehicleMovement, Response=ECR_Block),
(Channel=Destructible, Response=ECR_Block)
))
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel3, Name=Pickup)
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel4, Name=Melee)

[/Script/EngineSettings.GameMapsSettings]
EditorStartupMap=/Engine/Maps/Templates/Template_Default
EditorStartupMap=/Game/Maps/NetworkTest
TransitionMap=
bUseSplitscreen=True
TwoPlayerSplitscreenLayout=Horizontal
ThreePlayerSplitscreenLayout=FavorTop
;GameDefaultMap=/Engine/Maps/Entry
GameDefaultMap=/Game/Maps/MOTD_MainMenu
;ServerDefaultMap=/Engine/Maps/Entry
ServerDefaultMap=/Game/Maps/TheCave
;GlobalDefaultGameMode=/Script/Engine.GameMode
GlobalDefaultGameMode=/Script/MistOfTheDark.MOTD_Menu

would greatly appreciate help.

The NULL online subsystem (OSS) is supposed to be a usable alternative to the another OSS that behaves in a similar way, if with limited functionality, as the other OSS implementations. This helps you write consistent code and test it on multiple platforms without having to add special game logic to check for the existence of an OSS.

That being said, the editor runs with Steam disabled and falls back to NULL by design. When you are running outside the editor, it will enable Steam if you have it setup that way. By the looks of your ini, you have Steam setup to used.

At the very least, set bEnabled=false under the [OnlineSubsystemSteam] section of the DefaultEngine.ini and see if you get consistent behavior in and out of the editor.

The second question is, do you intend to use Steam? If so, some of the code might need to change. The Steam implementation doesn’t use normal ip addresses. You will have to pass a different value into “open” to get that to work. We can talk more about that after you try the NULL implementation outside the editor.

this has been extremely helpful on giving me direction where i have been stuck for some time now. thank you, sir, and i shall be back with more questions.

I believe my team eventually intends to use steam, but for this stage of development, we are going the minimal route.

a quick question regarding NULL OSS, in the search widget, i have read a number of posts talking about forwarding port 7777 on the user’s router to a specific IP address (presumably a dedicated server), but i was under the impression that allowing the packaged game to use port 7777 was handled with the windows pop ups that ask to allow the program access to the internet when enabled. essentially, how does the NULL OSS know where to query the possible active servers of my game that are going on on any given computer on the internet?

the information you have given me may answer this question already, but i thought i’d throw it out there. i’ll get to testing.

thank you again!
m

Port 7777 does need to be exposed to the internet, yes. I’m know which Windows dialog you are referring to, and I believe that does setup firewall exceptions to allow traffic in/out, but you may still need to make sure your router forwards “unsolicited traffic” to the right internal machine. The router won’t know where to put incoming traffic if you have multiple machines behind it.

So adding port forwarding settings on your router are probably required.