Add balanced algorithm

-From KevinCathcart, adds a "balanced" algorithm that, in theory, fixes the dungeon bias of the v26/v27 algorithm while maintaining the desirable amount of randomness it provides.
This commit is contained in:
AmazingAmpharos 2017-11-11 15:28:34 -06:00 committed by GitHub
parent fe3bcd52a2
commit 9af7052e5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 11 deletions

View File

@ -90,14 +90,15 @@ if __name__ == '__main__':
category, be randomly progressive or not.
Link will die in one hit.
''')
parser.add_argument('--algorithm', default='vt26', const='vt26', nargs='?', choices=['freshness', 'flood', 'vt21', 'vt22', 'vt25', 'vt26'],
parser.add_argument('--algorithm', default='balanced', const='balanced', nargs='?', choices=['freshness', 'flood', 'vt21', 'vt22', 'vt25', 'vt26', 'balanced'],
help='''\
Select item filling algorithm. (default: %(default)s
balanced: vt26 derivitive that aims to strike a balance between
the overworld heavy vt25 and the dungeon heavy vt26
algorithm.
vt26: Shuffle items and place them in a random location
that it is not impossible to be in. This includes
dungeon keys and items. Includes slight deliberate
bias against having too many desireable items in
Ganon's Tower.
dungeon keys and items.
vt25: Shuffle items and place them in a random location
that it is not impossible to be in.
vt21: Unbiased in its selection, but has tendency to put

4
Gui.py
View File

@ -128,8 +128,8 @@ def guiMain(args=None):
algorithmFrame = Frame(drowDownFrame)
algorithmVar = StringVar()
algorithmVar.set('vt26')
algorithmOptionMenu = OptionMenu(algorithmFrame, algorithmVar, 'freshness', 'flood', 'vt21', 'vt22', 'vt25', 'vt26')
algorithmVar.set('balanced')
algorithmOptionMenu = OptionMenu(algorithmFrame, algorithmVar, 'freshness', 'flood', 'vt21', 'vt22', 'vt25', 'vt26', 'balanced')
algorithmOptionMenu.pack(side=RIGHT)
algorithmLabel = Label(algorithmFrame, text='Item distribution algorithm')
algorithmLabel.pack(side=LEFT)

View File

@ -108,15 +108,19 @@ This is only noticeably different if the --shuffleganon option is enabled.
Select game difficulty. Affects available itempool. (default: normal)
```
--algorithm [{freshness,flood,vt21,vt22,vt25}]
--algorithm [{freshness,flood,vt21,vt22,vt25,vt26,balanced}]
```
Select item filling algorithm.
### Balanced (Default)
This is a variation of vt26 that aims to strike a balance between the overworld heavy vt25 and the dungeon heavy vt26 algorithm.
It does this by reshuffling the remaining locations after placing dungeon items.
### VT26 (Default)
Items and locations are shuffled like in VT25, and dungeon items are now placed using the same algorithm. It includes
a slight deliberate bias against having too many desireable items in Ganon's Tower to help counterbalance the sheer number
of chests in that single location.
Items and locations are shuffled like in VT25, and dungeon items are now placed using the same algorithm. When gannon is not
shuffled it includes a slight deliberate bias against having too many desireable items in Ganon's Tower to help counterbalance
the sheer number of chests in that single location.
### VT25
Items and locations are shuffled and placed from the top of the lists. The only thing preventing an item from being placed into a spot
@ -231,7 +235,7 @@ Use to select a different sprite sheet to use for Link. Path to a binary file of
--beatableonly
```
If set, will only ensure the goal can be achieved, but not necessarily that all locations are reachable. Currently only affects VT25 algorithm.
If set, will only ensure the goal can be achieved, but not necessarily that all locations are reachable. Currently only affects VT25, VT26 and balanced algorithms.
```
--shuffleganon