Maintaining Client-Server Version Numbers

Originally posted on Answerhub here: Maintaining Client-Server Version Numbers - Multiplayer & Networking - Unreal Engine Forums

I am having trouble understanding how to properly develop separate Client and Server versions of a project. I know they need to be built by the same source - which to my knowledge has been done. My issue is that I will have some client blueprints or settings that will differ from the dedicated server. To name one, UI and login setup.

Perhaps I just have the wrong theoretical process to do this?

I have:

Installed 4.15 Source

Created two separate projects, near identical ThirdPerson blueprint maps. Named one project Client and the other project Server. I have placed them in the source directory so they both show up in the visual basics Solution Explorer.

Followed through a tutorial to use UnrealFrontEnd to create a dedicate server for the ‘Server’ Project.

Once all changes are made in UE4, I re-build the solution for the whole engine in Visual Basics. Than build solutions for each project individually. (I’ve also tried just re-building just the whole engine).

Some success:

Since the ‘Server’ project has been packaged for both a client and dedicated server… I can open the dedicated server than use the “WindowsNoEditor” version to connect to the dedicated server. I can connect multiple windows and see every character moving around fine, so the dedicated server appears to be working properly.

I have this quote from one post that may be what I need or what I am looking for but I am predominantly a blueprint developer. What is the process to do this in as a C++ task?

You can handle the version checks on your own binding the IsNetworkCompatibleOverride delegate of FNetworkVersion to you own handler. You can also bind the GetLocalNetworkVersionOverride delegate of FNetworkVersion to use your own version system, for instance a simple int so that different version can connect together.

The image below is my error when trying to connect my ‘Client’ project to my ‘Server’ dedicated server. (I hope that doesnt sound confusing):