top of page

Le jeu de la vie

 

 

     Le "jeu de la vie" n'est pas un jeu à proprement parler, ou alors éventuellement un jeu à zéro joueur... C'est ce qu'on appelle un automate cellulaire régi par certaines règles permettant de passer d'un état à un instant "t" à l'état suivant "t+1".

​

     Le jeu se base sur une grille en deux dimensions, où chaque cellule peut prendre deux valeurs : vivante (blanche) ou morte (noire). Cette grille est potentiellement infinie, mais pour des raisons évidentes, elle sera limitée à une taille prédéfinie, mais non bornée (comme par répétition, le bord droit est "accolé" au bord gauche, de même pour les bords haut et bas). L'état suivant d'une cellule est défini par son propre état courant et l'état courant de ses huit cellules voisines.

​

Les règles

​

     Nous avons voulu faire ici le jeu de la vie tel que John Horton Conway l'avait pensé, c'est-à-dire qu'il suit deux règles simples :

  • Une cellule vivante entourée par deux ou trois cellules vivantes restera vivante, et mourra dans les autres cas.

  • Une cellule morte entourée par exactement trois cellules vivantes deviendra vivante, et restera morte dans les autres cas.

​

Ces règles basiques permettent d'avoir des schémas qui peuvent potentiellement se répéter, et "donner vie" aux cellules.

On peut ci-dessous impacter certains paramètres de la grille et voir l'évolution des cellules dans le temps :

​

 

 

     L'algorithme utilisé ici est relativement brut et n'a pas fait l'objet d'optimisation particulière : pour afficher une image, chaque case de la grille est parcourue, pour regarder l'état de chaque voisin. Ce traitement est opéré par le processeur de l'ordinateur. A cause de cela, si on utilise une grille trop grande, le nombre d'images par seconde peut drastiquement chuter...

​

 

 

     Un moyen de pallier à ce problème de performance est de passer le traitement de l'image sur le processeur graphique, par le biais d'un shader. La carte graphique étant optimisée pour gérer ce genre de calcul, la limitation rencontrée précédemment sera très nettement repoussée. On pourra alors soit augmenter la vitesse de traitement des images, soit fortement augmenter la taille de l'image traitée.

bottom of page