Public Access
Weight random Age choices like Legacy and expand regression coverage (#41)
Build / build (push) Canceled after 0s
Build / build (push) Canceled after 0s
This commit is contained in:
1 parent
a287e092f5
commit
32b676db30
13 files changed
+267
-34
No files matched your search
@@ -47,6 +47,27 @@ automated check, and hand its exact scenario to the player for in-game
|
||||
verification. Do not keep retrying a stalled test or leave its process running.
|
||||
Keep the narrower non-stalling plan, persistence, and runtime checks automated.
|
||||
|
||||
For issue #41, the combined archive and the focused `linking` archive initially
|
||||
stalled during the multi-profile travel acceptance test. That test is no longer
|
||||
registered with GameTest; the rerun passed all 116 registered tests before the
|
||||
subsequent random-biome-count adjustment. The 51-test core suite passes after
|
||||
that adjustment, but the full archive stalled again late in its first batch;
|
||||
do not treat that interrupted run as a pass. Verify its
|
||||
scenario manually: in a fresh world, bind
|
||||
one Descriptive Book for each of Standard, Flat, Amplified, Island, Cave, and
|
||||
Void terrain (use the corresponding Terrain Page to select each one). Visit
|
||||
each Age, confirm a safe arrival platform and headroom, and
|
||||
travel back using a bound Linking Book. The narrower creation, persistence,
|
||||
terrain, and travel checks remain automated. See
|
||||
[random Age weights](RANDOM_AGE_WEIGHTS.md) for the Legacy rank mapping and
|
||||
the opt-in weighting regression.
|
||||
|
||||
Also bind several Link-Panel-only Descriptive Books with no authored biome
|
||||
pages. Check that each Age retains its biome set after leaving, unloading, and
|
||||
reopening it, and that the selected biome count varies between Ages without
|
||||
exceeding the eligible pool. This covers the bounded random-biome path touched
|
||||
after the last successful full-archive run.
|
||||
|
||||
The optional `-PwithSereneSeasons=true` runtime is for a real dev client, not
|
||||
the GameTest server: Serene Seasons sends a season payload to GameTest mock
|
||||
players, which cannot negotiate its channel. Follow the real-client Serene test in
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# Random Age selection (issue #41)
|
||||
|
||||
Page-free and Link-Panel-only books still make one random Age definition from the Age seed. A written page overrides its branch; random completion never rewrites the book. The resulting terrain, traits, season mode, biome pool, and feature choices are saved with the Age identity, so loading an existing Age does not reroll it. This change affects **new** Ages only.
|
||||
|
||||
The rank-weight calculation follows Mystcraft Legacy's `GrammarGenerator.buildRankWeights` in the user-provided 0.13.7.06 classes: starting at the highest numbered (rarest) rank, a rank's weight is at least one greater than the preceding rank's total divided by the number of entries at the current rank. A missing intermediate rank still advances the weight. The corresponding `SymbolRules` entries supply the ranks. This is a selection policy, not a port of Legacy's full grammar tree or its Minecraft 1.12 world generator.
|
||||
|
||||
| Branch | Relative tickets for supported choices |
|
||||
| --- | --- |
|
||||
| Terrain | Standard 6, Flat 5, Amplified/Island/Cave/Void 1 each. Cave and Island occupy the rare slots corresponding to Legacy Nether and End terrain. Additional data-pack runtime profiles default to the rare rank and cause the group weights to be recomputed. |
|
||||
| Biome controller | Native/Single/Medium 3 each; Tiled/Grid/Tiny/Small/Large/Huge 1 each. The selected controller still applies terrain eligibility and minimum-biome rules. |
|
||||
| Additional random biomes | After Rivencraft's existing controller minimum, each extra biome has a 2-in-3 continuation chance and a 1-in-3 stop chance, capped by the eligible biome pool (including optional TerraBlender additions). This mirrors Legacy's ranked biome-list branch without changing the project's authored-page minimums. |
|
||||
| Lighting | Normal 3; Dark/Bright 1 each. |
|
||||
| Weather | Normal 9; Fast/Slow/Off/Always/Cloudy/Rain/Snow/Storm 1 each. WeatherOn is named Always here. |
|
||||
| Season (Serene Seasons only) | Seasons 6, No Seasons 5, each eternal season 1. These are Rivencraft ranks for features absent from Legacy; normal cycling is most common and eternal seasons are rare. No season policy is rolled without Serene Seasons. |
|
||||
|
||||
Random-feature selection remains bounded to two material features and two structures. Within those limits, surface/deep lakes have Legacy rank 1; lava lakes rank 2 as a separate new fluid choice; spheres/spikes/obelisks rank 3; and floating islands/tendrils rank 4. Rocks, which are a Rivencraft generalization, use rank 4. For structures, villages/strongholds/mineshafts use rank 1, dungeons/Nether fortresses rank 2, and newer Minecraft structures rank 3. Eligibility filtering still removes features incompatible with the selected terrain/biomes. Separate rare Skylands, Crystals, and Legacy-weighted Star Fissure rolls remain. This preserves Rivencraft's existing count limits rather than claiming exact parity with the full Legacy feature grammar. Existing saved random feature lists are retained. The current celestial stopped-time chance (1 in 7) follows the verified Legacy period ranks; other numeric celestial values still use Rivencraft's documented range.
|
||||
|
||||
Regression coverage: `RandomAgeWeightGameTests` (archived grammar suite) checks exact terrain rank tickets and stable selections across many seeds. Core Age persistence tests cover page-free and Link-Panel-only books, plan/trait round-trips, and migrated definitions. Binder and grammar archives cover page order, missing symbols, rejected assembly, and replayed output. The default GameTest runtime has none of TerraBlender, Serene Seasons, Ecliptic Seasons, JEI, Create, Ponder, or Immersive Portals installed. Optional-mod interactions and real unload/restart checks remain manual per `GAMETESTS.md`.
|
||||
Reference in new issue
Block a user