Darkwaar20 commence par du bruit.
Un plateau de 7Ă9 ne contient au dĂ©part ni terrain, ni chemin, ni objectif, ni structure visuelle significative. Chacune de ses 63 cases contient quatre canaux dâentiers gĂ©nĂ©rĂ©s Ă partir dâune graine. Cinq transformations plus tard, ces mĂȘmes entiers dĂ©crivent un monde composĂ© de sol, de vide, dâĂ©nergie, dâun noyau et dâune sortie.
La transformation nâest pas automatique. Avant chaque passage, le joueur choisit comment le bruit doit se stabiliser. La gĂ©nĂ©ration constitue la premiĂšre phase du jeu. Explorer le rĂ©sultat en est la deuxiĂšme.
graine
â
bruit
â
cinq transformations contraintes
â
terrain
â
monde jouable
Une mĂȘme graine nâimplique pas un monde identique.
mĂȘme graine
+
contraintes différentes
=
monde différent
Cette distinction constitue lâessence mĂȘme de lâexpĂ©rience. Le bruit est fixe. Le joueur fournit les contraintes. Le plateau enregistre ce qui en rĂ©sulte.
Commencer par le bruit
Le plateau comporte sept colonnes et neuf lignes. Soixante-trois cellules. Quatre canaux par cellule. Les canaux sont des entiers ordinaires, gĂ©nĂ©rĂ©s Ă partir dâune graine explicite ; le champ de dĂ©part est donc une variation qui peut ĂȘtre restituĂ©e Ă lâidentique.
Le hasard est utile car il empĂȘche chaque partie de ressembler Ă la prĂ©cĂ©dente. Une graine est utile car elle rend cette variation reproductible. Deux parties peuvent partir du mĂȘme bruit et ne diverger que lorsque le joueur choisit une condition diffĂ©rente. Sans cette divergence, un plateau « mort » et un plateau « jouable » seraient des accidents indiscernables. GrĂące Ă elle, la diffĂ©rence peut ĂȘtre attribuĂ©e.
entrée aléatoire
est la graine.
influence du joueur
correspond à la séquence de conditions.
Ă lâĂ©tape zĂ©ro, les canaux sont encore bruts. Les cellules voisines ne sâaccordent pas. Rien sur le plateau nâest encore « terre » ou « vide », car ces termes constituent une interprĂ©tation qui nâexiste pas avant que le cinquiĂšme passage ne soit verrouillĂ©. Ce que le joueur voit, câest le bruit lui-mĂȘme : quatre valeurs, reprĂ©sentĂ©es sous la forme dâun champ indĂ©cis.
Dans Darkwaar20, le « dĂ©bruisage » est un terme de conception de jeu dĂ©signant les passages qui suivent. La mise en Ćuvre repose sur lâarithmĂ©tique entiĂšre dĂ©terministe. Il nây a ni rĂ©seau neuronal, ni modĂšle entraĂźnĂ©, ni infĂ©rence de gĂ©nĂ©ration dâimages. Le schĂ©ma utile est plus simple :
bruit
â transformations locales rĂ©pĂ©tĂ©es
â structure de plus en plus stable
Cinq façons de façonner la mĂȘme graine
Chaque passe ne prend en compte que le plateau actuel. Une cellule ne conserve pas dâhistorique expliquant pourquoi sa valeur existe. Elle contient quatre entiers. La passe lit ces entiers, lit les voisins orthogonaux, applique la condition sĂ©lectionnĂ©e et Ă©crit le plateau suivant. Ce plateau suivant est la seule entrĂ©e dont le passage suivant a besoin.
état n
+
rĂšgle locale
=
état n + 1
La rĂšgle de base est la mĂȘme pour chaque condition. Calculer la moyenne de la cellule avec ses voisins orthogonaux existants, puis ajuster chaque canal Ă lâun des quatre niveaux suivants :
value = average(cell, north, south, east, west)
value = snap(value, [0, 85, 170, 255])
L'alignement est lâĂ©tape qui crĂ©e la structure. Un canal qui pourrait se situer nâimporte oĂč entre 0 et 255 est contraint de sâaligner sur un Ă©chelon. Des cellules qui Ă©taient simplement proches deviennent identiques. Les voisins identiques survivent plus facilement au calcul de moyenne suivant quâun champ dispersĂ©. RĂ©pĂ©tez lâitĂ©ration et les divergences locales sâamenuisent. Des rĂ©gions apparaissent parce que la prĂ©cision a Ă©tĂ© supprimĂ©e, et non parce quâune forme a Ă©tĂ© dessinĂ©e.
La condition sĂ©lectionnĂ©e modifie cette moyenne avant lâalignement. LIFE, ORDER et VOID ne sont pas des Ă©tiquettes superposĂ©es Ă un seul algorithme. Ce sont trois modifications distinctes.
LIFE augmente la moyenne, et augmente davantage la valeur dâune cellule soutenue. Par « soutenue », on entend une voisine orthogonale dont la valeur sur ce canal se situe Ă moins de 64 de celle de la cellule. Deux voisines de ce type ou plus ajoutent 48. Moins de deux ajoutent 16. Le rĂ©sultat est plafonnĂ© puis alignĂ©. Les structures connectĂ©es et similaires sont poussĂ©es vers le haut. Une cellule isolĂ©e Ă©volue tout de mĂȘme, mais dans une moindre mesure, ce qui permet Ă un passage ultĂ©rieur de la laisser plus facilement derriĂšre lui.
ORDER modifie la moyenne elle-mĂȘme. Chaque voisin est comptĂ© trois fois, et la cellule une fois. Le passage recense Ă©galement quel niveau alignĂ© apparaĂźt parmi la cellule et ses voisins. Si un niveau recueille une majoritĂ© stricte, ce niveau lâemporte sans appel. Sinon, la moyenne pondĂ©rĂ©e est ajustĂ©e comme dâhabitude. Les divergences au sein dâun voisinage sont Ă©cartĂ©es dĂšs quâun niveau parvient Ă lâemporter sur les autres. Les rĂ©gions cohĂ©rentes se dĂ©veloppent plus rapidement sous ORDER que sous une simple moyenne, car câest le voisinage qui est autorisĂ© Ă dĂ©cider.
VOID abaisse la moyenne. Moins de deux voisins favorables soustraient 120. Deux voisins ou plus soustraient 64. Le rĂ©sultat est plafonnĂ© Ă zĂ©ro et arrondi. Les structures faibles ou isolĂ©es sont repoussĂ©es vers le bas de lâĂ©chelle. Des passages rĂ©pĂ©tĂ©s de VOID ne creusent pas un trou prĂ©dĂ©fini. Ils font sâeffondrer tout ce qui nâĂ©tait pas dĂ©jĂ soutenu par ses voisins, jusquâĂ ce que des valeurs faibles recouvrent la cellule et, par la suite, soient interprĂ©tĂ©es comme vides.
Aucune de ces rĂšgles ne simule un processus physique. Il sâagit de modifications locales dâentiers dont les consĂ©quences sont lisibles : LIFE renforce les structures soutenues, ORDER rĂ©sout les dĂ©saccords, VOID efface ce qui nâest pas soutenu.
Cinq passages correspondent à cinq décisions, et non à cinq itérations automatiques.
condition
â rĂ©gler
â inspecter
AprĂšs chaque « settle », le plateau est visible. Les premiers passages semblent encore bruyants, mais des zones plates commencent Ă apparaĂźtre. Les passages suivants rĂ©vĂšlent des rĂ©gions plus vastes. Le joueur ne regarde pas une barre de progression. Il lit un rĂ©sultat partiel et choisit la contrainte suivante en tenant compte de ce rĂ©sultat. Le monde nâest pas gĂ©nĂ©rĂ© avant le dĂ©but de la partie. La gĂ©nĂ©ration du monde constitue la premiĂšre phase du jeu.
Un sixiĂšme passage ne fait rien. Une fois que cinq conditions ont Ă©tĂ© appliquĂ©es, les canaux cessent dâĂȘtre du bruit et deviennent du terrain.
Transformer des nombres en terrain
Le gĂ©nĂ©rateur ne construit pas une deuxiĂšme carte. Il lit les quatre mĂȘmes canaux quâil a réécrits.
sum = a + b + c + d
sum <= 340 â VIDE
sum >= 680 â ĂNERGIE
sinon â SOL
Les seuils correspondent aux niveaux dâalignement. Quatre canaux Ă 85 donnent un total de 340, ce qui correspond au vide. Quatre canaux Ă 170 donnent un total de 680, ce qui correspond Ă lâĂ©nergie. Toute valeur intermĂ©diaire correspond au sol. La continuitĂ© est importante :
valeurs de bruit
â valeurs stabilisĂ©es
â terrain
Aucun jet de dĂ© distinct ne place de murs, dâĂ©nergie ou de piĂšces. Le terrain correspond Ă une lecture du champ laissĂ© par le passage.
Ce champ doit encore devenir un itinĂ©raire. Le noyau est la cellule non « vide » la plus forte. Son score est a + b + 2c : les deux premiers canaux comptent une fois, le troisiĂšme canal compte deux fois. Le score le plus Ă©levĂ© lâemporte. En cas dâĂ©galitĂ©, on privilĂ©gie la plus petite ligne, puis la plus petite colonne. La sortie est choisie uniquement parmi les cellules de sol accessibles depuis le noyau par un parcours orthogonal Ă travers le sol et lâĂ©nergie. Parmi ces cellules, celle qui est la plus Ă©loignĂ©e du noyau selon la distance de Manhattan lâemporte. En cas dâĂ©galitĂ©, on privilĂ©gie la plus grande ligne, puis la plus grande colonne. LâĂ©nergie peut ĂȘtre traversĂ©e. Elle ne peut pas constituer la sortie. Le noyau lui-mĂȘme nâest pas Ă©ligible.
Rien nâest placĂ© a posteriori. Si les passages ne laissent aucune case non vide, il nây a pas de noyau. Si aucune case « sol » nâest accessible, il nây a pas de sortie. La topologie correspond Ă lâitinĂ©raire.
Quand la génération devient gameplay
AprĂšs le cinquiĂšme passage, les rĂšgles se simplifient. Le joueur se trouve sur le noyau. Le dĂ©placement se fait dâun pas orthogonal. On peut entrer dans les cases « sol », « Ă©nergie » et « sortie ». Le vide bloque le passage. Atteindre la sortie permet de gagner. Un plateau sans sortie accessible nâest ni rĂ©parĂ© ni relancĂ©. Il se termine par « NO WAY OUT ».
La traversĂ©e est simple car les dĂ©cisions ont dĂ©jĂ Ă©tĂ© prises. Marcher rĂ©pond Ă une seule question : ces cinq transformations ont-elles laissĂ© un monde viable ? Un long chemin nâest pas une deuxiĂšme Ă©nigme superposĂ©e Ă la gĂ©nĂ©ration. Câest la consĂ©quence du champ produit par la gĂ©nĂ©ration.
Lâimage retrace le mĂȘme processus. Lâimage dâouverture est du bruit brut. Les images intermĂ©diaires mĂ©langent ce bruit aux rĂ©gions que les seuils impliqueraient dĂ©jĂ . Les images suivantes se fixent sur des zones plus vastes de sol, dâĂ©nergie et de vide. La derniĂšre image reprĂ©sente le monde figĂ©, avec le noyau et la sortie marquĂ©s. Le dessin nâest pas une illustration distincte. Câest lâĂ©tat lui-mĂȘme, reprĂ©sentĂ© avec moins de dĂ©tails entiers Ă mesure que cet Ă©tat devient plus contraint. Le joueur peut suivre la perte de possibilitĂ©s sans lire les canaux.
MĂȘme bruit, monde diffĂ©rent
La graine 20020 est lâexemple examinĂ©. Le champ dâouverture est identique dans les deux exĂ©cutions. Seules les cinq conditions changent.
LIFE
ORDER
LIFE
VOID
ORDER
verrouille un monde jouable. Le noyau est (3, 0). La sortie est (6, 8). Le plateau contient 6 cases vides, 54 cases de sol et 3 cases dâĂ©nergie. Une marche orthogonale depuis le noyau permet dâatteindre la sortie.
La graine est ensuite restaurĂ©e, ce qui rĂ©tablit le bruit dâorigine, le nombre de pas et lâhistorique vide. La deuxiĂšme sĂ©quence est :
VOID
VOID
ORDER
VOID
LIFE
Chacune des 63 cellules est vide. Il nây a ni noyau, ni sortie, ni chemin. Le rĂ©sultat est NO WAY OUT.
graine 20020 + séquence A = monde jouable
graine 20020 + séquence B = monde mort
Ce nâest pas le hasard initial qui en a dĂ©cidĂ© ainsi. Ce sont les contraintes.
Petites rÚgles, conséquences générées
Ă lâĂ©tape zĂ©ro, chaque cellule a encore de nombreux avenirs possibles. Un canal peut se diriger vers nâimporte lequel des quatre Ă©chelons, et cinq choix restent possibles. Chaque passage Ă©limine certains de ces avenirs. LIFE consacre une Ă©tape Ă maintenir les valeurs soutenues Ă un niveau Ă©levĂ©. ORDER consacre une Ă©tape Ă laisser une majoritĂ© locale effacer la minoritĂ©. VOID consacre une Ă©tape Ă faire reculer les valeurs non soutenues. Ă lâĂ©tape cinq, lâincertitude sâest suffisamment dissipĂ©e pour que les sommes puissent ĂȘtre interprĂ©tĂ©es comme un terrain, et que ce terrain puisse ĂȘtre interprĂ©tĂ© comme un itinĂ©raire.
Il sâagit lĂ dâune gĂ©nĂ©ration par contrainte, et non par placement. LâimplĂ©mentation nâindique jamais oĂč se trouve un mur, oĂč va lâĂ©nergie, ni oĂč se trouve la sortie. Elle se contente de restreindre le champ. La sortie apparaĂźt lĂ oĂč le terrain restant est le plus Ă©loignĂ© de la cellule restante la plus forte, parmi les cellules que le vide nâa pas isolĂ©es. Si les restrictions vont trop loin, la sortie nâapparaĂźt pas du tout.
de nombreux mondes possibles
â
contrainte
â
moins de mondes possibles
â
contrainte
â
topologie stable
â
monde jouable
Le mĂ©canisme reste simple car le plateau fait office de mĂ©moire. Il nây a pas de passe-biome, pas de passe-piĂšce, pas de passe-chemin, pas de placeur de ressources, ni dâĂ©tape de rĂ©paration qui corrige discrĂštement une carte illĂ©gale. Quelques rĂšgles entiĂšres, un voisinage, une quantification, cinq dĂ©cisions, deux seuils et un choix dĂ©terministe du noyau et de la sortie suffisent pour quâune topologie apparaisse. La complexitĂ© rĂ©sulte ici de la rĂ©pĂ©tition dâune rĂšgle locale, et non dâun catalogue de systĂšmes possĂ©dant chacun un type de contenu particulier.
LâĂ©chec fait partie de ce rĂ©sultat. De nombreux gĂ©nĂ©rateurs testent un niveau et relancent le processus jusquâĂ ce quâun chemin existe. Darkwaar20 conserve le plateau inerte. Si chaque sĂ©quence Ă©tait corrigĂ©e pour former une carte praticable, la VIE, lâORDRE et le VIDE ne seraient que des prĂ©fĂ©rences visuelles. « NO WAY OUT » est la preuve quâil nâen est rien. Un monde dont la validitĂ© serait garantie serait plus facile Ă finaliser. Un Ă©chec autorisĂ© donne tout son sens aux cinq conditions. Darkwaar20 choisit la deuxiĂšme option.
Le compromis est visible sur une seule graine. La sĂ©quence A laisse un noyau en haut du plateau et une sortie dans le coin le plus Ă©loignĂ©, avec une faible dispersion de vide et dâĂ©nergie. La sĂ©quence B, Ă partir des mĂȘmes nombres entiers, consacre quatre de ses cinq dĂ©cisions Ă faire descendre des cellules non soutenues et aboutit Ă un plateau impraticable. MĂȘme bruit. Des contraintes cumulĂ©es diffĂ©rentes. Un jeu diffĂ©rent, y compris un jeu auquel on ne peut pas jouer.
Jouer Ă Darkwaar20
Le bruit nâest pas le monde gĂ©nĂ©rĂ©. Câest lâespace des mondes possibles. Cinq choix Ă©liminent des possibilitĂ©s jusquâĂ ce quâil ne reste quâun seul monde. Darkwaar20 demande alors au joueur de parcourir les consĂ©quences.
La gĂ©nĂ©ration fait partie intĂ©grante du jeu, car le joueur impose des contraintes au monde avant mĂȘme de devoir y jouer.
Darkwaar20 est jouable dans le navigateur sur itch.io. La page de lancement de Darkwaar20 correspond Ă la fiche du jeu sur darkwaar.com.
Top comments (0)