120 lines
6.6 KiB
Markdown
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).
|