Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How can we handle prefilling? #21

Open
aspiwack opened this issue Jul 20, 2019 · 1 comment
Open

How can we handle prefilling? #21

aspiwack opened this issue Jul 20, 2019 · 1 comment

Comments

@aspiwack
Copy link
Owner

After speaking with some in the of the alttpr community, it appears that the only place where the shuffle, there, is purposely non-uniform is Ganon's Tower.

In early version of the randomiser, Ganon's Tower frequently had quite a few good items (I've read that 3 swords was not uncommon!). So the alttpr devs devised a way to make Ganon's Tower less likely to have items: before shuffling items around, Ganon's Tower is pre-emptively filled with junk items (ruppees, and the like).

For us it seems to mean applying a mask: a number of locations are not allowed to have assignments (this is equivalent to prefilling). These locations are not known in advance (in the current v30, the number of prefilled location is random in a range, in v31, the number will be randomly selected but will also depend on the number of crystals required to open Ganon's Tower).

It's not really clear how to handle this. On the one hand it's fairly easy to apply this sort of modification to a ZDD, but that requires an efficient (path counting) ZDD library on the randomiser side. It's even easier to model in a SAT solver, but the randomiser is not capable of running online (generally speaking, running a SAT solver online is asking for all sorts of troubles).

So what would be a good way?

@aspiwack
Copy link
Owner Author

To confirm the fact that uniformity is otherwise a concern here is a quote from the v31 overview document:

This is the only intentional weighting we ever apply on item distribution because we believe maximum randomization is a priority goal for a randomizer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant