Skip to content

Commit dc708cc

Browse files
committed
Merge pull request #547 from Goober5000/game_level_seed
improve RNG seeding
2 parents c049e73 + 5206220 commit dc708cc

File tree

3 files changed

+12
-26
lines changed

3 files changed

+12
-26
lines changed

code/fred2/fredstubs.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ void set_time_compression(float multiplier, float change_time){}
230230
fix game_get_overall_frametime() { return 0; }
231231

232232
//WMC
233-
void game_level_init(int seed){}
233+
void game_level_init(){}
234234
void game_post_level_init(){}
235235
camid game_render_frame_setup(){return camid();}
236236
void game_render_frame(camid cid){}

code/freespace2/freespace.cpp

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,6 @@ int last_single_step=0;
311311
int game_zbuffer = 1;
312312
static int Game_paused;
313313

314-
int Game_level_seed;
315-
316314
#define EXPIRE_BAD_CHECKSUM 1
317315
#define EXPIRE_BAD_TIME 2
318316

@@ -949,28 +947,18 @@ uint load_post_level_init;
949947
*
950948
* @return 0 on failure, 1 on success
951949
*/
952-
void game_level_init(int seed)
950+
void game_level_init()
953951
{
954952
game_busy( NOX("** starting game_level_init() **") );
955953
load_gl_init = (uint) time(NULL);
956-
// seed the random number generator
957-
if ( seed == -1 ) {
958-
// if no seed was passed, seed the generator either from the time value, or from the
959-
// netgame security flags -- ensures that all players in multiplayer game will have the
960-
// same randon number sequence (with static rand functions)
961-
if ( Game_mode & GM_NORMAL ) {
962-
Game_level_seed = (int) time(NULL);
963-
} else {
964-
Game_level_seed = Netgame.security;
965-
}
966-
} else {
967-
Assert( !(Game_mode & GM_MULTIPLAYER) );
968-
Game_level_seed = seed;
969-
}
970-
srand( Game_level_seed );
971954

972-
// semirand function needs to get re-initted every time in multiplayer
973-
if ( Game_mode & GM_MULTIPLAYER ){
955+
// seed the random number generator in multiplayer
956+
if ( Game_mode & GM_MULTIPLAYER ) {
957+
// seed the generator from the netgame security flags -- ensures that all players in
958+
// multiplayer will have the same random number sequence (with static rand functions)
959+
srand( Netgame.security );
960+
961+
// semirand function needs to get re-initted every time in multiplayer
974962
init_semirand();
975963
}
976964

@@ -1616,8 +1604,6 @@ DCF(show_cpu,"Toggles showing cpu usage")
16161604

16171605
#endif
16181606

1619-
int Game_init_seed;
1620-
16211607
DCF(use_joy_mouse,"Makes joystick move mouse cursor")
16221608
{
16231609
bool process = true;
@@ -1754,8 +1740,8 @@ void game_init()
17541740
// Moved from rand32, if we're gonna break, break immediately.
17551741
Assert(RAND_MAX == 0x7fff || RAND_MAX >= 0x7ffffffd);
17561742
// seed the random number generator
1757-
Game_init_seed = (int) time(NULL);
1758-
srand( Game_init_seed );
1743+
int game_init_seed = (int) time(NULL);
1744+
srand( game_init_seed );
17591745

17601746
Framerate_delay = 0;
17611747

code/freespace2/freespace.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ void game_unpause();
219219
//WMC - Stuff for scripting, these make the game go
220220
extern camid Main_camera;
221221

222-
extern void game_level_init(int seed = -1);
222+
extern void game_level_init();
223223
extern void game_post_level_init();
224224
extern camid game_render_frame_setup();
225225
extern void game_render_frame(camid cid);

0 commit comments

Comments
 (0)