Roman971 / OoT-Randomizer

A randomizer for Ocarina of Time.
Other
96 stars 21 forks source link

Generation never succeeds with those settings and multiworld #74

Closed Surdjak closed 1 year ago

Surdjak commented 1 year ago

Settings string: HSS4BGBSL62AEMTDDSPMFQNA4Q79MADEBAATXR9N5MX89TSAAEAC2C8CAEAAANANHBATB8MA8ES2T6D

Entrance placement attempt count exceeded for world 0. Retry a few times or reach out to Support on Discord for help. Traceback (most recent call last): File "D:\N64\Randomizers\OoT-Randomizer-Fork\OoTRandomizer.py", line 64, in start main(settings) File "D:\N64\Randomizers\OoT-Randomizer-Fork\Main.py", line 62, in main spoiler = generate(settings, window=window) File "D:\N64\Randomizers\OoT-Randomizer-Fork\Main.py", line 129, in generate worlds = build_world_graphs(settings, window=window) File "D:\N64\Randomizers\OoT-Randomizer-Fork\Main.py", line 184, in build_world_graphs set_entrances(worlds) File "D:\N64\Randomizers\OoT-Randomizer-Fork\EntranceShuffle.py", line 435, in set_entrances shuffle_random_entrances(worlds) File "D:\N64\Randomizers\OoT-Randomizer-Fork\EntranceShuffle.py", line 605, in shuffle_random_entrances shuffle_entrance_pool(world, worlds, entrance_pool, target_entrance_pools[pool_type], locations_to_ensure_reachable, placed_one_way_entrances=placed_one_way_entrances) File "D:\N64\Randomizers\OoT-Randomizer-Fork\EntranceShuffle.py", line 700, in shuffle_entrance_pool raise EntranceShuffleError('Entrance placement attempt count exceeded for world %d. Retry a few times or reach out to Support on Discord for help.' % world.id) EntranceShuffle.EntranceShuffleError: Entrance placement attempt count exceeded for world 0. Retry a few times or reach out to Support on Discord for help.

Tried generating with those settings but it always fail. Removing the mixed entrance pool solve the issue as well as removing the multiworld. So i guess those two settings does not like each other.

fenhl commented 1 year ago

With how entrance randomization is currently implemented, mixed pools has a low success rate, which is multiplied for each world. I suggest increasing the retry_count parameter to something like 64:

https://github.com/Roman971/OoT-Randomizer/blob/9c284c8987d587a00a74950e403e0c8b4f0258c8/EntranceShuffle.py#L662

Surdjak commented 1 year ago

Ok so it can succeed, it just has a low success rate, got it. About those retries, does using a seed lock the tries ? Like the 20 first tries are always the same and thus will never ever succeed ?

fenhl commented 1 year ago

Yes. The same seed on the same version and the same settings will either always succeed or always fail.