24 Days Ago
Dedicated Server (#1679) * Initial branch commit for dedi server message routing * Try to synchronize Connection State through ConnectionInfo where possible * Use Connection.All for filtered broadcasts so that will use ConnectionInfo if exists * TargetedMessage support for byte[] array for already packed messages, and pass in NetTransmission flags for routing as well * For now, one idea is to override SendRawMessage on MockConnection - for these type of Connection we can route through the host * Store Connection internal state if ConnectionInfo doesn't exist then we can just use that * Better synchronization of Connection State - now working as it was before, but should also synchronize other clients properly when on a dedicated server * For filtered connection list / broadcast - if we're the host then use the connections we have, otherwise we should use Connection.All * Include Connection with available connections when broadcasting - as Dedicated Server won't be included in Connection.All (maybe it should, or maybe people should just use Connection.Host) * Serialize TargetMessage flags as byte * system must be set to SendMessage to a Connection. Fix an issue with SenderId when receiving a TargetedMessage - this can't be local, so try to find the connection but if we can't find it just use the source. * Test logs * Some cleanup - fix issue where system isn't initialized so can't serialize. Could be wrong here, but only one system can be active so just use that. * Remove this log * Remove unusued code * Add NetTransmission flag support when using SendMessage via Steam Sockets * Don't forget to add arg to header * Clearer docs here, only log warning if networking debug is enabled here * Some tidy up here * Reset local connection state to Unconnected when closing network system - some debug log for other machine * Close these connections * Remove this log * Add Dedicated Server page to Project Config with its own option for a Startup Scene. When loading a game, if we're headless, use that if its set instead of the usual one. * Don't call INetworkListener.OnActive for dedicated server, similarly don't call OnDisconnected. OnConnected will never get called anyway because it doesn't go through the handshake. * This bit isn't needed actually * Test boot back to main menu * Properly get when disconnected * Use CollectionExtensions properly * Fix test, re-add system member * Fix this state --------- Co-authored-by: Garry Newman <garrynewman@users.noreply.github.com>