#165 (Dedicated server) – HoverRace

Ticket #165 (assigned enhancement)

Opened 7 months ago

Last modified 6 months ago

Dedicated server

Reported by: ryan Owned by: ryan
Priority: critical Milestone: HoverRace 1.24
Component: Dedicated Server Version: 1.23.1
Keywords: dedicated server udp hole punching host game IMR Cc:
Blocking: 53, 145 Blocked By:

Description

Ticket #145 details that the networking code needs to be rewritten totally.

This includes the writing of a dedicated server that can, among other things, route packets for users behind a firewall. But the model of the game architecture needs to be changed too. Instead of one client acting as the "server" and hosting the game, this dedicated server should perform that task. Therefore the clients will communicate with both each other and this server, and the server will take care of communication with the score servers and such.

This server should be able to

  • Send, receive, and forward packets for users who are behind NATs or firewalls
  • Host games
    • Manage connections for players
    • Report lap times to score server in real-time (as opposed to at the end of the race)
    • Communicate with IMR about currently running games (#53)
  • Calculate lag times to users when requested
  • Attempt to do UDP hole punching to connect users to each other directly

Attachments

client_server_negotiation.jpg Download (229.1 KB) - added by ryan 6 months ago.
negotiation process

Change History

Changed 7 months ago by ryan

  • status changed from new to assigned
  • version changed from 1.23 to 1.23.1
  • component changed from Client to Dedicated Server
  • blocking 145 added

Use new Dedicated Server component, and new version, and update tickets that this is blocking.

Changed 7 months ago by ryan

boost::asio (asynchronous I/O) can be used for the low-level network coding, which will make portability simple.

Changed 6 months ago by ryan

Designed communication structure between clients and server (attached). It says TCP but it'll likely be the exact same thing for UDP too, the communication sequence should be protocol independent.

Changed 6 months ago by ryan

negotiation process

Note: See TracTickets for help on using tickets.