Sparked 3D Mineshaft

Design specification for Local Seed Storage and the Seed HUD, including seed naming rules, stored values, query behavior, and localStorage structure. All times referenced in this document are in Phoenix, Arizona timezone.

Spec

Overview

Time Zone
Phoenix, Arizona (all displayed timestamps and time strings are interpreted in this timezone).
Seed Menu
The pull-down menu lists entries by Seed Name.
Seed Textbox
The textbox displays the corresponding Seed Value.
Persistence
Seeds are stored in localStorage by Name, each associated with a Value and BestTimes.
BestTimes
Stored in ascending order of duration (fastest/shortest first).

Note: Seeds produced by clicking Now use a UTC-labeled name with a Phoenix-local timestamp string, and store a millisecond Epoch value (see UTC / “Now” Seeds).
Rules

Seed Name Construction

  1. Numeric seeds store as int: followed by an integer.
  2. Non-numeric seeds store as asc: followed by double quotes around the seed.
  3. Blank seeds store as Default Level with no quotes and no prefix.
  4. “Now” seeds store as utc:"YYYY MM/DD HH:MM:SS.ZZZ". All components of this timestamp are Phoenix, Arizona time, and ZZZ is the millisecond component shown in the display string.
Examples

Seed Name and Value Examples

Type Stored Name (Menu) Stored Value (Textbox)
Numeric seed int:5 5
Non-numeric seed asc:"BOOBS" "BOOBS"
Blank seed Default Level ""
“Now” seed utc:"2026 01/02 19:40:00.425" 1767408000425

The Stored Name is what appears in the pull-down list. The Stored Value is what is shown in the textbox. The displayed timestamp in utc:"..." is Phoenix time.

Behavior

Query Seed Behavior (Reroll)

Clicking Reroll updates the URI query and reloads the page using &seed=... based on the current Seed Value.

Type Example Query Parameter
Numeric seed &seed=5
Non-numeric seed &seed=BOOBS
Blank seed &seed=
“Now” seed (Epoch ms) &seed=1767408000425
Note: The query string uses the Seed Value (not the Seed Name). Any displayed timestamp strings remain Phoenix-time.
Data

Local Storage Structure

Seeds are stored by Name and associated Value in localStorage. Each seed entry contains a BestTimes map keyed by rank.

Map3D: {
	Stage: {
		<Name1>: {
			Value: <Value1>,
			BestTimes: {
				<Rank1>: <Duration>,
				<Rank2>: <Duration>,
				<Rank3>: <Duration>,
				<Rank4>: <Duration>,
				<Rank5>: <Duration>,
				...
			}
		},
		<Name2>: {
			Value: <Value2>,
			BestTimes: {
				<Rank1>: <Duration>,
				<Rank2>: <Duration>,
				<Rank3>: <Duration>,
				<Rank4>: <Duration>,
				<Rank5>: <Duration>,
				...
			}
		},
		<Name3>: {
			Value: <Value3>,
			BestTimes: {
				<Rank1>: <Duration>,
				<Rank2>: <Duration>,
				<Rank3>: <Duration>,
				<Rank4>: <Duration>,
				<Rank5>: <Duration>,
				...
			}
		},
		...
	}
}

Root Key
Map3D
Namespace
Stage (contains seed entries keyed by Seed Name)
Seed Entry
Contains:
  • Value — the seed value used for reroll queries
  • BestTimes — a rank → duration mapping stored in ascending duration order
Time Note
Any stored/displayed timestamps (e.g., utc:"...") are treated as Phoenix, Arizona time strings.