mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2026-01-29 17:38:16 +03:00
Seed with frame counter instead of SDL_GetTicks
Using SDL_GetTicks() to seed the Gravitron RNG caused many reproducibility issues while syncing https://tasvideos.org/7575S . To fix this, add a frame counter, which is a number that is incremented every frame and never resets, and use it instead. If someone needs to switch back to SDL_GetTicks() for old TASes, then provide the -seed-use-sdl-getticks command-line option for them.
This commit is contained in:
@@ -368,6 +368,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
char* baseDir = NULL;
|
||||
char* assetsPath = NULL;
|
||||
bool seed_use_sdl_getticks = false;
|
||||
|
||||
vlog_init();
|
||||
|
||||
@@ -478,6 +479,10 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
vlog_toggle_error(0);
|
||||
}
|
||||
else if (ARG("-seed-use-sdl-getticks"))
|
||||
{
|
||||
seed_use_sdl_getticks = true;
|
||||
}
|
||||
#undef ARG_INNER
|
||||
#undef ARG
|
||||
else
|
||||
@@ -546,6 +551,7 @@ int main(int argc, char *argv[])
|
||||
graphics.init();
|
||||
|
||||
game.init();
|
||||
game.seed_use_sdl_getticks = seed_use_sdl_getticks;
|
||||
|
||||
// This loads music too...
|
||||
if (!graphics.reloadresources())
|
||||
@@ -838,6 +844,8 @@ static void focused_end(void)
|
||||
|
||||
static enum LoopCode loop_end(void)
|
||||
{
|
||||
++game.framecounter;
|
||||
|
||||
//We did editorinput, now it's safe to turn this off
|
||||
key.linealreadyemptykludge = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user