jueves, 19 de agosto de 2010

Evolut

(Descarga directa del script aqui)

Este script es el resultado de varios intentos que, al fin, han dado resultado. El propósito de Evolut es "crear" una especie y un hábitat para ella. Una vez se ha hecho esto, se deja evolucionar a la especie y, emulando la selección natural de Darwin, se potencian una características en detrimento de otras (por ejemplo, en un hábitat con muchos depredadores, lo importante no es ser el más fuerte, sino el más rápido - para poder escapar -. De este modo, los más rápidos sobrevivirán y sus hijos serán también muy rápidos. La agilidad media de la especie se incrementa.)
Así mismo, la relación entre hábitat y especie es autorregulable. Un ejemplo: hay un población de muchos individuos. Según pasa el tiempo, van agotando la comida. En determinado momento, ya no habrá comida para todos, lo que ocasionará que varios individuos mueran de inanición. Seguirán muriendo individuos hasta que queden suficientemente pocos como para que la comida se regenere y la población pueda crecer otra vez.


Una vez explicado el objetivo del script, voy a explicar su funcionamiento.

Hay dos clases fundamentales:

Cunajo (una variación de conejo inventada por mí =P) y Duma (nombre sacado del libro "Las Hijas de Tara", de Laura Gallego, y no de una cámara parlamentaria rusa).

La clase Cunajo contiene las variables y funciones que debe ejecutar un individuo de la especie:
- Comer, morir, luchar por la comida, escapar de los depredadores, etc.

La clase Duma contiene funciones y variables de carácter global, referentes a toda la población y no a un individuo concreto. Además, la Duma incluye dos clases más:

- La Sala: es donde se da la reproducción entre los cunajos
- El Campo: aquí comen, son cazados, luchan, etc.

Lo primero que hace la Duma es crear el entorno. Dentro de este proceso, lo más importante es crear el Campo, que en realidad es el hábitat en el que se mueven los cunajos. Para ello se vale de la función Crear_Campo(), que crea un hábitat aleatorio en cada ejecución del script: cambian los valores medio de riesgo (que regulan la depredación), cambian las cantidad iniciales de comida y la tasa de regeneración de la misma, etc.
De este modo, cada vez que se ejecuta el script, se crea un entorno distinto que conduce a que los cunajos evolucionen de una forma distinta.

La función más importante de la Duma es Pasar_Dia(). Esta función va "guiando" a los cunajos a lo largo de un día entero: les dice que vayan a comer, que vayan a reproducirse, que duerman.
A raíz de estos "mensajes", los cunajos actúan según sus propias funciones internas:

- Cuando los cunajos "van" a comer (en realidad no van a ningún sitio, estamos hablando de líneas de código =D) se fijan en si hay depredadores, si hay comida suficiente, etc, y actúan en base a la información que reúnen.

- Cuando van a reproducirse, primero miran a ver si les apetece, y si así es, van a la Sala.
La Sala tiene un papel bastante especial, pues es ella, y no los propios cunajos, quien empareja a los individuos y gestiona la reproducción y el nacimiento de los nuevos cunajos.


Nota: Algunas funciones del script están diseñadas para integrarse con Blender. Sin embargo, si se mantiene la variable global script_mode como igual a cero, estas funciones no se ejecutarán.
(si no se mantiene a 0, de hecho, el script ni siquiera funcionara)

Para descargar el Script, seguir este enlace