ori-community / rando-ui

Web UI and Launcher for the Ori and the Will of the Wisps Randomizer
https://wotw.orirando.com
MIT License
5 stars 6 forks source link

Item Pool Customization #68

Open SiriusAshling opened 2 years ago

SiriusAshling commented 2 years ago

Managing the item pool through headers is a rather poor user experience if one wants heavy customization or to change specific small details that don't correlate to an official header.

The item pool could be better managed through a specialized interface. The Blind Forest randomizer has an example of this.

Additional complications for this game arise through headers defining custom items. Initially a customization for the "normal" items would already be helpful and a definite improvement. To properly interface with the header selection some problems will have to be solved though.

Below a suggestion on how the concept could be implemented:

Initial State

There is a defined default item pool which reflects the seedgen default item pool. The initial state of the item pool tab is these items and their corresponding amounts, plus a set of common pickups we may want to present, but don't have in the default item pool, such as the teleporters with a zero count.

Header modifiers

Headers can increase or decrease the count of items in the pool, this is applied to the default item pool. As per #7 headers should be able to define groups - headers of the "item pool" group should be displayed in the item pool tab for clarity and visibility, including custom headers tagged as such. For the user they represent buttons that quickly and easily modify the item pool, akin to the presets presented in the blind forest counterpart, but modular in that the presets aren't always mutually exclusive. If a header adds an item that is not already in the list, it could get added at the top and using the !!name command entry from the header as a display name if given (item code otherwise).

User modifiers

The user can do manual modifications of item counts. When generating the seed, this will be added to the custom header part as !!add and !!remove commands (It may be useful to track the state as how much the user has modified the item counts instead of tracking absolute numbers). Lowest amount should always be zero, which has to be accounted for when e.g. the user removes a teleporter manually, but then removes the teleporter header entirely, which should not drop it to minus one. At the top of the list there could be a plus button to add new entries with a name and an item code (using the headerlang extension if possible), the first could be used as a !!name command in the resulting header.

Save a custom item pool

To avoid having to reenter the item pool details every time, a "save this item pool" button could be presented, which performs the conversion into a header as when generating the seed, but then saves it as a custom header tagged to be listed in the item pool tab. The button press could show a modal to name the resulting header before confirmation.

Custom Presets

In Custom Presets (#11) there is no field for arbitrary header code. Either such a field would have to be added, or the routine described in 4) would be used, asking to name the custom item pool and saving it as a custom header when attempting to create a custom preset form the current settings, then including that header in the preset.

timoschwarzer commented 2 years ago

In Custom Presets (#11) there is no field for arbitrary header code. Either such a field would have to be added, or the routine described in 4) would be used, asking to name the custom item pool and saving it as a custom header when attempting to create a custom preset form the current settings, then including that header in the preset.

The UI and the server don't use the preset functionality from seedgen. Preset settings are applied before generating the seed.

SiriusAshling commented 2 years ago

Well right now the UI doesn't have custom presets at all. When it supports them, I would rather have it use the already existing functionality from seedgen instead of creating a separate unrelated system to achieve the same goal. Otherwise it would further extend the issues around the interface behaving different than using seedgen directly.

MunWolf commented 2 years ago

This feature would be pretty great to have so we should prioritize it pretty highly, in the same vein as header categories.

SiriusAshling commented 2 years ago

Reaaaaally weird case are warps which will add a subset of possible items, say 8 out of 40 possible choices. Probably fine to not care about that for a while :p