Seeds

Seeds are a game mechanic in UnderMine

Seeds can be used in both Undermine and Othermine and are useful for creating consistency between runs.

Players may find inconsistency between runs or when comparing with other players for multiple reasons. Seeds cannot guarantee a perfectly consistent run every time, and there are many factors of the game that are not effected by seeds that can cause changes to results in a run. Some actions taken by the player may also alter the results that using seeds give.

There are places where Seeds can be useful, location dependent unlocks such as, , Dogs, and Kurtz can be found rapidly if the player knows the right seed.

Seed Selector
In the 1.1.0 update a Seed Selector was added to the game.

This seed selector is only accessible in the hub, and can be open by going your pause menu and clicking on the option seed.

WARNING:Any relics, potions, blessings, or items you have will be removed when confirming a new seed! This includes items that were recently unlocked with Thorium.

The seed selector for Othermine can only be accessed in the Terminal (north room of the hub) after the player has been stabbed but before entering the portal.

Functionality of Seeds
While seed selection was new to the 1.1.0 update, seeded generation has been at core of the game since its inception. In earlier versions of the editing of the Save.json file was required to specify a seed. (This can still be used to change a seed midrun)

Floor Layout
The main factors are:
 * Tutorial floor completion
 * Lillyth saved (blessing altar rooms unlocked)
 * Relics that effect room layout ( and )
 * Other NPC tasks can effect early floors in Delvemore Dungeon aswell as The Goldmines.
 * Hoodie travel can force Relic Altar rooms to move causing changes in floor layout for a single floor.

Using the seed a person with sufficient knowledge of how the code works can determine all the rooms that will show up, along with their locations. Currently external tools for predicting this are still in development.

Relics
Seed generation can be used for predictably finding relics. However, there are various ways the player can create inconsistency.

One of the main things that can cause inconsistency between players as well as from one run to the next is relics unlocked from Wayland. Even having one single relic unlocked can effect the generation. So every time a player unlocks a new relic from Wayland they will see an entirely different set of relics on seeds they played previously.

Also choices that are made by a player can dramatically change the results of what a player will find.
 * Taking a relic - as an example if a player finds a on the first floor of a seed, choosing to pick up the relic vs choosing to not take it will likely change the relics that show up in the Shop as well as the generation of relics on all future floors.
 * Room entry order - choosing to enter the shop before the the relic room on a floor can change both of the relic that show up in comparison to choosing to enter the relic room before the shop. This is the case with any room that has relics in it. The relic is determined on entering the room, not on entering the floor.

Curses
Curses are seeded, and for a given seed and save file the Major curses are generally predictable. However as always there are things the player can do to break the order, it is harder to do with curses though. Typically changing the order of curses requires the player to get either
 * a different number of curses at once
 * take a minor curse before a major curse rather than the major curse before the minor
 * can also effect the order of curses.

Default Random State
Digging into the code reveals some interesting behaviors. Due to the nature of the game engine and the way the game is programmed features that are seemingly random like are determined based on the value of the default random state variable.
 * Black Rabbit Shop Stock
 * Tus's relic availability
 * the damage dealt by the player
 * critical strike chance
 * cursed torch spawns
 * blessing availability at blessing altars.
 * and more

This variable changes based off things like This potentially means that an entirely deterministic run could be possible with a tool assisted run, however it is unlikely that a person would be able to keep track of things like this without a tool.
 * how many attacks enemies make
 * the damage values that are dealt by either the player or enemies
 * how many bombs a player uses
 * the number of Containers or Plants destroyed
 * and more

Save File Types
The purpose of seeds is to create consistency. While seeds do this, there is many more factors at play that can easily lead to inconsistency. Since at the time of writing this the tools to search and convey seeds easily are in their infancy most dialogue discussing seeds between players requires standardization to make for useful discourse. That is why players will refer to save types when discussing seed. More specifically there are two main types of files that players use for standardization. Those are New Saves, and 100% Saves

New Saves
If a player starts a new save and sets a seed, that seed will be reliable. As long as the player does not unlock any additional relics, potions, blessings, etc. There will be general consistency between save files. These files will only have Initially Unlocked Items unlocked which makes for consistent seeds.

New Save files can have two main subcategories which are basically are Tutorial complete, or Tutorial incomplete. These are mainly used for discussing relics because the relic loot table in the tutorial room is different from the one on all other Undermine floors.

100% Saves
100% Saves require the player to have all items unlocked. This includes all relics, potions, blessings, etc. it creates consistency in the fact that no more items can be unlocked (excluding future updates)