mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-27 04:41:23 +00:00
Determine latency with leveltime BS instead of nettics
This commit is contained in:
parent
656de08b96
commit
bc429ad4f8
3 changed files with 8 additions and 20 deletions
|
@ -4007,25 +4007,6 @@ FILESTAMP
|
||||||
&netbuffer->u.client4pak.cmd4, 1);
|
&netbuffer->u.client4pak.cmd4, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // Store the node's latency in tics on the ticcmd right as we receive it. I think this should be sync-stable
|
|
||||||
UINT8 latency = min(maketic - nettics[node], MAXPREDICTTICS-1); //@TODO add a cvar to allow setting this max
|
|
||||||
|
|
||||||
switch (netbuffer->packettype)
|
|
||||||
{
|
|
||||||
case PT_CLIENT4CMD:
|
|
||||||
netcmds[maketic%BACKUPTICS][(UINT8)nodetoplayer4[node]].latency = latency;
|
|
||||||
|
|
||||||
case PT_CLIENT3CMD:
|
|
||||||
netcmds[maketic%BACKUPTICS][(UINT8)nodetoplayer3[node]].latency = latency;
|
|
||||||
|
|
||||||
case PT_CLIENT2CMD:
|
|
||||||
netcmds[maketic%BACKUPTICS][(UINT8)nodetoplayer2[node]].latency = latency;
|
|
||||||
|
|
||||||
default:
|
|
||||||
netcmds[maketic%BACKUPTICS][netconsole].latency = latency;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// A delay before we check resynching
|
// A delay before we check resynching
|
||||||
// Used on join or just after a synch fail
|
// Used on join or just after a synch fail
|
||||||
if (resynch_delay[node])
|
if (resynch_delay[node])
|
||||||
|
|
|
@ -1567,6 +1567,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
|
||||||
lang += (cmd->angleturn<<16);
|
lang += (cmd->angleturn<<16);
|
||||||
|
|
||||||
cmd->angleturn = (INT16)(lang >> 16);
|
cmd->angleturn = (INT16)(lang >> 16);
|
||||||
|
cmd->latency = leveltime & 0xFF; // Send leveltime when this tic was generated to the server for control lag calculations
|
||||||
|
|
||||||
if (!hu_stopped)
|
if (!hu_stopped)
|
||||||
{
|
{
|
||||||
|
@ -2142,6 +2143,9 @@ void G_Ticker(boolean run)
|
||||||
players[i].kartstuff[k_throwdir] = 0;
|
players[i].kartstuff[k_throwdir] = 0;
|
||||||
|
|
||||||
G_CopyTiccmd(cmd, &netcmds[buf][i], 1);
|
G_CopyTiccmd(cmd, &netcmds[buf][i], 1);
|
||||||
|
|
||||||
|
// Use the leveltime sent in the player's ticcmd to determine control lag
|
||||||
|
cmd->latency = min((leveltime & 0xFF) - cmd->latency, MAXPREDICTTICS-1); //@TODO add a cvar to allow setting this max
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6678,7 +6678,10 @@ static void P_MovePlayer(player_t *player)
|
||||||
if (add_delta) {
|
if (add_delta) {
|
||||||
player->mo->angle += angle_diff<<16;
|
player->mo->angle += angle_diff<<16;
|
||||||
player->mo->angle &= ~0xFFFF; // Try to keep the turning somewhat similar to how it was before?
|
player->mo->angle &= ~0xFFFF; // Try to keep the turning somewhat similar to how it was before?
|
||||||
CONS_Printf("leftover turn (%s): %d\n", player_names[player-players], (INT16) (cmd->angleturn - (player->mo->angle>>16)));
|
CONS_Printf("leftover turn (%s): %5d or %4d%%\n",
|
||||||
|
player_names[player-players],
|
||||||
|
(INT16) (cmd->angleturn - (player->mo->angle>>16)),
|
||||||
|
(INT16) (cmd->angleturn - (player->mo->angle>>16)) * 100 / (angle_diff ?: 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue