OptionalphaseStarting phase, 0–1 with 0 = midwinter and 0.5 = midsummer. Default 0.25 (spring).
OptionalscopeWhether the map spans a range of climates or sits inside one. Default
'continental'. See SeasonScope — this picks which set of options
below has any effect.
OptionaldaysDays in a year — how many day/night cycles the phase takes to come around. Default 8.
OptionaldayReal seconds per day, matching DayNightOptions.dayLength, for SeasonCycle.advance. Default 120.
OptionalpausedStart with the phase frozen (drive it via setPhase). Default false.
OptionalpolarHow far midwinter drags the temperature down at the poles, in
temperature-field units (the same 0–1 scale computeTemperature writes).
Default 0.55.
OptionalequatorThe same swing at the equator. Much smaller than polarAmplitude on purpose — that gap is what makes the snowline descend the map through autumn rather than the whole world fading white at once. Default 0.08.
OptionalhemisphereWhich map edge is the equator. Must match the map's TemperatureModelOptions. Default 'both'.
OptionallocalLocal scope: the temperature the whole map sits at in high summer. Wants to
be clear of the foliage tint's greenTemp (0.5) so midsummer is unambiguous
everywhere. Default 0.78.
OptionallocalLocal scope: how far midwinter pulls that down. Wants to carry the map past
every threshold that matters — bareTemp (0.26), snowThreshold (0.22),
water's freezePoint (0.12) — or winter never fully arrives. Default 0.72.
OptionallocalLocal scope: how much the map's own temperature field staggers the turn, so the whole map doesn't flip on one frame. The field is reused as the stagger rather than as the climate — scaled this far down, its latitude ramp reads as a few cells turning first, and its elevation cooling as the high ground leading, which is exactly the variation a valley should show.
Deliberately small: the stagger has to be narrower than the swing, or the promise that a hard winter strips every tree stops holding. Default 0.1.
OptionalsnowEffective temperature at or below which snow lies. Default 0.22.
OptionalbandWidth of the soft edge on the snow threshold. Larger = a hazier snowline. Default 0.1.
OptionalaccumulationSnow depth gained per second when SeasonCycle.apply is given a dt. Default 0.35.
OptionalmeltSnow depth lost per second when melting. Faster than it falls, as thaws go. Default 0.5.
OptionalenabledShow or hide snow. Defaults to true when configureSeason is called.
OptionalcolorTint multiplied over the snow color. Default white (the pack's snow texture as authored).
OptionalslopeHow strongly slope sheds snow: 1 leaves cliff faces bare, 0 buries everything regardless of angle. Default 1.
OptionalnoiseHow much noise frays the snowline. 0 is a clean contour. Default 0.5.
OptionalsnowTexture-array layer holding the snow surface, for materials that sample the
terrain atlas. -1 falls back to a flat SnowAppearanceOptions.color.
ChunkManager resolves this from the pack's snow terrain automatically.
OptionalfoliageFoliage tint styling, for materials carrying attachSeasonalTint or the terrain shader.
OptionaltemperatureOptions to rebuild the base temperature field with when no
ClimateData is supplied. Pass the same ones the map was generated
with — climateData.temperatureOptions records them — or the seasons will
be computed against a different climate than the biomes were.
OptionalapplySeconds between seasonal passes over the map. The pass is O(cells), so on a continent-scale map running it every frame is waste — snow does not move fast enough to notice. Default 0.25.
OptionalterrainFoliage styling for the ground only, applied over SeasonAppearanceOptions.foliage.
The two want to differ. Ground cover turns straw where a wood turns gold,
and the terrain shader ships that way already — this is for tuning it
without dragging every tree along, which is what setting foliage alone
would do.
Season options plus the rendering and wiring knobs HexWorld.setSeasons adds.