How to set up a Steam LAN game with Steam OSS?

Hi all,

I’m trying to create my own online subsystem based off of the Steam online subsystem. I’ve copied and renamed all of the Steam OSS and ultimately I want to change a lot of its interfaces (sessions, voice, ect). But for now I’m just trying to test my copy of the Steam OSS. I can only test over a LAN right now, so I wanted to know how to start a Steam LAN game (or if its even possible). If I can get that up and running I can then try to emulate it with my custom OSS.

*also I have gotten a basic non-steam LAN game running with the Null OSS. Another note is that my game uses a dedicated server, so a client can’t host a server.

Any help would be really appreciated!

If specific online subsystem supports LAN listings you just need to mark Use LAN Boolean when you create session, your online subsystem needs to support that in order to work.

https://docs.unrealengine.com/en-us/Engine/Blueprints/UserGuide/OnlineNodes

Thanks for the comment. I am doing all of this in c++ and in my game session class when I am setting up the session settings I am checking a command line argument “LAN”, which I set, to determine if bIsLANMatch is true (I believe that should correspond to the BP bool). My problem now is that client can’t find the server at all. Like it can’t see it when I’m using Steam OSS or my own OSS. I think I need to append ?bIsLANMatch to my map URL but I’m not sure if I have to do that on the server or the client, and I’m not sure where the to modify the map URL also.

You overrided something important or you not forwarding LAN bool properly look on original OnlineSubsystem code what it does on LAN. YOu can also look up null as all null does is do LAN lookup using multicast IPs like any LAN game does

I was not able to accomplish LAN play with the Steam OSS, but I was able to get my desired outcome by creating a custom OSS which basically combines the Steam OSS with the NULL OSS.

If you create your own OSS you shouldn’t have to append anything to your map URL for LAN matches. The only thing the OSS is looking at when settings up sessions are the session settings, or “FOnlineSessionSettings”, that should be set up within your Game Session class (for your game).

I basically just check command line arguments to modify things like the session settings and what interfaces my OSS will be using.

Would you mind to show me how you did your customized OSS to combine null and steam for giving the chance to use Steam or LAN? Thnx

So you need to have UE4 built from source, then copy all of OnlineSubsystemSteam files (found under …\UE4\Plugins\Online\OnlineSubsystemSteam) and rename all the classes and files to your own (ex: OnlineSubsystemMyProject). Once you rename everything make sure it builds. Then, to get NULL stuff working, copy the OnlineIdentity and OnlinseSession interfaces for OnlineSubsytemNull and rename them. Then, what I do, is check for a command line parameter to switch between using the custom null interfaces and the correlating custom steam interfaces. So I’m able to have Steam features with LAN play, because I’m using the Null session interface.