The jank in particular is explained here https://discord.com/channels/808039310850130000/1019824570938699798/1197901294728388759 but the short version is that because the logic loops through the map in a fixed order, it will take many spheres to backtrack through areas in a different direction at a different age/time. This fixes the problem by force-processing each region we spread ToDAccess to. This itself does hurt performance but by a reasonable amount as it also reduces the number of full loops made.
This is not a 100% fix as some event access stuff can also cause sphere skipping if it appears in the wrong order.
To compensate for the extra generation time, I have removed sphere enforcement when not generating a playthrough, reducing the looping time needed. This seems to make things up to 33% faster than develop-rando, but also seems very sensitive to placement failures, likely as the costs of the fix are frontloaded in generation.
Fixes:
Makes the playthrough fill spheres more consistently, making it easier to read
Removes sphere enforcement when not generating the playthrough, improving seed generation performance. This increase seems to be highly variable
Log how many times the seed has retried generation
Reset a sphere when EventAccess enables something, to fix cases of playthrough jank caused by an event being enabled after a previous location checked it.
Cleanups:
Separated out handling regions into a function, reducing code repetition
Moved some playthrough generation code into the processing functions to enable the above
Moved time pass variables into the gals struct
Separated out handling the pedestal time travel into a function
Put the loop inside ProcessExit, making it ProcessExits, reducing repetition
Use do-while loops instead of a fist run var
merge the various "do we loop again" vars into a single var logicUpdated
The jank in particular is explained here https://discord.com/channels/808039310850130000/1019824570938699798/1197901294728388759 but the short version is that because the logic loops through the map in a fixed order, it will take many spheres to backtrack through areas in a different direction at a different age/time. This fixes the problem by force-processing each region we spread ToDAccess to. This itself does hurt performance but by a reasonable amount as it also reduces the number of full loops made.
This is not a 100% fix as some event access stuff can also cause sphere skipping if it appears in the wrong order.
To compensate for the extra generation time, I have removed sphere enforcement when not generating a playthrough, reducing the looping time needed. This seems to make things up to 33% faster than develop-rando, but also seems very sensitive to placement failures, likely as the costs of the fix are frontloaded in generation.
Fixes:
Cleanups:
Build Artifacts