El juego de la vida de Conway en 3D con Maya

Originalmente creado por Cory Clarke (el script no se puede ya descargar de la web original) y modificado por Chris Csendes de la Universidad de Columbia, este script MEL te permite crear una simulación del juego de la vida de John Conway, el ejemplo más conocido de autómata celular. Exactamente es un script que usa un algoritmo muy similar al descrito por Conway pero aplicado a una matriz 3D de objetos.

El juego de Conway opera en una rejilla 2D topológicamente unida, de cuadrados blancos y negros que se encienden o apagan basandose en un conjunto de instrucciones muy sencillas. La versión original de Clarke permite usar una matriz formada únicamente por cubos, aunque la modificada de Csendes permite elegir entre cubos o esferas, que se encienden o apagan basandose en un conjunto de comprobaciones de proximidad. Basándose en un patrón inicial generado aleatoriamente, el script genera una animación que puede ser reproducida fácilmente o bien extendida ejecutando el script durante más tiempo.

El conjunto de instrucciones para esta particular versión del juego de la vida son:

1) Si un espacio de la rejilla está rodeado por dos o más objetos, se enciende el objeto situado en esa posición de la rejilla.

2) Si un espacio de la rejilla está rodeado por siete o más objetos, se apaga el objeto situado en esa posición de la rejilla. Las instrucciones básicas para usar el script son las siguientes:

global proc life_init(string $prefix, int $gridX, int $gridY, int $gridZ, string $type, int $rndcut)

El anterior procedimiento inicializa el juego y los parámetros pasados corresponden a:

– prefix = Un descriptor para el juego que vamos a ejecutar.

– gridX,gridY,gridZ = El tamaño de la rejilla que vamos a crear.

– type = el tipo de objeto que vamos a usar. Soporta “sphere” y “cube”.

– rndcut = Hace referencia a las posibilidades (%) de que un objeto esté apagado como estado inicial. Ejemplo: life_init (“a”, 10, 10, 10, “sphere”, 60); Crea una rejilla de esferas de 10x10x10 con una posibilidad del 60% de que esté vacia de objetos.

global proc life_run(string $prefix, int $gridX, int $gridY, int $gridZ, int $steps, int $coloring)

Este otro procedimiento ejecuta el juego de la vida. Los parámetros a pasar son los siguientes:

-prefix = El mismo valor que usamos en el procedimiento “life_init”.

– gridX,gridY,gridZ = También el mismo valor para la rejilla que usamos al inicializarla.

– steps = Numero de pasos a ejecutar el script. Es recomendable ejecutarlo en principio durante unos pocos pasos (entre 5 y 10) para comprobar que no lleva a un estado muerto rápidamente. En caso de que no sea así­, se puede continuar ejecutando el script.

– coloring = Puede tener como valor o bien  1. Si el valor es 1 se activará un comportamiento extra que coloreará los objetos más persistentes. Ejemplo: life_run (“a”, 10, 10, 10, 5, 1) Ejecuta el juego en una rejilla de 10x10x10 durante 5 pasos (50 frames) y coloreará los objetos más longevos.

Descargar script: life.mel

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *