I try to implement matchmaking over the internet, my first attempt was to set up a node.js server communicating with secure websockets to register hosts and publish the IPs to requesting clients.
However, it doesn’t seem to work that way, because I can’t connect clients to hosts with an IP and port, but the port is necessary, because most hosts will be behind NAT and without a port the request can’t be send to the correct host behind the NAT.
So, after searching around for some time I’ve came to the conclussion that I have to use the Online Subsystem but even with the Shooter Game Sample I can’t figure out how to make it. After looking inside the steam online subsystem I guess the way to go is this:
- Create an Online Subsystem (probably the best way to use the NULL system as base)
- Create an Online Session Interface
- Implementing the CreateSession methods to register the session to a matchmaking server
- Implementing the FindSession methods to publish the sessions to clients
But I’m really unsure about how to register the session to the matchmaking server. My best guess would be to serialize the FNamedOnlineSession Object, send it to the matchmaking server, the matchmaking server sends it to the client and there it’s deserialized back to a FNamedOnlineSession object and I can call JoinSession on it. But it’s only a guess and I’m really not sure about the serialization.
So, any hint in the right direction would be helpful…