191 lines
11 KiB
Markdown
191 lines
11 KiB
Markdown
# Alpha.12 — laboratoire d’expansion
|
||
|
||
Ticket local **WG-13**, branche `codex/expansion-lab`. Contrat du laboratoire et guide
|
||
d’essai. Cette livraison reste une alpha ; le canal distribué est suivi séparément
|
||
dans [Distribution](packwiz.md).
|
||
|
||
## Décisions de conception
|
||
|
||
La direction géographique et le climat deviennent deux choix distincts. La
|
||
boussole nord froid / sud chaud / ouest sec / est humide reste un raccourci
|
||
facultatif. Une île peut prolonger le climat de son parent ou ouvrir une branche
|
||
vers un autre climat. Les parents et les coordonnées forment un graphe persistant,
|
||
permettant plusieurs couronnes autour de Sanctuary. Les recherches, leurs coûts,
|
||
les boîtes aux lettres et les boîtes de dépôt sont planifiés pour plus tard.
|
||
|
||
Cette alpha fournit des commandes opérateur : créer, suivre, lister et visiter
|
||
les expansions. Les tailles nominales des nouvelles îles sont 64, 128, 256 et
|
||
512 blocs. Les reliefs de laboratoire s’appliquent aussi à l’île initiale, dans
|
||
un nouveau preset expérimental. Les structures vanilla compatibles sont admises
|
||
après contrôle de leur emprise et de leur support. Une absence reste possible.
|
||
|
||
L’alpha sert à éprouver les outils et les paysages. Le passage en bêta se fera
|
||
après définition du périmètre de la vision et de la progression jouable ; ce
|
||
numéro ne désigne pas une progression collective déjà livrée.
|
||
|
||
## Contrat de sauvegarde et d’ouverture v1
|
||
|
||
- Activation exclusivement dans un **nouveau monde du laboratoire alpha.12**.
|
||
Les anciens presets, leurs paramètres, leurs chunks et leurs sauvegardes ne
|
||
sont pas convertis. Il n’existe pas de commande de migration ou de régénération.
|
||
- Un journal serveur propre au monde enregistre graine, version, origine,
|
||
identifiant, parent, direction, climat, relief, diamètre, centre et statut.
|
||
Les paramètres d’une île sont immuables après réservation.
|
||
- Toute la réservation inclut terrain, décorations et halo moteur. Les régions
|
||
déjà présentes sur disque, chargées ou en cours de déchargement sont refusées,
|
||
même si leurs blocs sont tous vides. Une erreur de lecture interdit l’ouverture.
|
||
- Le journal est écrit atomiquement et relu avant de publier le nouveau plan au
|
||
générateur. Un journal existant absent ou corrompu n’est jamais remis à zéro.
|
||
- La génération travaille uniquement dans la région nouvelle. Les chunks voisins
|
||
nécessaires au moteur restent dans son halo. Aucun bloc d’une ancienne région
|
||
n’est remplacé. Les références et le placement des structures utilisent le moteur.
|
||
- Une réservation interrompue conserve son identité et sa graine. La préparation
|
||
peut reprendre, sans double île ni nouveau tirage, jusqu’au statut prêt.
|
||
- Les commandes exigent la permission opérateur. Être en créatif seul ne confère
|
||
aucun droit sur le serveur. Une opération ne téléporte personne implicitement.
|
||
- Le refuge Void et le déplacement collectif des joueurs restent un système
|
||
distinct à concevoir. Ils ne servent pas de mécanisme de protection des chunks.
|
||
|
||
Le halo impose une distance supplémentaire dans cette première version. Le placer
|
||
au plus proche ne permet pas de réutiliser silencieusement du vide déjà généré.
|
||
Les points d’origine enregistrés ne suivent pas les changements de lit ou de spawn.
|
||
|
||
## Commandes et palette
|
||
|
||
Créer un **nouveau monde**, type **Sanctuary — Laboratoire**, avec les commandes
|
||
activées. Pour un serveur neuf, utiliser `level-type=sanctuary:expansion_lab`
|
||
et un nouveau `level-name`. La graine `42` fournit un cas reproductible observé
|
||
avec un camp abandonné ; aucune structure n’est garantie sur chaque graine.
|
||
|
||
```text
|
||
/sanctuary expansion quick north autumn 128 peaks
|
||
/sanctuary expansion list
|
||
/sanctuary expansion visit island_1
|
||
/sanctuary expansion create oasis island_1 east arid 64 natural
|
||
/sanctuary expansion preview glacier sanctuary south glacial 256 canyon
|
||
```
|
||
|
||
`quick` part toujours de Sanctuary et attribue un identifiant `island_N`.
|
||
`create <id> <parent> <direction> <climate> <diameter> <relief> [distance]` ouvre une branche
|
||
nommée depuis n’importe quelle île prête. `preview` emploie les mêmes paramètres ;
|
||
il propose des coordonnées mais ne valide ni l’occupation des chunks ni le sol.
|
||
Répéter un `create` identique rend la même réservation ; un autre profil sous
|
||
le même identifiant est refusé. `resume <id>` reprend une préparation interrompue.
|
||
Après une erreur du journal, il faut rétablir le stockage puis recharger le monde.
|
||
|
||
Depuis l’**alpha.12.1**, `quick`, `create` et `preview` acceptent une distance
|
||
minimale facultative à la fin, de 0 à 100 000 blocs. Elle mesure la distance
|
||
entre les centres du parent et de l’enfant, y compris en diagonale. L’alignement
|
||
des chunks et les marges du terrain peuvent éloigner légèrement le résultat.
|
||
Une valeur de 0, ou son omission, laisse le placement automatique.
|
||
|
||
```text
|
||
/sanctuary expansion quick north autumn 128 peaks 2048
|
||
/sanctuary expansion create desert sanctuary east arid 128 natural 4096
|
||
/sanctuary expansion preview glacier sanctuary northeast glacial 256 canyon 2048
|
||
```
|
||
|
||
Si une zone est déjà générée, `create` et `quick` essaient plus loin dans la
|
||
même direction, sur 32 positions maximum avec un budget total de lecture de
|
||
30 secondes. Le climat, le relief et la graine restent ceux de la demande.
|
||
`preview` propose seulement le premier emplacement géométrique ; le résultat
|
||
réel peut être plus loin. Les erreurs de lecture interrompent la recherche.
|
||
Les anciens appels restent valides. Un identifiant déjà créé garde sa position ;
|
||
demander sous le même nom une distance supérieure à sa distance réelle est refusé.
|
||
|
||
Cette correction utilise le même journal v1 et les mêmes descripteurs de
|
||
génération 12 : le monde laboratoire alpha.12 actuel peut être conservé. Aucun
|
||
ancien chunk n’est régénéré ; la recherche réserve uniquement une nouvelle zone.
|
||
|
||
| Profil de commande | Surface recherchée |
|
||
| --- | --- |
|
||
| `temperate` | Chênes, bouleaux, clairières et fleurs |
|
||
| `boreal` | Taïga, bosquets et neige en hauteur |
|
||
| `glacial` | Plaines enneigées, pics gelés et pointes de glace |
|
||
| `cold_humid` | Vieilles taïgas et bosquets froids |
|
||
| `humid` | Forêt sombre, marécages et Pale Garden ponctuel |
|
||
| `tropical` | Jungle, bambous et mangrove basse |
|
||
| `warm` | Savane et plateaux |
|
||
| `arid` | Désert, badlands et cheminées érodées |
|
||
| `dry` | Prairies exposées et reliefs pierreux |
|
||
| `cold_dry` | Neige, gravier et sommets gelés |
|
||
| `autumn` | Dappled Forest, prairies et bouleaux ponctuels |
|
||
| `cherry` | Cerisiers, prairies et bosquets en hauteur |
|
||
|
||
La sélection dépend de la graine, de l’altitude et de variations locales ; une
|
||
petite île n’affiche pas nécessairement tous les biomes de son profil. Des poches
|
||
luxuriantes, à spéléothèmes ou soufrées diversifient les étages inférieurs.
|
||
Les reliefs `natural`, `peaks`, `canyon` et `volcano` sont indépendants du climat.
|
||
Le volcan déforme et creuse la matière existante ; il ne garantit pas un cône
|
||
plein ni un lac de lave lorsque la géométrie centrale est ajourée.
|
||
|
||
Les valeurs par défaut de `quick` suivent la boussole décrite dans
|
||
[Expansion](expansion.md), avec diamètre 128 et relief naturel. Les directions
|
||
acceptées sont `north`, `northeast`, `east`, `southeast`, `south`, `southwest`,
|
||
`west`, `northwest`. L’autocomplétion fournit les paramètres disponibles.
|
||
|
||
## Portée technique et limites
|
||
|
||
Le codec `sanctuary:expansion_lab` enregistre le générateur ; le journal conserve
|
||
les descripteurs de génération **12**. Chaque île emploie sa propre graine dérivée
|
||
de la graine du monde et de son identifiant. Changer d’identifiant change donc
|
||
le tirage. Les instances de bruit sont propres aux îles, y compris après reload.
|
||
Les 34 biomes vanilla sont déclarés avant la première expansion.
|
||
|
||
La densité flottante existante sert de base. Le laboratoire ajoute les
|
||
transformations des reliefs hauts et utilise les matériaux et décorations natifs.
|
||
Ses carvers vanilla sont désactivés pour conserver les supports prospectés.
|
||
Les grandes rivières et terrasses hydrologiques alpha.11 ne sont pas transférées
|
||
dans ce prototype : les anciens presets les conservent. Le laboratoire essaie
|
||
seulement de petites sources facultatives sur support rocheux fermé.
|
||
|
||
Les structures autorisées sont les villages (diamètre au moins 256), pyramides
|
||
du désert et de jungle, cabanes de marais et camps abandonnés. Les starts natifs
|
||
sont acceptés après vérification de leur emprise et de leurs fondations ; le
|
||
moteur place les pièces, références et butins. Leur grille de sélection diffère
|
||
de celle de `/locate` vanilla : cette commande n’est pas un outil fiable pour
|
||
les retrouver dans le laboratoire. La preuve actuelle porte sur un camp ; elle
|
||
ne valide pas visuellement chaque type de village ou de temple.
|
||
|
||
La réservation ajoute 32 blocs de décoration et 176 blocs de halo moteur autour
|
||
de l’enveloppe de terrain. Les petites îles sont donc encore assez éloignées :
|
||
le test de diamètre 64 place une première île à 800 blocs du centre de Sanctuary,
|
||
puis une branche à 544 blocs de son parent. Un emplacement déjà exploré est
|
||
écarté ; depuis l’alpha.12.1, la recherche continue plus loin sans réécrire ce vide.
|
||
Il existe une limite de 64 régions, origine comprise, et de ±100 000 blocs pour
|
||
leurs centres. La vérification initiale d’occupation est synchrone et peut
|
||
suspendre brièvement le serveur pendant les lectures disque ; la préparation
|
||
suivante avance chunk par chunk.
|
||
|
||
Les bateaux volants, montgolfières, panthéons, îles uniques en béton coloré,
|
||
océans coralliens, recherches, coûts et boîtes de dépôt restent dans la vision.
|
||
Aucun command block, transfert collectif au Void ou reset global n’est nécessaire
|
||
pour utiliser ces commandes.
|
||
|
||
## Observations reproductibles
|
||
|
||
Sur la graine **42**, le scénario moteur a ouvert une île tropicale de 64 blocs
|
||
au nord, puis une île aride de 64 blocs à l’est de celle-ci. Chaque préparation
|
||
a atteint 100 chunks FULL. Les biomes sauvegardés, les points d’arrivée sur sol
|
||
réel, les permissions du dispatcher, le refus des doublons incohérents, la
|
||
conservation d’un bloc témoin sur Sanctuary et le refus du vide déjà chargé
|
||
ont été vérifiés. Un camp abandonné possède un tonneau placé avec sa table de
|
||
butin vanilla. Sur la graine **0**, ces expansions fonctionnent mais aucun des
|
||
11 sites de structure candidats n’a passé les conditions de terrain ; le test
|
||
exigeant une preuve de butin a donc échoué sur cette graine.
|
||
|
||
Un second processus Java a rouvert le monde de développement de graine 42 et
|
||
retrouvé les trois régions prêtes, le bloc d’or écrit avant l’arrêt, les colonnes
|
||
de blocs, biomes, densités et le tonneau. Le codec sauvegardé a aussi été décodé.
|
||
Le framework GameTest reconstruit ses réglages depuis le preset : ce contrôle
|
||
ne remplace pas un essai du parcours normal de chargement dans le client.
|
||
La reprise d’un journal réservé est contrôlée séparément par le smoke ; un
|
||
crash forcé en pleine génération, les téléportations de vrais joueurs et la
|
||
charge multijoueur ne sont pas simulés.
|
||
|
||
Les smokes parcourent cinq graines, les quatre tailles et les quatre reliefs :
|
||
transformation verticale monotone, dessous de l’origine conservé, canyon retirant
|
||
de la matière et couronne volcanique. Ce sont des contrôles géométriques ; les
|
||
profils 128/256/512 et les quatre reliefs demandent encore une appréciation
|
||
visuelle en jeu. Voir [Validation](testing.md) pour les commandes et preuves.
|