So we have a couple of Online SubSystems - Steam, Null, etc.
How does one go about creating your own Online SubSystem?
I have done some searching and haven’t really found any definitive information on the subject. The problem with Null is that it only works on the LAN because of UDP and I am probably not going to go the Steam route. So my idea is to create my own Online SubSystem. I know the basic theory about it, a master server somewhere that is queried by clients wanting to play on the Internet … this returns a list of live servers … player clicks one and joins.
You need to create your own OSS module and implement all the interfaces that you want to use. In the class implementation, you have to create the logic to call your backend server and retrieve the data / map them in a way to respect the current Interface definition.
If you miss some function you need to add them, set them as “exportable” by addin MyOSS_API in front of the function and you will be albe to call them from your game module.
To start, I would suggest to take the null implementation (as it did nearly nothing in most of the case) so you will have the backbone of the code and do the interface one by one.
Good luck as it’s clearly not straightforward. Be aware that depanding of the interfaces/function the Delegate management is not handled in the same way so you need to be familiar with this!
Yeah, definetely not an easy task but completely doable. I’m in the middle of the same proccess right now and the end is yet to be seen
My advice is to start with a couple of interfaces (mostly you’ll need Sessions and Identity for some basic framework) and then expand from there. And of course use the Null subsystem as a reference, you can get lots of “ready-to-go” code from there.
Thanks guys for the info … it has been a lot of help.
I guess for now I will just go with a simple master server and game server heartbeat design to get things going. We will probably go online with Steam in the long run, but during the Alpha I don’t think it is worth doing that.
Hey any luck implementing your own custom OnlineSubsystem module?
I copy/pasted the Null system into ShooterGame and trying to rename it to my own ‘Custom’ class but I’m finding a lot of issues with header files being unable to be found.
That is not the correct way to do it … you need to change the C++ source code … so that is why you are getting the errors.
As for my own system, we are now looking at using Steam instead of our own system, this allows us to leverage the Steam community instead of trying to re-invent the wheel.
I’m working on VizArch presentations, I’m looking for a way to connect online a few (2 or 3) clients in the same visualization; seems I need to use steam or similar or create my own OSS, so I’m looking about it, but seems much more complex than what I can do.
Can I ask any who have solved it before to PM me with a quotation for his help? Thanks!