forked from mirrors/0ad
Increase MP Command delay to 4 turns, decrease MP turns to 200ms.
To hide network latency, MP turns send commands not for the next turn but N turns after that (introduced inc684c211a2). Further, MP turn length was increased to 500ms compared to 200ms SP turns (introduced in6a15b78c98). Unfortunately, increasing MP turn length has negative consequences: - makes pathfinding/unit motion much worse & unit behaviour worse in general. - makes the game more 'lag-spikey', since computations are done less often, but thus then can take more time. This diff essentially reverts6a15b78c98, instead increasing COMMAND_DELAY from 2 to 4 in MP. This: - Reduces the 'inherent command lag' in MP from 1000ms to 800ms - Increases the lag range at which MP will run smoothtly from 500ms to 600ms - makes SP and MP turns behave identically again, removing the hindrances described above. As a side effect, single-player was not actually using COMMAND_DELAY, this is now done (can be used to simulate MP command lag). Refs #3752 Differential Revision: https://code.wildfiregames.com/D3275 This was SVN commit r25001.
This commit is contained in:
@@ -67,6 +67,14 @@ constexpr int FAILED_PASSWORD_TRIES_BEFORE_BAN = 3;
|
||||
*/
|
||||
static const int HOST_SERVICE_TIMEOUT = 50;
|
||||
|
||||
/**
|
||||
* Once ping goes above turn length * command delay,
|
||||
* the game will start 'freezing' for other clients while we catch up.
|
||||
* Since commands are sent client -> server -> client, divide by 2.
|
||||
* (duplicated in NetServer.cpp to avoid having to fetch the constants in a header file)
|
||||
*/
|
||||
constexpr u32 NETWORK_BAD_PING = DEFAULT_TURN_LENGTH * COMMAND_DELAY_MP / 2;
|
||||
|
||||
CNetServer* g_NetServer = NULL;
|
||||
|
||||
static CStr DebugName(CNetServerSession* session)
|
||||
@@ -604,7 +612,7 @@ void CNetServerWorker::CheckClientConnections()
|
||||
message = msg;
|
||||
}
|
||||
// Report if the client has bad ping
|
||||
else if (meanRTT > DEFAULT_TURN_LENGTH_MP)
|
||||
else if (meanRTT > NETWORK_BAD_PING)
|
||||
{
|
||||
CClientPerformanceMessage* msg = new CClientPerformanceMessage();
|
||||
CClientPerformanceMessage::S_m_Clients client;
|
||||
|
||||
Reference in New Issue
Block a user