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:
@@ -40,6 +40,14 @@
|
||||
#include "simulation2/Simulation2.h"
|
||||
#include "network/StunClient.h"
|
||||
|
||||
/**
|
||||
* 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;
|
||||
|
||||
CNetClient *g_NetClient = NULL;
|
||||
|
||||
/**
|
||||
@@ -334,9 +342,9 @@ void CNetClient::CheckServerConnection()
|
||||
return;
|
||||
}
|
||||
|
||||
// Report if we have a bad ping to the server
|
||||
// Report if we have a bad ping to the server.
|
||||
u32 meanRTT = m_Session->GetMeanRTT();
|
||||
if (meanRTT > DEFAULT_TURN_LENGTH_MP)
|
||||
if (meanRTT > NETWORK_BAD_PING)
|
||||
{
|
||||
PushGuiMessage(
|
||||
"type", "netwarn",
|
||||
@@ -857,7 +865,7 @@ bool CNetClient::OnClientPerformance(void *context, CFsmEvent* event)
|
||||
// Display warnings for other clients with bad ping
|
||||
for (size_t i = 0; i < message->m_Clients.size(); ++i)
|
||||
{
|
||||
if (message->m_Clients[i].m_MeanRTT < DEFAULT_TURN_LENGTH_MP || message->m_Clients[i].m_GUID == client->m_GUID)
|
||||
if (message->m_Clients[i].m_MeanRTT < NETWORK_BAD_PING || message->m_Clients[i].m_GUID == client->m_GUID)
|
||||
continue;
|
||||
|
||||
client->PushGuiMessage(
|
||||
|
||||
Reference in New Issue
Block a user