GameServerMonitor
GameServerMonitor copied to clipboard
Adding Support for UDK Based Games in LAN Mode (can only be used on Self-Hosted GSM)
Problem:
UDK Based Games (Unreal Engine 3) uses Submodules, even in the network stack. Unreal Tournament 3 uses the same systems, which means Unreal Tournament 3 is currently supported by GSM, but only for Servers that are meant to be Internet servers. (equals startparamenter ?bIsLanMatch=false
). I describe further what happens for querying, which I'm parallel in work in this GameDig Issue. The Systems that are implemented are:
-
[IpDrv.OnlineGameInterfaceImpl]
-
Steamworks
The Developer can add new subsystems, turn them on and off however they like it. Unreal Tournament 3 uses for Internet Servers GameSpy Protocol, while Toxikk, another UDK Game, uses the Steam Submodule for querying.
Suggested Solution
Its necessary to create a new Protocol for querying UDK Games in LANmode ?bIsLanMatch=true
. After that supported Games like Unreal Tournament 3, Toxikk, Renegade X can be queryied in LANmode, of course only for self hosted GSM. An additional Gameentry, like ut3lan
will be necessary.
Query Details
More Details about LAN Quering is written in the officiel UDK documentation. After messing around I noticed the following "flow" how UDK handles LAN Discovery.
- Client sends an Broadcast Package from Source and Destination Port UDP 14001
- Servers listening to this beacon answer on this with a Broadcast UDP Package Destination Port 14001 and all the informations, like server name etc. Payload looks like this for Unreal Tournament 3 (provided by RattleSN4KE)
- While this happens Client waits for UDP Packages listening on Port 14001
Sending the UDP Beacon Package to the server directly, results in the same behaviour: the Server sends an Broadcast with the Package