[Tutoriel] Systemes avec representation en colonnes

Vous êtes ici

1 post / 0 new
#1 26 avril 2017 - 1:53pm
Portrait de Dicotout
Offline
Envoyer un message
Connecté : Il y a 1 année 8 mois
Nombre de messages : 83
Inscris depuis : 12/22/2016 - 14:25

Tuto rédigé par Albapringe et migré de l'ancien forum

 

Bonjour à tous. Après un petit moment de pause, je reviens avec ce topic qui concerne essentiellement les divers éléments du jeu qui sont représentés par un système de colonnes, lorsque l’on est en mode « Voir … » qu’on retrouve dans les différents onglets de l’interface.

Je donne ci-après la liste, exhaustive normalement, de tous ces éléments :

Hygiène / Sécurité :

-Accès à l’eau
-Accès au médecin
-Risque d’effondrement
-Risque d’incendie
-Agitation/criminalité

Administration : 

-Accès au percepteur

Culture / Science : 

-Accès à chaque personnage culturel/scientifique
-Accès culturel/scientifique global

Mythologie : 

-Sacrifices

Méthodologie

Je fais d’abord un petit aparté sur la méthode que j’ai utilisée pour obtenir tout ce qui suivra. Je rentre plus dans les détails que ce que j’ai coutume de faire car cette méthode est imparfaite et il peut être utile de connaître les différentes sources d’erreurs. En effet, la plupart des éléments de la liste ne sont malheureusement pas contrôlables par des valeurs qui figurent dans les fichiers Model, et tous font intervenir des notions de durées, à une exception près. A ce moment là, deux possibilités sont à envisager : soit raisonner en temps « réel » (avec une échelle de quelques secondes à quelques heures), soit en temps « de jeu » (avec une échelle de quelques jours à plusieurs années). On peut établir un parallèle entre les deux, comme indiqué sur le tableau ci-dessous : 

Image

Seulement, voilà, tenter de faire ce parallèle a plusieurs inconvénients : les mesures de secondes réelles ont été faites avec un simple chrono, faute de mieux, et cela donne lieu à des valeurs pas forcément très précises (temps de réaction oblige !). Par ailleurs, pour peu que l’écoulement du temps du jeu ne soit pas parfaitement « fluide » par rapport au temps réel à cause de perturbations quelconques, et on ajoute une autre source d’erreur. Enfin, pour couronner le tout, vous avez peut-être déjà remarqué qu’à vitesse de jeu fixée, on n’a pas toujours l’impression qu’un mois de jeu a une durée constante en temps « réel ». C’est confirmé, selon les situations de jeu, j’ai noté des variations parfois importantes, indépendamment des autres erreurs. (L’exemple le plus flagrant : à 100 %, un mois qui dure 2 secondes dans certaines situations, peut aller jusqu’à 10 secondes dans d’autres, mais ce phénomène reste valable aux autres vitesses de jeu, même si cela est moins marqué). Vous l’aurez compris, ce tableau est à considérer, pour le moins, avec circonspection, ^^. Si encore une relation entre vitesse de jeu et temps réel se dégageait, ça irait mieux, mais là, je n’en vois apparemment aucune.

On pourrait alors mesurer directement en temps de jeu, seulement, la seule chose qui soit directement accessible, c’est un temps compté en mois, et c’est souvent bien trop long pour décrire le fonctionnement des éléments listés. Tout ça pour dire que, pour tout ce qui suit, j’ai dû composer avec un mélange des deux techniques de mesure de temps, et qu’en conséquence, certaines informations ne sont pas forcément parfaitement exactes (je le repréciserai à chaque fois, de toute façon)

Modélisation des éléments à système de colonnes

Allez, cette fois, on est partis ^^

Dans la liste du début, deux catégories se distinguent : les éléments à représentation croissante et ceux à représentation décroissante (autrement dit, les éléments qui ont respectivement une colonne qui, sans intervention externe, augmente ou diminue graduellement au cours du temps). Petite exception, la colonne associée à l’accès culturel/scientifique global qui est lié à la somme des accès culturels/scientifiques pris individuellement.

On va développer un peu ce système de colonnes : elles sont composées de portions, d’autant plus nombreuses que la colonne est élevée. Chaque portion peut être arbitrairement numérotée de 0 à 9 (voire 10, au maximum, comme je l’indique dans la première figure qui suit). Notez que la portion 0 n’est pas toujours représentée de manière visible. Chose importante à savoir, ce système n’est pas recalculé de manière continue mais seulement de façon périodique, et cette période est de 2 jours (je rappelle qu’il y a 32 jours dans un mois de jeu). Ainsi, à chaque portion de colonne peut être attribué une durée (multiple de 2 jours). Quelques images pour illustrer tout cela :

Image Image Image Image

Eléments à représentation décroissante

Les éléments à représentation décroissante sont les plus simples à modéliser : cela correspond à une diminution progressive de la colonne au cours du temps, et ces colonnes sont instantanément réinitialisées à leur niveau maximal lorsque le promeneur correspondant arrive à proximité (c’est-à-dire lorsque le bâtiment concerné se trouve dans la zone d’effet du promeneur, sachant que chaque promeneur a une portée de 2 cases dans toutes les directions, cela étant en effet rendu indispensable à cause des avenues et boulevards, qui neutralisent la portée de 1 case). 

Au final, dans cette situation, il suffit de savoir à quelles durées correspondent chaque portion de colonne pour caractériser l’évolution de tels éléments.

Ainsi, on peut obtenir :

Accès à l’eau : 6 mois ou 192 jours en tout décomposés en :
Portion 9 : 12 jours
Portion 8 à 0 : 20 jours

On peut ainsi remarquer que lorsqu’on se trouve avec une colonne avec seulement une portion 0, cela ne veut pas forcément dire que l’accès à l’eau est terminé. En effet, il faut comprendre la portion 0 comme signifiant : il reste entre 20 jours et 0 jour avant que l’accès à l’eau ne s’achève. La décroissance s’arrête bien sûr à 0 jour, qui marque bel et bien la perte de l’accès. Des images démontreront ça mieux que ce discours.

Image Image

L’accès au médecin et l’accès aux différentes cultures / sciences fonctionnent exactement de la même façon que l’accès à l’eau.

L’accès global tient compte de l’ensemble des accès culturels/scientifiques. Tant que l’accès à un type de culture/science est maintenu au logement, l’accès global prend en compte cet accès (même si un type d’accès est sur le point d’être perdu). De fait, la représentation en colonne de l’accès global est plus liée à une somme qu’à des durées. Le moyen de calculer cette somme a été détaillée dans le tuto de Culture / Science de la cité. Chaque portion de colonne représente donc plutôt une quantité de culture / science, du genre « x points » de culture / science. Mais n’ayant pas possibilité de bien jouer sur ces valeurs de culture / science, j’aurai du mal à donner une valeur de x qui soit absolument certaine, même si, selon toute vraisemblance, x vaut 10.

L’accès aux impôts est modélisé comme suit :
Durée totale : 102 jours décomposés en 
Portion 10 : 2 jours
Portion 9 à 0 : 10 jours

Enfin, dernier élément de la catégorie décroissante : les sacrifices. 
La durée totale d’effet d’un sacrifice est de 776 jours soit 2 ans et 8 jours décomposés selon :
Portion 10 : 136 jours
Portion 9 à 0 : 64 jours
Le prêtre va rechercher des sacrifices dès que la portion 10 disparaît, donc pour rentabiliser au maximum un sacrifice (et éviter d’avoir à refaire chèvres et moutons trop souvent), il est beaucoup plus avantageux d’éloigner au maximum le sanctuaire des troupeaux, jusqu’à 10 mois de marche entre les deux pour le cas idéal.

Sur ce qui précède, je pense que les erreurs sur les valeurs de durées sont assez faibles, vu qu’il s’agit de durées relativement courtes, à l’exception des sacrifices, qui ont peut-être une erreur un peu plus importante.

Tout ceci peut être formalisé de manière générale par la formule suivante :

Nombre de portions restantes = min(10,tronque((tm – t) / délai) où

tm est, en jours, la durée totale de l’effet à l’instant de la réinitialisation de l’accès concerné, 
t, le nombre de jours écoulés depuis la dernière réinitialisation et enfin, 
le délai, la durée en jours pour laquelle une portion de colonne disparait (il faut ici considérer la durée « classique » et pas celle qui correspond à la portion de colonne la plus élevée)

Bien sûr, cette formule implique nécessairement t ≤ tm. Dans le cas contraire, il n’y a plus d’accès et seule la portion 0 est représentée.

Exples :

Pour l’accès à l’eau : tm = 192 jours, délai = 20 jours.
Si t = 6 jours, alors il reste min(10,tronque((192 – 6) / 20)) = min(10,9) = 9 portions de colonne.
Si t = 101 jours, alors il reste min(10,tronque((192 – 101) / 20)) = min(10,4) = 4 portions de colonne.

Pour l’accès aux impôts : tm = 102 jours, délai = 10 jours.
Si t = 67 jours, alors il reste min(10,tronque((102 – 67) / 10)) = min(10,3) = 3 portions de colonne.

Eléments à représentation croissante

Passons à ce qui reste, à savoir les éléments à représentation croissante :

-Risque d’effondrement
-Risque d’incendie
-Risque d’agitation

Actuellement, je peux seulement rentrer dans le détail pour ce qui concerne le risque d’effondrement. Son calcul est manifestement très différent du risque d’incendie. Quant au risque d’agitation, il dépend de tellement de paramètres impossibles à maitriser directement que ça risque d’être très difficile à en décrire le fonctionnement.

En effet, la croissance n’est pas toujours régulière selon les cas (ce qui peut arriver avec des paramètres multiples influant sur cette croissance) et la diminution des colonnes n’est pas instantanée, mais progressive lorsque les promeneurs concernés passent à proximité.

Comme je le disais, le cas le plus simple à traiter est le risque d’effondrement. La croissance des colonnes sans intervention externe présente une régularité relative que l’on peut modéliser. Cela fait intervenir la valeur en colonne ‘h’ des fichiers Zeus_Model_[difficulté] pour la catégorie « Buildings » qui sont en fait des valeurs d’incrément que j’appelle VI par la suite. De fait, la vitesse de dégradation des bâtiments dépend du niveau de difficulté, car les VI changent selon le niveau. Voici maintenant les formules, qui, sauf gros coup de malchance, devraient être fiables (je rappelle qu’on suppose ici qu’aucune intervention extérieure n’existe) :

Délai pour l’apparition de la portion n = 2 x plafond((200 x n) / (VI x 2))

Le délai pour l’apparition de la dixième portion correspond à la destruction du bâtiment. Il en découle que l’on peut calculer un avancement du risque d’effondrement, que j’exprime arbitrairement en pourcentage, cette donnée n’étant pas directement représentée dans le jeu.

Pourcentage de destruction à l’instant t = (VI / 10) x tronque(t / 2) avec t : durée en jours depuis la construction du bâtiment.

Attention, la première formule s’applique aussi pour les valeurs de VI négatives, ce qui reviendrait dans ce cas à dire que le bâtiment se « renforce » au cours du temps, ce qui est évidemment contradictoire avec l’ordre naturel des choses. Pour VI = 0, la durée d'apparition d'un élément de colonne est indéterminé (ou infini, comme vous préférez,^^). Dans le jeu, les colonnes disparaissent quand on applique VI = 0, et réapparaissent à l'état où elles étaient auparavant lorsque VI redevient non nul. La deuxième formule s’applique jusqu’à ce que le pourcentage de destruction reste inférieur ou égal à 100%. A l’instant où le résultat de cette formule atteint ou dépasse 100, le bâtiment s’effondre.

Beaucoup de 2 s’invitent dans ces formules, ceci est dû au fait que la prise en compte du risque d’effondrement n’est pas immédiate mais seulement recalculée tous les 2 jours de jeu comme je l’ai précisé auparavant. Je dirais même que ce calcul se fait tous les 2 jours absolus de jeu, c'est-à-dire exactement au 2 du mois en cours, puis au 4, au 6, etc…, en conséquence, toute construction ayant eu lieu entre 2 nombres pairs de jours absolus verra son premier calcul de risque d’effondrement se faire en moins de 2 jours. Comme ce n’est pas forcément limpide comme explication, faisons un exemple concret ^^ :

On construit une fontaine à un moment donné du jeu : les chances de la construire pile le 2 du mois ou pile le 4 du mois, etc… sont nulles (j’y suis pour rien, c’est les lois de probabilités qui le disent ^^). Donc, disons, pour simplifier, qu’elle a été construite au « 13,4 ième » jour du mois, par exemple (même si vous n’avez aucune chance d’y arriver, hein ;)). Le premier calcul du risque d’effondrement pour cette fontaine surviendra pile le 14 du mois, c’est-à-dire 0,6 jour après la construction (et pas 2 jours après).

Passons à quelques exemples illustrant les formules :

Exples :

Fontaine avec VI = 8.
La première portion de colonne apparaît à 2 x plafond((200 x 1) / (8 x 2)) = 2 x plafond(12,5) = 2 x 13 = 26 jours.
La huitième portion de colonne apparaît à 2 x plafond((200 x 8 ) / (8 x 2)) = 2 x plafond(100) = 2 x 100 = 200 jours.
Le bâtiment s’effondre au bout de 2 x plafond((200 x 10) / (8 x 2)) = 2 x plafond(125) = 2 x 125 = 250 jours.

Avec VI = 8, 
si t = 32 jours, on a % destruction = (8 / 10) x tronque(32 / 2) = 12,8%
si t = 81 jours, on a % destruction = (8 / 10) x tronque(81 / 2) = 32%

Fontaine avec VI = 20.
La première portion de colonne apparaît à 2 x plafond((200 x 1) / (20 x 2)) = 2 x plafond(5) = 2 x 5 = 10 jours.
La huitième portion de colonne apparaît à 2 x plafond((200 x 8 ) / (20 x 2)) = 2 x plafond(40) = 2 x 40 = 80 jours.
Le bâtiment s’effondre au bout de 2 x plafond((200 x 10) / (20 x 2)) = 2 x plafond(50) = 2 x 50 = 100 jours.
Ainsi, de façon logique, la dégradation des bâtiments s’accélère lorsque VI augmente.

Je m’arrête ici pour cette fois, mais ce topic n’est pas totalement achevé, comme je l’ai mentionné avant, il reste notamment à traiter le cas des incendies et aussi voir l’influence du surintendant sur les processus de destruction. A suivre donc ^^.

Edit : Tout ou partie de ces informations se retrouvent sur le site de Pécunia : Citadel of Poseidon dont le lien figure ci-après : http://poseidon.pecunia.nerdcamp.net/index.html

Edit : ajout lien du site de Pécunia