Aller au contenu

Climats

tilttek/weather

Le document

locales: [en, fr]

conditions:
  clear:
    labels: { en: clear skies, fr: ciel dégagé }
    temperature: 2
    next_to: [fair, frost]
  fair:
    labels: { en: fair, fr: beau temps }
  frost:
    labels: { en: hard frost, fr: gelée blanche }
    temperature: -4

seasons:
  summer: { labels: { en: summer, fr: été } }
  winter: { labels: { en: winter, fr: hiver } }

zones:
  highlands:
    labels: { en: highlands, fr: hautes terres }
    persistence: 3
    change: 1d5-3
    seasons:
      summer: { low: 8, high: 22, conditions: { clear: 4, fair: 5 } }
      winter: { low: -12, high: 3, conditions: { clear: 2, fair: 2, frost: 5 } }
CléCe qu'elle contient
localesLes langues dans lesquelles chaque libellé est écrit : de 1 à 8 codes comme en ou fr_CA.
conditions.<id>.labelsLe libellé de la condition dans chaque langue, de 1 à 100 caractères.
conditions.<id>.temperatureDe combien de degrés la condition déplace la température à partir du milieu de la plage de la saison, de -20 à 20 ; 0 par défaut.
conditions.<id>.next_toLes conditions en lesquelles elle peut se changer d'un jour à l'autre ; un voisinage va dans les deux sens, donc chaque paire s'écrit une fois.
seasons.<id>.labelsLe libellé de la saison dans chaque langue.
zones.<id>.labelsLe libellé de la zone dans chaque langue.
zones.<id>.persistenceCombien de fois plus de poids une condition a pour rester que pour venir, de 1 à 20 ; 3 par défaut.
zones.<id>.changeLe lancer de tilttek/dice ajouté chaque jour à la température, 1d5-3 (de -2 à +2) par défaut ; un seul total entier.
zones.<id>.seasons.<id>.low, highLa plage des températures de la saison, en degrés Celsius, de -80 à 80.
zones.<id>.seasons.<id>.conditionsLa fréquence de chaque condition dans la saison, en poids entiers de 1 à 1000.

Un identifiant est une lettre minuscule, suivie d'au plus 31 lettres minuscules, chiffres, _ ou -. Les climats déclarent de 1 à 64 conditions, saisons et zones ; une zone a de 1 à 16 saisons, dans l'ordre de l'année, la première étant celle où commence un état sans saison. Les tables météo de toutes les zones et saisons réunies tiennent au plus 20 000 passages d'une condition à une autre (Climates::TRANSITIONS), comptés avant toute construction : pour chaque condition d'une saison, un passage vers chaque condition qu'elle peut devenir. Chaque condition, saison et zone a un libellé dans chaque langue ; chaque voisin, saison et condition nommé est déclaré. ClimateReader lit un document d'au plus 1 Mio et nomme l'endroit de chaque problème : zones.highlands.seasons.winter.high: -20 is not a whole number from -12 to 80. Les mêmes vérifications s'appliquent aux climats construits en PHP avec Condition, Season, SeasonalClimate et Zone.

Comment un jour suit le jour d'avant

Chaque jour :

  1. la condition reste, avec le poids que la saison lui donne multiplié par la persistance de la zone, ou devient l'un de ses voisins que la saison apporte, avec le poids que la saison donne à ce voisin. Une condition que la saison n'apporte pas (après un changement de saison) devient l'un de ses voisins que la saison apporte ou, si elle n'en a aucun, n'importe quelle condition de la saison selon son poids ;
  2. la température bouge du lancer de la zone, plus un degré vers sa cible (le milieu de la plage de la saison, décalé par la nouvelle condition), et reste dans la plage. Une température hors de la plage, après un changement de saison ou de zone, y revient plutôt de deux degrés par jour.

Les voisins sont ce qui garde la météo continue : écrivez-les comme le ciel bougerait (beau temps vers couvert, couvert vers bruine, bruine vers pluie, pluie vers averse), et les poids d'une saison disent la fréquence de chacun. Une zone à forte persistance garde sa météo des jours durant ; une zone à faible persistance la change souvent.

Les climats livrés

Climates::default() lit data/climates.yaml, que nomme Climates::file(), à copier et à adapter. Ses seize conditions (ciel dégagé, beau temps, chaud et moite, couvert, brouillard, bruine, pluie continue, averse, orage, grand vent, grésil, chute de neige, blizzard, gelée blanche, canicule et tempête de sable) sont libellées en anglais et en français, et ses zones sont :

ZoneSaisonsPersistanceLancer quotidien
temperateprintemps 3 à 16 °C, été 14 à 30, automne 4 à 17, hiver -8 à 631d5-3
borealprintemps -5 à 10 °C, été 8 à 24, automne -6 à 10, hiver -35 à -541d7-4
mediterraneanprintemps 10 à 22 °C, été 20 à 36, automne 12 à 25, hiver 2 à 1541d5-3
aridsaison chaude 25 à 45 °C, saison fraîche 5 à 2551d5-3
tropicalsaison humide 23 à 32 °C, saison sèche 20 à 3131d3-2

Elles décrivent des climats d'un monde de jeu, pas d'un lieu réel : un monde à soi déclare les siens.