Build custom onlinesubsystem

I want to implement a custom onlinesubsystem, what would be the best approach for this. I have read that it is advised to start off with the OnlineSubsystemNull. How can i start off building this, can i build the subsystem without compiling the entire engine? I want to avoid having to build the engine from source, since my setup is way to slow to do the entire build. So i am looking for a way to just compile a single module to a dll, and then manually replacing that dll when i rebuild for example.

So for clarification: I will not be changing anything in the engine code I just want to implement IOnlineSubsystem, and I am looking for the easiest way to accomplish this.

You don’t need to do anything with source (but source here will be very useful). Engine is divided in to modules, when you create C++ project, it create module for you. You can use that for oyu OnlineSubsystem if you wish it will work, everything in there works the same as in any other engine module, you practicly extending the engine. If you want something more universal, best way to go is to create plugin, there wizard to create one (it’s a plugin, if you dont see plugin wizard in file many go activate it first in plugin menager). Same as with game project plugin is also set of modules, they work exacly the same, only diffrence is distribution.

Oh and by starting off from Null they mean copy paste it under diffrent name (thats why engine source will be useful here). Null is a dummy online subsystem to make some engine code work without any online service, thats why it good point to start with as it will compile and work out of the box

Thank you for your response. I created an empty c++ project and added a plugin. In the plugin folder i copied OnlineSubsystemNull and renamed the source code to reflect the name of my plugin. How can i use my own online
subsystem now? I added:

[OnlineSubsystem]
DefaultPlatformService=MatchMaking

to Myproject/Config/DefaultEngine.ini and i changed

 #define MATCH_MAKING_SUBSYSTEM FName(TEXT("Null"))

To

  #define MATCH_MAKING_SUBSYSTEM FName(TEXT("MatchMaking"))

When i start the game in the editor i see the following log:

LogOnline:Warning: NULL: Can’t start
an online game for session (Game) that
hasn’t been created

Why is the null subsystem loaded and why is it trying to create a session since i have not done anything in the editor yet.