r91 - trunk/code/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Sep 16 21:36:38 EDT 2005


Author: zakk
Date: 2005-09-16 21:36:38 -0400 (Fri, 16 Sep 2005)
New Revision: 91

Modified:
   trunk/code/server/server.h
   trunk/code/server/sv_ccmds.c
   trunk/code/server/sv_game.c
   trunk/code/server/sv_init.c
   trunk/code/server/sv_main.c
   trunk/code/server/sv_snapshot.c
Log:
Patch from Tim Angus, to fix a longstanding bug
in the server, wherein running the server for
more than 24 hours would cause the game to
exhibit weirdness as described here:
http://forums.wireheadstudios.org/index.php?act=ST&f=11&t=2749

That page would also indicate that more work
needs to be done if the map isn't going to change
for more than 24 hours.



Modified: trunk/code/server/server.h
===================================================================
--- trunk/code/server/server.h	2005-09-12 15:41:05 UTC (rev 90)
+++ trunk/code/server/server.h	2005-09-17 01:36:38 UTC (rev 91)
@@ -78,6 +78,7 @@
 	int				gameClientSize;		// will be > sizeof(playerState_t) due to game private data
 
 	int				restartTime;
+	int				time;
 } server_t;
 
 

Modified: trunk/code/server/sv_ccmds.c
===================================================================
--- trunk/code/server/sv_ccmds.c	2005-09-12 15:41:05 UTC (rev 90)
+++ trunk/code/server/sv_ccmds.c	2005-09-17 01:36:38 UTC (rev 91)
@@ -272,8 +272,10 @@
 	SV_RestartGameProgs();
 
 	// run a few frames to allow everything to settle
-	for ( i = 0 ;i < 3 ; i++ ) {
-		VM_Call( gvm, GAME_RUN_FRAME, svs.time );
+	for (i = 0; i < 3; i++)
+	{
+		VM_Call (gvm, GAME_RUN_FRAME, sv.time);
+		sv.time += 100;
 		svs.time += 100;
 	}
 
@@ -314,7 +316,8 @@
 	}	
 
 	// run another frame to allow things to look at all the players
-	VM_Call( gvm, GAME_RUN_FRAME, svs.time );
+	VM_Call (gvm, GAME_RUN_FRAME, sv.time);
+	sv.time += 100;
 	svs.time += 100;
 }
 

Modified: trunk/code/server/sv_game.c
===================================================================
--- trunk/code/server/sv_game.c	2005-09-12 15:41:05 UTC (rev 90)
+++ trunk/code/server/sv_game.c	2005-09-17 01:36:38 UTC (rev 91)
@@ -898,7 +898,7 @@
 	
 	// use the current msec count for a random seed
 	// init for this gamestate
-	VM_Call( gvm, GAME_INIT, svs.time, Com_Milliseconds(), restart );
+	VM_Call (gvm, GAME_INIT, sv.time, Com_Milliseconds(), restart);
 }
 
 

Modified: trunk/code/server/sv_init.c
===================================================================
--- trunk/code/server/sv_init.c	2005-09-12 15:41:05 UTC (rev 90)
+++ trunk/code/server/sv_init.c	2005-09-17 01:36:38 UTC (rev 91)
@@ -438,9 +438,11 @@
 	sv_gametype->modified = qfalse;
 
 	// run a few frames to allow everything to settle
-	for ( i = 0 ;i < 3 ; i++ ) {
-		VM_Call( gvm, GAME_RUN_FRAME, svs.time );
-		SV_BotFrame( svs.time );
+	for (i = 0;i < 3; i++)
+	{
+		VM_Call (gvm, GAME_RUN_FRAME, sv.time);
+		SV_BotFrame (sv.time);
+		sv.time += 100;
 		svs.time += 100;
 	}
 
@@ -495,8 +497,9 @@
 	}	
 
 	// run another frame to allow things to look at all the players
-	VM_Call( gvm, GAME_RUN_FRAME, svs.time );
-	SV_BotFrame( svs.time );
+	VM_Call (gvm, GAME_RUN_FRAME, sv.time);
+	SV_BotFrame (sv.time);
+	sv.time += 100;
 	svs.time += 100;
 
 	if ( sv_pure->integer ) {

Modified: trunk/code/server/sv_main.c
===================================================================
--- trunk/code/server/sv_main.c	2005-09-12 15:41:05 UTC (rev 90)
+++ trunk/code/server/sv_main.c	2005-09-17 01:36:38 UTC (rev 91)
@@ -785,7 +785,7 @@
 
 	sv.timeResidual += msec;
 
-	if (!com_dedicated->integer) SV_BotFrame( svs.time + sv.timeResidual );
+	if (!com_dedicated->integer) SV_BotFrame (sv.time + sv.timeResidual);
 
 	if ( com_dedicated->integer && sv.timeResidual < frameMsec ) {
 		// NET_Sleep will give the OS time slices until either get a packet
@@ -835,15 +835,16 @@
 	// update ping based on the all received frames
 	SV_CalcPings();
 
-	if (com_dedicated->integer) SV_BotFrame( svs.time );
+	if (com_dedicated->integer) SV_BotFrame (sv.time);
 
 	// run the game simulation in chunks
 	while ( sv.timeResidual >= frameMsec ) {
 		sv.timeResidual -= frameMsec;
 		svs.time += frameMsec;
+		sv.time += frameMsec;
 
 		// let everything in the world think and move
-		VM_Call( gvm, GAME_RUN_FRAME, svs.time );
+		VM_Call (gvm, GAME_RUN_FRAME, sv.time);
 	}
 
 	if ( com_speeds->integer ) {

Modified: trunk/code/server/sv_snapshot.c
===================================================================
--- trunk/code/server/sv_snapshot.c	2005-09-12 15:41:05 UTC (rev 90)
+++ trunk/code/server/sv_snapshot.c	2005-09-17 01:36:38 UTC (rev 91)
@@ -160,7 +160,7 @@
 
 	// send over the current server time so the client can drift
 	// its view of time to try to match
-	MSG_WriteLong (msg, svs.time);
+	MSG_WriteLong (msg, sv.time);
 
 	// what we are delta'ing from
 	MSG_WriteByte (msg, lastframe);




More information about the quake3-commits mailing list