Lowlight.fr

Les rêves ne sont qu'une autre réalité,
ne jamais l'oublier.

Pokémon Rubis & Saphir
Nintendo

Les automates cellulaires complexes

Le plus connu des **automates cellulaires** est sans doute le Jeu de la vie °(de John Conway)°. J'ai toujours trouvé ce dernier °(ainsi que ses nombreuses variantes)° passionnant à regarder, et en lisant quelques articles sur l'hypothèse de simulation, je me suis décidé à commencer la réalisation de ce qu'on pourrait appeller le **Jeu de la survie**.

Cet article consiste en une **présentation** de l'automate cellulaire complexe lowlighter/cellular-automaton (documentation) que j'ai réalisé, d'**explications** sur l'univers généré °(biomes, cycles temporels, météo, etc...)°, la flore °(arbres et baies)°, la faune °(génétique, comportement, reproduction et éducation de animaux)° ainsi que sur la réalisation technique de cet automate.

Nota Bene : Cet article en encore en cours de rédaction et son programme en cours de développement.

Démonstration

Chaque univers généré par l'automate cellulaire dépend uniquement de la **seed** °(nombre de la création)° qui lui a été attribué avant le début de la simulation.

Pokémon est une marque déposée de Nintendo.
Cet article est destiné à des fins purement pédagogique et ne vise en aucun cas à nuire à la propriété intellectuelle de Nintendo.

Sprites obtenus sur The Spriters Resource, Bulbapedia et Poképédia.
Tileset composé par Mew1993.

Vous pouvez suivre l'avancement de l'automate ici.

Prochainement

L'univers

Lié par le °(noeud)° destin ?

Même si le terme **complexe** sous-entend que le déroulement cet automate est complètement aléatoire, ce n'est pas le cas : il est entièrement déterministe. En utilisant des générateurs de nombres pseudo-aléatoire °(e.g. lowlighter/random)° pour construire l'univers, contrôler son évolution et influencer les choix des êtres qui le peuplent, il suffira d'utiliser le même **nombre de la création** pour reproduire exactement le même scénario.

Les biomes

La carte est générée **couche par couche**, en partant du biome le plus profond jusqu'à atteindre les biomes les plus élevés. A chaque couche, un peu de **post-processing** est effectué pour supprimer les cases isolées °(ce qui provoquait également des bugs de textures)° ainsi que pour vérifier la cohérence du monde engendré °(i.e. les différences d'élévation ne peuvent être supérieure à 1)°.

La génération est régi par deux paramètres : l'**élévation** et le **climat** °(mixte entre température et humidité)°, qui sont calculées à partir d'un **bruit de Perlin**. Après la génération totale de la carte, une **dernière opération de post-processing** est effectuée afin de poser quelques obstacles °(rochers, arbres, etc.)° ainsi que pour peupler le monde.

Les différents types de biome profitent à différentes espèces °(qu'elles soient végtales ou animales)° et influent sur leur vitesse de développement. Vous pourrez trouvez ci-dessous la liste des biômes pouvant être générés :

Biome Altitude Température Espèces favorisées (globalement)
**Abysses** ▰▱▱▱▱ ▰▱▱
**Océan tempéré** ▰▰▱
**Océan tropical** ▰▰▰
**Plage polaire** ▰▰▱▱▱ ▰▱▱
**Côtes** ▰▰▱
**Plage solaire** ▰▰▰
**Plaines** ▰▰▰▱▱ ▰▱▱
**Forêt** ▰▰▱
**Jungle** ▰▰▰
**Grotte** ▰▰▰▰▱ ▰▱▱
**Montagnes (avec végétation)** ▰▰▱
**Montagnes arides** ▰▰▰
**Pic glacial** ▰▰▰▰▰ ▰▱▱
**Pic rocheux** ▰▰▱
**Pic volcanique** ▰▰▰

Le cycle jour/nuit et la météo

Le développement de chaque être sera également influencé selon le **temps de la journée** °(selon s'il s'agit d'une espèce diurne ou nocture)° : champ de vision, heures de sommeil, photosynthèse pour certaines plantes, etc. Cela peut également modifier leurs mutations et évolutions.

La **météo** joue plus à altérer sur le court terme en prodiguant des malus °(e.g. perte de PV pour les espèces inadaptées, réduction du champ de vision, etc.)° ou des bonus °(e.g. chance de semer un prédateur, etc.)° même si elle peut avoir des effets non négligeables sur le long terme, notamment en ce qui concerne la récolte des arbres à baies.

Prochainement

La flore

Les arbres à baies

Source de nourriture pour les herbivores et omnivores, les arbres à baies produisent après floraison de délicieux fruits comestibles par les Pokémons. Si elles ne sont pas consommés, il se peut qu'elles donnent naissance à un nouvel arbre.

Pour pouvoir se développer correctement, ils doivent évoluer dans un environment convenable, basé sur les critères suivants :

  • **Température** : Certaines espèces poussent mieux dans les milieux chauds tandis que d'autres préfèrent la fraîcheur.
  • **Population** : Une surpopulation entraine un déficit des nutriments présents dans le sol, empêchant l'arbre de se développer davantage.
  • **Ensoleillement** : Même si la plupart des espèces végétales sont diurnes, il se peuvent qu'elles évoluent durant la nuit.
  • **Météo** : La météo peut avoir des répercussions sur les récoltes ou la vitesse d'évolution.

Chaque baie permet de restorer jusqu'à 25% de la jauge de faim de celui qui la mange. Voici une liste des baies actuellement implémentées, avec leur effets supplémentaires respectifs.

Basiques
Baie Oran Restore 20% des PV
Baie Sitrus Restore 35% des PV
Baie Mepo Rassasie entièrement
Autres
Baie Egnima Applique aléatoirement un autre effet de baie

De nouvelles baies seront rajoutées au fur et à mesure du développement de l'automate.

Prochainement

Le génome des arbres à baies est assez simple et ne se compose que de ces quelques gènes :

  • **Adaptabilité** : Variables selon les milieux, détermine à quelle vitesse l'arbre évoluera.
  • **Productivité** : Détermine le nombre minimum et maximum de baies produites.
  • **Longetivité** : Plus elle est elevée, plus l'arbre a de chances de rester en vie longtemps.
  • **Fertilité °(%)°** : Plus il est elevée, plus ses baies ont de chances de donner naissance à de nouveaux arbres.

Notez que j'ai procédé à une petite simplification pour cet automate : les arbres à baies sont assexués et peuvent se reproduire sans fécondation. Toutefois, des croisements sont possibles avec les arbres à baies à proximité.

La faune

Les Pokémons

C'est surement ce qu'il y a de plus passionnant à regarder dans cet automate. Les Pokémons de cet automate sont très complexes, et leurs comportements aussi °(quelle horreur à déboguer !)°.

On distingue trois catégories de Pokémons : les **herbivores**, les **carnivores** et les **omnivores**. Cela permet d'instaurer un système de **prédateurs-proies** similaire à celui de Lotka-Volterra. En plus de ceci, chaque Pokémon possède également un °(voire deux)° type°(s)° qui limitent également les cibles des prédateurs °(e.g. Un Pokémon éléctrique aura plus de chances avec des proies de type eau)°.

Le type influe grandement sur l'adaptabilité d'un Pokémon par rapport à son environment et permet de garder une cohérence dans la chaîne alimentaire. Par exemple, il est très rare qu'une créature terrestre se fasse attaquer par une créature aquatique °(sauf dans de rares cas où elle serait proche du bord de mer)°.

Les Pokémons peuvent lier des liens de parentés et d'amitiés. Les parents auront tendance à protéger leurs progénitures voire même à les nourrir, tandis que les Pokémons amis resteront généralement en troupeau.

Arrivé à maturité sexuelle, des Pokémons compatibles °(i.e. genres opposés et appartenance au même groupe d'oeuf)° peuvent se reproduire. Tous les Pokémon sont **ovipares** °(ils pondent des oeufs)° et après reproduction, il leur faudra un certain temps °(variable selon les individus)° avant de pouvoir se reproduire à nouveau. La progéniture hérite des gènes de ses parents, avec parfois quelques mutations. Il peut également arriver lors de croisement qu'apparaisse une nouvelle espèce.

Plusieurs espèces de Pokémons existent dans cet automate cellulaire, qui sont répertoriées ci-dessous. Les Pokémons d'un même groupe peuvent se reproduire entre eux °(si les deux espèces sont différentes, cela peut donner lieu à des mutations)°.

Pokémon Groupe
Oeuf Inconnu
Magicarpe Aquatique
Evoli Terrestre

De nouveaux Pokémons seront rajoutées au fur et à mesure du développement de l'automate.

Prochainement

Le génome des Pokémons est plus complexe et se compose des gènes suivants :

  • **Adaptabilité** : Variables selon les milieux, détermine à quelle vitesse le Pokémon se déplacera.
  • **Longetivité** : Plus elle est elevée, plus le Pokémon a de chances de rester en vie longtemps.
  • **Fertilité °(%)°** : Plus il est elevée, plus il pourra procréer rapidement.
  • **Croissance °(%)°** : Vitesse à laquelle le Pokémon se développe lorsqu'il n'est pas affamé.
  • **Faim °(%)°** : Influe sur l'énergie dépensée à chaque itération par le Pokémon, ainsi que sur le nombre de PV perdu lorsqu'il est affamé.

Les gènes liés à la physionomie sont les suivants :

  • **Portée** : Influe sur la longueur du champ de vision du Pokémon.
  • **Angle** : Influe sur la largeur du champ de vision du Pokémon.
  • **Taille max** : Détermine la taille maximum du Pokémon

Et voici la liste des statistiques :

  • **Points de vie maximum** : Détermine le nombre maximum de PV qu'aura le Pokémon à la fin de sa croissance.
  • **Régénération (PV)** : Nombre de PV regénéré à chaque itération lorsque le Pokémon n'est pas affamé.
  • **Vitesse** : Vitesse de déplacement.
  • **Attaque** : Plus elle est elevée, plus les capacités physiques du Pokémon inflegeront de dégâts.
  • **Défense** : Plus elle est elevée, moins les capacités physiques des autres Pokémon inflegeront de dégâts.
  • **Spécial** : Détermine les dégâts infligés par les capacités spéciales.

Cette partie est encore susceptible de changer.

Prochainement

Le comportement d'un Pokémon dépend de son état actuel lors du calcul de la prochaine itération.

L'action exécutée à la prochaine itération dépend des priorités définies par le Pokémon °(i.e. il mangera s'il a faim, dormira s'il est fatigué, chassera s'il a besoin de nourritue, etc.)° et ces priorités dépendent du vécu de celui-ci. C'est-à-dire que chaque instance de Pokémon est unique, et que même au sein de la même espèce le comportement d'un Pokémon l'est aussi. Un peu comme nous autres, en fait.

La liste des actions possibles est définie ci-dessous :

  • Se promener
  • Se déplacer
  • Chasser
  • Attaquer
  • Manger
  • Fuir
  • Suivre
  • Se défendre °(ou défendre une cible)°
  • Se reproduire
  • Dormir

Il est possible que d'autres actions soient implémentées par la suite.

Prochainement

Les Pokémons peuvent intéragir avec leur environment en utilisant différentes capacités. Elles peuvent leur servir à chasser, à se défendre ou même à se soigner.

Il faut également savoir que certaines capacités se transmettent de parents à enfants, ce qui favorisent généralement la survie de ces derniers lors de croisements.

La liste des capacités implémentées est disponible ci-dessous :

Capacité Effet
Hâte Augmente temporairement la vitesse du Pokémon

De nouvelles capacités seront rajoutées au fur et à mesure du développement de l'automate.

Prochainement

Le fonctionnement

°En cours de rédaction.°

Prochainement

La réalisation

°En cours de rédaction.°

Prochainement

01 - Mew 02 - Kabuto 03 - Kabutops 04 - Ptera 05 - Lilia 06 - Vacilys 07 - Kranidos 08 - Charkos 09 - Dinoclier 10 - Bastiodon 11 - Carapagos 12 - Mégapagos 13 - Relicanth 14 - Arkéapti 15 - Aéroptéryx 16 - Anorith 17 - Armaldo 18 - Marcacrin 19 - Cochignon 20 - Mammochon Saquedeneu Bouldeneu Yanma Yanméga XX - Magicarpe Amonita Amonistar Kokiyas Crustabri Lokhlass