Ice lake seed checker

Rust decides whether the optional parts of an ice lake exist from the world seed and the lake's position, not by chance. Enter a lake placement and a seed to see what spawns, or search for seeds that give you the layout you want.

x, y, z — filled in automatically when you load a map file

Slider covers 1 to 100,000. Type any seed up to 4,294,967,295.

    Find seeds

    How this works

    Each optional group inside an ice lake carries a RandomDestroy component. When the monument spawns, the game runs:

    num = SeedEx.Seed(groupWorldPosition, World.Seed + component.Seed)
    if (SeedRandom.Value(ref num) > Probability) keep the group
    else                                          destroy the group

    SeedEx.Seed is base + (uint)(x·10 + y·100 + z·1000), and SeedRandom.Value is one xorshift step scaled to 0–1. Nothing in it changes between restarts, so the same map, position and seed always give the same answer. Lakes 1, 3 and 4 have optional groups (each a 50% roll); lake 2 has none. Lake 1 can get snow mounds, a large rock and a medium rock independently; lake 3 has one large rock; lake 4 has the huge rock with snow mounds. The _arctic material variant is what you see on ice; the _temperate and _arid variants exist in the prefab but are picked by biome. This page reproduces that arithmetic exactly, including 32-bit wraparound and single-precision floats.