Skip to content

Commit

Permalink
Merge pull request #317 from Chomenor/delta_print_fix
Browse files Browse the repository at this point in the history
Server: Delta snapshot developer print fix
  • Loading branch information
ec- authored Jan 25, 2025
2 parents 5aa9e75 + 7b0787d commit a33f41f
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 15 deletions.
3 changes: 2 additions & 1 deletion code/server/server.h
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,8 @@ typedef struct client_s {
qboolean downloadEOF; // We have sent the EOF block
int downloadSendTime; // time we last got an ack from the client

int deltaMessage; // frame last client usercmd message
qboolean deltaActive; // delta snapshots enabled
int deltaMessage; // message to create delta snapshot from
int lastPacketTime; // svs.time when packet was last received
int lastConnectTime; // svs.time when connection started
int lastDisconnectTime;
Expand Down
11 changes: 4 additions & 7 deletions code/server/sv_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -1167,7 +1167,7 @@ void SV_ClientEnterWorld( client_t *client ) {
ent->s.number = clientNum;
client->gentity = ent;

client->deltaMessage = client->netchan.outgoingSequence - (PACKET_BACKUP + 1); // force delta reset
client->deltaActive = qfalse;
client->lastSnapshotTime = svs.time - 9999; // generate a snapshot immediately

// call the game begin function
Expand Down Expand Up @@ -2135,11 +2135,8 @@ static void SV_UserMove( client_t *cl, msg_t *msg, qboolean delta ) {
usercmd_t cmds[MAX_PACKET_USERCMDS], *cmd;
const usercmd_t *oldcmd;

if ( delta ) {
cl->deltaMessage = cl->messageAcknowledge;
} else {
cl->deltaMessage = cl->netchan.outgoingSequence - ( PACKET_BACKUP + 1 ); // force delta reset
}
cl->deltaActive = delta;
cl->deltaMessage = cl->messageAcknowledge;

cmdCount = MSG_ReadByte( msg );

Expand Down Expand Up @@ -2194,7 +2191,7 @@ static void SV_UserMove( client_t *cl, msg_t *msg, qboolean delta ) {
}

if ( cl->state != CS_ACTIVE ) {
cl->deltaMessage = cl->netchan.outgoingSequence - ( PACKET_BACKUP + 1 ); // force delta reset
cl->deltaActive = qfalse;
return;
}

Expand Down
9 changes: 2 additions & 7 deletions code/server/sv_snapshot.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,17 +129,12 @@ static void SV_WriteSnapshotToClient( const client_t *client, msg_t *msg ) {
frame = &client->frames[ client->netchan.outgoingSequence & PACKET_MASK ];

// try to use a previous frame as the source for delta compressing the snapshot
if ( /* client->deltaMessage <= 0 || */ client->state != CS_ACTIVE ) {
// client is asking for a retransmit
if ( !client->deltaActive || client->state != CS_ACTIVE ) {
oldframe = NULL;
lastframe = 0;
} else if ( client->netchan.outgoingSequence - client->deltaMessage >= (PACKET_BACKUP - 3) ) {
// client hasn't gotten a good message through in a long time
if ( com_developer->integer ) {
if ( client->deltaMessage != client->netchan.outgoingSequence - ( PACKET_BACKUP + 1 ) ) {
Com_Printf( "%s: Delta request from out of date packet.\n", client->name );
}
}
Com_DPrintf( "%s: Delta request from out of date packet.\n", client->name );
oldframe = NULL;
lastframe = 0;
} else {
Expand Down

0 comments on commit a33f41f

Please sign in to comment.