Cargo Features
[dependencies]
monolithium = { version = "1.2.0", default-features = false, features = ["grad-lookup", "fast-area", "most-octaves", "skip-rejection", "skip-table", "only-hill", "filter-fracts", "depth-fracts", "scaled-deviation", "candidates", "fast"] }
----------------------------------------------------------------------------
- default = fast-area, grad-lookup
-
These default features are set whenever
monolithiumis added withoutsomewhere in the dependency tree.default-features = false - grad-lookup default
-
Accurate optimizations
Use a lookup table for
utils::grad() - fast-area default
-
------------------------------------
Lossy optimizations
Step by 4 blocks when calculating areas, as each noise coordinate is the world position divided by 4. This causes a small error in area calculation due to interpolation, but the average of over/under-shoots gives at most 1% error - most-octaves fast?
-
Ignores the last few octaves in noises, as they contribute very little. Causes minor errors in the hill noise, as values for monoliths are relatively tight
- skip-rejection fast?
-
Assumes
JavaRNG::next_i32_bound()never rejects values, skipping three math operations check per call (low error for perlin values) • Monte Carlo says 0.03474% error rates for minecraft values - skip-table fast?
-
Use a Skip Table for fast LCG stepping, same loss as
skip-rejection - only-hill candidates?
-
Behavioral changes
About 40% of all blocks have valid |depth| > 8000 for monoliths, which makes the hill noise almost always (~85% Monte Carlo) an accurate source of truth for such. This change removes the 'depth' calculations, only yielding seed candidates (all results are "mostly wrong" with ~34% greater areas).
A second pass searching the largest monoliths for the best candidates inbounds is highly recommended with the 'find --step 512 --seed <seed>'. Many records were found this way in the middle ages of monolith hunting, as the hill noise repeats every 524288 blocks giving multiple chances of lucky depth values.
- filter-fracts candidates?
-
Filter out seeds in which the fractional part of perlin noises offsets aren't close to a half in the 'search' command (see graphs in world.rs). Such seeds generally generates larger monoliths overall. By default, only the hill noise coefficients are checked, you can enable 'depth-fracts' to include depth.
Reason being the lattices of perlin noises are zero-valued, with the highest values often found at halfway points between grid coordinates.
Such cutoffs can be tweaked with the QUALITY=x compile time variable. - depth-fracts
-
With the 'filter-fracts' feature, include the depth noise deviations.
- scaled-deviation candidates?
-
Scale seed probing deviations with their octave.
- candidates = filter-fracts, only-hill, scaled-deviation
-
------------------------------------
Groups - fast = most-octaves, skip-rejection, skip-table
Features from optional dependencies
----------------------------------------------------------------------------