Files
sanctuary-beta/docs/daily-weather-beta057.md
2026-09-15 09:29:11 +02:00

120 lines
6.6 KiB
Markdown

# beta.057 — météo quotidienne Sanctuary
Branche `codex/daily-weather-beta057`. Contrat avant implémentation : une météo
commune par date civile du monde, en réutilisant le fuseau du système Real Time.
La météo est indépendante du mode du soleil : `vanilla` rend le cycle à
Minecraft ; `realtime` conserve le profil choisi pour la journée. Les profils
pluie et orage sont continus ; le profil averses alterne pluie et pauses sèches.
Le tirage local est déterministe selon la graine du monde et la date, sans
réseau ni géolocalisation. Les proportions de départ configurables sont :
65 % beau temps, 15 % ciel gris, 5 % brouillard, 10 % averses, 3 % pluie
continue et 2 % orage continu. Ce sont des probabilités par journée.
Les proportions se règlent dans `config/sanctuary/weather.json` ; la prévision
déjà enregistrée pour aujourd'hui ne change pas lors d'un rechargement.
Les transitions d'intensité, sons, neige par biome et éclairs restent natifs.
Le profil averses place une pluie de 35 à 75 minutes dans chaque tranche de
3 heures réelles, avec des pauses sèches. La position de chaque passage est
calculée depuis la graine/date/tranche ; une reconnexion ne la déplace pas.
Les tranches comptent le temps réellement écoulé depuis le minuit local,
y compris lors des journées de 23 ou 25 heures au changement d'heure.
Le ciel gris et les averses atténuent les couleurs du ciel et la lumière solaire
sans transformer artificiellement l'état sec en pluie. Le brouillard utilise
les distances natives (fin atmosphérique 80 blocs, ciel 120, nuages 96) et se
compose avec le réglage Vanilla Light. La transition des ambiances prend environ
10 secondes de jeu. Eau, lave, cécité et obscurité gardent leurs attributs natifs.
La présentation se branche sur les couches d'environnement de Minecraft :
pas de nouvelle passe shader, texture de bruit, reconstruction des chunks ni
rechargement des shaders. Les moteurs de shaders externes restent à vérifier.
Le serveur transmet le profil aux clients à la connexion et lors de ses
changements, y compris le retour à Vanilla. La pluie et l'orage utilisent leurs
paquets natifs. Le calcul météo se fait une fois par seconde ; l'écriture du
journal n'a lieu qu'au changement de date ou de mode.
## Contrat de sauvegarde et de retour
Un fichier additif `data/sanctuary-weather.json`, schéma 1, conserve le mode,
la date civile et sa prévision. Il est écrit atomiquement avant toute action
météorologique. Aucun ancien schéma ni paramètre de génération n'est modifié.
Un document invalide est conservé ; le chargement refuse la prise de contrôle.
Le mode quotidien est activé par défaut seulement dans les mondes Sanctuary
et Sanctuary Test. Un monde vanilla ordinaire garde son comportement natif.
Les jours manqués ne sont pas simulés. La reconnexion et le redémarrage gardent
le profil du jour ; un nouveau profil est choisi à minuit dans le fuseau du
serveur intégré ou dédié, et non à chaque journée Minecraft.
Le cycle aléatoire et l'effacement de la pluie par le sommeil sont suspendus
uniquement quand cette météo contrôle le monde. Les règles de jeu sauvegardées
ne sont pas modifiées. Le retour à Vanilla reprend les durées natives depuis
l'état météo courant, sans conserver une durée de 24 heures en ticks.
Sans le mod, Minecraft peut reprendre ses durées usuelles. Les autres systèmes
de simulation et les dimensions sans météo restent natifs.
## Commandes et extension future
Configuration serveur `config/sanctuary/weather.json` :
```json
{
"enabled": true,
"overcastPercent": 15,
"fogPercent": 5,
"showersPercent": 10,
"rainPercent": 3,
"thunderPercent": 2
}
```
Le beau temps représente le reste jusqu'à 100 %. Une somme supérieure à
100 %, un entier négatif ou fractionnaire et un document invalide sont refusés.
Les nouveaux poids s'appliquent au prochain jour ; `enabled: false` rend
immédiatement la météo au moteur après rechargement. Le retour explicite
à Vanilla dans un monde est conservé même après réactivation globale.
- `/sanctuary weather` : consulter le mode, la prévision et sa date/fuseau.
- `/sanctuary weather realtime` : activer le mode quotidien (opérateur).
- `/sanctuary weather vanilla` : reprendre le cycle Minecraft (opérateur).
- `/sanctuary weather reload` : recharger les proportions/configuration (opérateur).
En Real Time, `/weather` indique comment reprendre le mode Vanilla pour
changer la météo librement. Les mutations passent par l'autorité serveur.
La Weather TNT qui force ou arrête la pluie appartient au prochain ticket ;
aucun nouveau bloc, explosif ni recette n'est ajouté ici.
## Vérifications
Le contrôle `weather057Smoke`, intégré à `check`, passe 222 058 assertions :
50 000 tirages quotidiens, proportions, bornes, persistance, rechargement,
refus des données invalides, retours de mode et absence de rattrapage hors ligne.
Il vérifie aussi les tranches d'averses, leurs pauses sèches, les journées de
23/25 heures et le 29 février. Les proportions observées sont respectivement
32 451 / 7 558 / 2 478 / 4 914 / 1 522 / 1 077 jours pour beau temps / gris /
brouillard / averses / pluie / orage.
Le client intégré `Weather057ClientChecks` vérifie les six profils natifs,
les paquets de pluie/orage et du nouveau profil, le brouillard réellement
utilisé par le rendu, l'absence de pluie en gris/brouillard, l'alternance humide
et sèche pendant une même journée d'averses, et les passages de date.
Les durées aléatoires sont suspendues sans modifier la règle de jeu ; le reset
météo utilisé par le sommeil est bloqué en Real Time et disponible en Vanilla.
Les commandes, leurs permissions, l'indépendance du soleil, les configurations
invalides, les retours Vanilla et les libellés FR/EN sont vérifiés.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit sur Minecraft 26.3-pre-2 avec Java 25. Les essais natifs utilisent
`-PsanctuaryClientTests=true -PsanctuaryWeather057ClientTests=true
-PsanctuaryQuickTests=true`. Aucun serveur dédié ni EULA supplémentaire accepté.
Les frontières horaires sont simulées avec une horloge injectée dans le monde
de test ; plusieurs journées d'hébergement réel ne sont pas revendiquées.
Aucun monde personnel, canal public ou instance de jeu n'est modifié.
Logs : `build/weather057-check.log`, `build/weather057-client.log`.
Captures : `build/weather057-evidence/`. La confirmation d'intégrité des exports
est consignée dans `build/weather057-artifact.json`.
[Pack normal](../build/Sanctuary-beta.057.mrpack) ·
[Monde plat rapide](../build/Sanctuary-Test-beta.057.mrpack).