feat(sites): strata on the Banc du Vigilant drop-off and multi-scale seabed relief

Strata now take a world rectangle, so the 4 m ledges cover the whole break
and talus south of z = 118 m without touching la Saignée or the landmarks.
Roughness gains octave and fractal-type parameters; a SlopeRoughness
modifier roughens rock faces only. Both sites are re-baked with hummocks
from 250 m down to 5 m. The secondary item, the first debris piece and one
safe-route waypoint move a few metres to keep their contracts.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
OlivierandClaude Fable 5.1 committed 2026-10-06 22:50:21 +02:00
1 parent 4af014288b
commit f22a5e69aa
21 files changed
+247 -43

No files matched your search

@@ -74,8 +74,11 @@ pente, des matériaux imposés par primitive et des `MaterialPatch`.
(butte ou fosse à sommet plat, contour bruité, matériau roche imposé),
`BoulderField` (blocs semi-ellipsoïdaux tirés par graine, combinés par
maximum, roche imposée).
- Modificateur : `Strata` quantifie les pentes raides en gradins horizontaux ;
les fonds et sommets plats ne bougent pas.
- Modificateurs : `Strata` quantifie les pentes raides en gradins horizontaux
dans un rectangle monde, les fonds et sommets plats ne bougent pas ;
`SlopeRoughness` ajoute un bruit à crêtes pondéré par la pente (roche
éraillée, sable lisse). `Roughness` accepte un nombre d'octaves et un type
fractal pour donner du relief de fond à plusieurs échelles.
Tout aléa passe par une graine explicite (`FastNoiseLite`,
`RandomNumberGenerator`) ; `tests/unit/run_site_baker_tests.gd` vérifie que
Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d3qajwshxpplq"
path="res://.godot/imported/zone1_vigilant_plateau.png-6e6da03a831034d096e040e9808fd1b8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://docs/briefs/captures/zone1_vigilant_plateau.png"
dest_files=["res://.godot/imported/zone1_vigilant_plateau.png-6e6da03a831034d096e040e9808fd1b8.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cm2nm65ktggp"
path="res://.godot/imported/zone1_vigilant_tombant.png-71b9b2e227c187a355cfe8ea0a7a15f7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://docs/briefs/captures/zone1_vigilant_tombant.png"
dest_files=["res://.godot/imported/zone1_vigilant_tombant.png-71b9b2e227c187a355cfe8ea0a7a15f7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
@@ -2,6 +2,14 @@
**Statut : validé par Olivier le 2026-10-06** (plan de masse, objet secondaire à 62 m, pipeline par script de cuisson, nom « Banc du Vigilant » conservé). Sert de spécification de référence pour l'implémentation.
**Recuisson du 2026-10-06 (demande d'Olivier)** : la rupture et le tombant
sont stratifiés en gradins de 4 m (`Strata`, bande z ≥ 118 m, hors Saignée et
amers) ; le plateau reçoit un relief de fond à trois échelles (250–15 m ± 2,2 m,
80–10 m ± 1,2 m, 20–5 m ± 0,6 m) et la roche un bruit de pente (`SlopeRoughness`).
L'objet secondaire est reculé de 3 m (63 m), le premier débris de 2 m, et le
point de la route sûre au-dessus de la lèvre de la Saignée remonté à 24 m pour
garder 3 m de dégagement. Voir `docs/briefs/terrain-varied-landforms.md` §4.3 bis.
Rédigée le 2026-10-06 à partir de `docs/GAME_DESIGN_PLAN.md`,
`docs/VERTICAL_SLICE_TECHNICAL_PLAN.md`, `docs/POC_B_TECHNICAL_BASELINE.md`,
des ADR 0004, 0006, 0008, 0010 et du code sous `game/world/`. Rien n'a été
+21 -5
View File
@@ -91,12 +91,23 @@ ou `smoothstep`) et **mono-segment**. Il manque :
| Modificateur | Paramètres | Effet |
|---|---|---|
| `Strata` | `layer_height_m`, `sharpness` (0–1), `minimum_slope_degrees`, `full_slope_degrees`, `centre`, `radius_m` (0 = partout) | quantifie l'élévation en gradins de `layer_height_m` là où la pente dépasse `minimum_slope_degrees` (plein effet à `full_slope_degrees`) ; `sharpness` 0 = aucun effet, 1 = marches franches ; le fond plat et le plateau ne bougent pas |
| `Strata` | `layer_height_m`, `sharpness` (0–1), `minimum_slope_degrees`, `full_slope_degrees`, `region_m: Rect2` (vide = partout) | quantifie l'élévation en gradins de `layer_height_m` là où la pente dépasse `minimum_slope_degrees` (plein effet à `full_slope_degrees`) ; `sharpness` 0 = aucun effet, 1 = marches franches ; le fond plat et le plateau ne bougent pas |
Formule : `f = frac(e / h)`, `f' = clamp((f - 0.5) / (1 - s) + 0.5, 0, 1)`,
`e' = lerp(e, floor(e / h) * h + h * f', w)` avec
`w = smoothstep(tan(min), tan(full), |gradient|) * masque`.
### 4.3 bis Relief de fond (ajout du 2026-10-06, demande d'Olivier)
Les plateaux cuits avec la seule `Roughness` à 50 m (± 0,6 m) restaient
plats. `Roughness` prend maintenant un nombre d'octaves et un type fractal
(`FRACTAL_FBM` roulant, `FRACTAL_RIDGED` à crêtes) : une fréquence de 0,004
sur cinq octaves donne des mamelons et des cuvettes de 250 m à 15 m en une
primitive. Le modificateur `SlopeRoughness` (`seed`, `frequency`,
`amplitude_m`, `minimum_slope_degrees`, `full_slope_degrees`) ajoute un bruit
à crêtes pondéré par la pente : la roche s'éraille, le sable reste lisse. Les
deux sites l'utilisent (ondulation ± 2,2 m, roche ± 0,7 m).
### 4.4 Ce qui ne change pas
Le contrat de données (`SiteTerrainData`, ADR 0012 §2), l'acteur de monde, la
@@ -170,7 +181,10 @@ Plan de masse (nord en haut) :
(champ de hauteur vu de dessus, roche teintée) et cinq vues en jeu, graybox,
`terrain_showcase_canyon.png` (gradins et fond ridé), `_crevasse.png`,
`_boulders.png`, `_spurs.png`, `_escarpment.png` (face de la falaise vue du
pied). Le rendu (brouillard, rides en albédo) n'est pas l'objet de ce brief.
pied) ; pour le Banc du Vigilant recuit, `zone1_vigilant_tombant.png`
(gradins du tombant) et `zone1_vigilant_plateau.png` (plateau ondulé). Le
rendu (brouillard, rides en albédo, absence d'ombrage de détail) n'est pas
l'objet de ce brief : à ce stade, le relief se lit surtout au sonar.
## 8. Décisions laissées à Olivier
@@ -179,9 +193,11 @@ Plan de masse (nord en haut) :
couche : à 1 m par cellule, des couches de 4 m sur une paroi à 55° ; une
paroi à 76° (première cuisson) ne montrait aucun gradin. Les sites de mission restent à 1,5 m sauf décision contraire ; une
crevasse de 5 m à 1,5 m par cellule n'a que trois cellules de large.
2. **Strates partout ?** Le modificateur est appliqué au canyon seulement.
L'appliquer à la falaise sud du Banc du Vigilant est un changement de
recette, donc de `.res`, donc une re-cuisson à valider.
2. **Strates sur le Banc du Vigilant** : décidé par Olivier le 2026-10-06,
appliquées à la rupture et au tombant (bande z ≥ 118 m, couches de 4 m,
plein effet dès 40° ; la Saignée, l'Échine et les amers sont hors bande).
Le `.res` du site a été recuit ; l'objet secondaire, les débris et les
routes restent dans leurs contrats.
3. **Sites de mission suivants** (U-Boot sous falaise, océanographique en
canyon) : les primitives sont prêtes ; le plan de masse de chaque site
reste à proposer et valider séparément.