I do not now, if it was suggested before. But would it be possible to implement the map download asynchrony?
I think of the following steps:
- player wants to join
- a snapshot/save of the game is created
- the new player downloads the map while the other can continue with the game
- when the new player has finished downloading, game stops
- another snapshot is created and the replay-data from snapshot one to this snapshot is sent to the new player
- new player applies replay-data
- game continues with new player
Gerhard