DarwinBotsManual
Abrir la app EnglishEN

El mundo

El escenario donde viven los bots: el tamaño del campo, los bordes con paredes o conectados, los obstáculos y laberintos, los teleporters, la luz, la gravedad y las mareas, y los costos que valen para todos.

Los bots viven en un rectángulo plano. Todo lo que no es un bot (el tamaño de ese rectángulo, lo que pasa en sus bordes, las paredes que haya adentro, la luz, la gravedad, lo que cuesta cada acción) es parte del mundo, y se configura con los parámetros de la app (ver Experimentar y Experimentar: modo avanzado).

Esta página recorre esas piezas. Las que tienen página propia (el sol y los vegetales, la física fina) se cuentan acá solo lo necesario, con el enlace.

El campo

El campo mide Ancho del campo por Alto del campo. El origen está arriba a la izquierda: la coordenada horizontal crece hacia la derecha y la vertical hacia abajo, y por eso el bot lee su altura como una profundidad, en .depth, y la horizontal en .xpos.

La app ofrece los tamaños clásicos del original: el 1 es el campo de los torneos F1, de 9237 × 6928, y del 2 al 12 crecen de a 8000 × 6000 (el 2 mide 16000 × 12000). También se puede poner cualquier medida a mano. El tamaño no se puede cambiar en una simulación que ya está corriendo: hace falta una nueva.

Para tener una idea de la escala: con la velocidad máxima por defecto (Velocidad máxima), un bot avanza a lo sumo 40 unidades por ciclo, así que cruzar un campo F1 le lleva más de doscientos ciclos.

Los bordes

Cada par de bordes puede ser una pared o estar conectado:

Contra una pared, el bot no rebota: queda apoyado en el borde, frenado, y .edge se enciende. En un borde conectado, en cambio, reaparece del otro lado con la misma velocidad. Si es un multibot (ver Lazos y multicelulares), cruza el organismo entero de una vez, sin que se estiren los lazos. Los detalles del choque contra la pared están en Física.

Este bot mira a la derecha al nacer y avanza siempre:

' Mira a la derecha y avanza siempre
cond
 *.robage 0 =
start
 0 .setaim store
stop
cond
start
 10 .up store
stop
end

En un campo de 2000 de ancho con paredes, llega a la derecha en el ciclo 33 y se queda ahí, con .edge en 1. Con los lados conectados, en el ciclo 36 ya está cerca del borde izquierdo y sigue viaje.

Obstáculos y laberintos

Los obstáculos (también llamados formas) son rectángulos fijos dentro del campo. En Experimentar, «Objetos del mundo», se agregan de tres maneras: un obstáculo suelto, tandas de diez al azar, o un laberinto. Se ubican con la semilla de la simulación, así que la misma semilla da el mismo mapa, y cambiarlos pide una simulación nueva.

Los laberintos son seis; en los de filas y en la espiral se eligen el ancho del pasillo y el de la pared, y en el damero, el del pasillo:

LaberintoCómo es
horizontal, verticalFilas de paredes, cada una con una abertura al azar.
espiralAnillos rectangulares uno dentro del otro, con las bocas corridas.
dameroUna cuadrícula de bloques cuadrados en el centro del campo.
polarNueve bloques grandes, uno encima del otro en el centro, que se separan a la deriva (el laberinto enciende la deriva).
escombrosDos paredes desde los costados. Si Velocidad de deriva es mayor que 0 al crearlas, avanzan, se cruzan y vuelven; con el valor de fábrica (0) quedan quietas.

Un bot que choca con un obstáculo es empujado hacia afuera por el lado más cercano y siente el golpe en .hit y sus direcciones. Si un bot queda apretado entre tres a la vez, el motor lo hace saltar para destrabarlo.

Lo demás se configura:

ParámetroQué cambia
Los bots ven las formasLos ojos detectan los obstáculos. Si no, son invisibles: el bot solo se entera al chocar. Ver Visión.
Transparentes a la vistaSe ve a través de ellos.
Absorben disparosLos disparos que los tocan desaparecen (si no, rebotan).
Deriva horizontal, Deriva vertical, Velocidad de derivaLos obstáculos se desplazan solos, de lado o de arriba abajo.

Cuando lo más cercano que ve el ojo con foco es un obstáculo, .reftype vale 1, y eso lo distingue de otro bot.

Teleporters

Un teleporter es un círculo que manda a otra parte lo que lo toca. En la app son locales: el bot que entra (sea animal, vegetal o cadáver) reaparece en un punto al azar del campo, y si es un multibot viaja el organismo entero. Se pueden poner hasta diez, en lugares al azar con la semilla.

Sirven, por ejemplo, para mezclar poblaciones que un laberinto mantendría separadas.

La luz

La energía entra al mundo por el sol, que alimenta a los bots con cloroplastos. Cómo comen está en Cloroplastos y vegetales; lo que el mundo decide es cuándo y dónde hay luz:

Gravedad, estanque y mareas

Gravedad Y (hacia abajo) tira de cada bot hacia abajo con una fuerza proporcional a su masa (.mass). Es la que hace del campo un estanque con fondo. La otra, Gravedad Z (contra el suelo), no mueve a nadie: aprieta a los bots contra el «suelo» y así activa el rozamiento (ver Física).

En modo estanque, con gravedad y con los bordes de arriba y abajo sin conectar, los bots pueden flotar. Cada uno tiene una flotabilidad entre 0 y 1, que ajusta con .setboy y lee en .rdboy: el motor lo empuja hacia arriba o hacia abajo para llevarlo a la altura que le corresponde. Con flotabilidad 0 se hunde hasta el fondo, con 1 sube hasta la superficie y con 0,5 busca la mitad del estanque. Mantenerse a flote cobra energía como el movimiento (Mover).

' Al nacer fija su flotabilidad en la mitad
cond
 *.robage 0 =
start
 16000 .setboy store
stop
end

En un estanque de 2000 de alto, sin rozamiento, este bot sembrado a 731 de profundidad baja, pasa la mitad y vuelve: oscila alrededor de 1000. B-Alpha Pond, del Bestiario, hace lo contrario: al nacer escribe −50 en .setboy, se hunde, y se fija con .fixpos al pasar los 6500 de profundidad.

Las mareas (Mareas (ciclos; 0 = no)) hacen oscilar el mundo con el período que les pongas, en ciclos. En una parte del período la gravedad sube (hasta 4) y el sol alimenta a pleno; en la otra la gravedad cae casi a 0, el agua se agita (movimiento browniano) y los vegetales casi no comen.

Los costos

Lo que cuesta cada cosa también es del mundo, igual para todos los bots: ejecutar instrucciones, moverse, disparar, tener cuerpo o un ADN largo, fabricar defensas, reproducirse. Son los parámetros de costos (como Store o Disparar); vienen en 0, salvo que elijas una base que los fije, como la de los torneos F1. Qué cobra cada uno y en qué momento está en Energía, cuerpo y desechos y en Ejecución y costos.

Todos se multiplican por Multiplicador de costos: con 0 todo es gratis, con 2 todo cuesta el doble. Con Ajuste dinámico de costos ese multiplicador se ajusta solo, subiendo cuando sobran bots y bajando cuando faltan, para acercar la población a Población objetivo; y aparte hay un freno que pone todo gratis cuando quedan muy pocos bots (Costos en cero bajo la población). Cómo funcionan los dos está en El ciclo y el orden de las acciones.

Torneos y otros modos

El original traía además reglas para concursos: rondas que se reinician cuando no quedan animales (Reiniciar la ronda sin heterótrofos), el modo F1 de especies que compiten hasta que gana una (Modo F1 (concurso de especies)) o la descalificación de las especies que hacen algo prohibido (Descalificación). Están en la app, pero lo normal es usarlas desde Competir (ver Competir), que arma los partidos y lleva la cuenta.