DarwinBotsManual
Abrir la app EnglishEN

Muerte y cadáveres

Cuándo muere un bot (sin energía, sin cuerpo, por un disparo, por un shock o por presión de memoria), qué es un cadáver, cómo se descompone y qué pasa con sus lazos.

En DarwinBots no hay vejez ni enfermedad: un bot muere porque se le acaba algo. Casi siempre es la energía; a veces el cuerpo, un disparo que lo vacía de golpe o una regla del mundo que poda la población. Lo que queda depende de cómo murió y de la configuración: un cadáver que sigue ahí como comida, o nada.

Esta página cuenta las causas de muerte, en qué momento del ciclo ocurren, qué es un cadáver y cómo desaparece.

Las causas

CausaCuándo¿Deja cadáver?
Sin energía.nrg por debajo de 15, con Cadáveres activado; por debajo de 0,5 si está apagadoSí, si los cadáveres están activados
Sin cuerpo.body por debajo de 0,5No
Un disparo que lo vacíaun disparo de energía (−1) o de cuerpo (−6) lo deja con 0,5 o menos de energía o de cuerpoNo
Shockpierde más de la mitad de su energía en un ciclo y aun así le quedan más de 3000Sí: la energía que le quedaba pasa al cuerpo
Presión de memoriael ADN de todo el mundo junto pasa de 4 millones de palabrasNo

Sin energía

Es la muerte de todos los días. Todo cuesta energía (ver Energía, cuerpo y desechos), y la cuenta se lleva sin piso: dentro de un ciclo la energía puede quedar negativa, aunque tu ADN nunca lea un número menor que 0. Al final del ciclo, si quedó por debajo de 15, el bot se convierte en cadáver.

Este bot pasa su energía al cuerpo de a 100 por ciclo con .strbody, sin fijarse en cuánto le queda:

' Pasa toda su energia al cuerpo, de a 100 por ciclo
cond
start
 100 .strbody store
stop
end

Sembrado con 350 de energía, termina el ciclo 3 con 50 y el 4 con −50: en ese ciclo se convierte en cadáver, con 1040 de cuerpo. Si Cadáveres está apagado, en el mismo ciclo 4 desaparece sin dejar nada.

Sin cuerpo

Un bot vivo cuyo cuerpo baja de 0,5 muere aunque tenga energía de sobra, y no deja cadáver: no hay nada que dejar.

Muerto por un disparo

Cuando un disparo de energía o de cuerpo deja a la víctima con 0,5 o menos de energía o de cuerpo, el motor la marca como muerta, le suma una muerte a .kills del tirador y al final del ciclo la saca del mundo sin cadáver. En una prueba, un cazador que se acercaba disparando −1 a un bot quieto de 300 de energía le hizo llegar dos disparos en el mismo ciclo: el primero le sacó 198 y el segundo, el resto. El bot desapareció en ese ciclo y el cazador quedó con .kills en 1.

Un bot que queda flaco pero por encima de esa raya (entre 0,5 y 15 de energía) sí termina como cadáver al final del ciclo.

Shock

Si un bot que no es vegetal pierde en un solo ciclo más de la mitad de la energía que tenía, y aun así le quedan más de 3000, sufre un shock: toda la energía que le quedaba se le pasa al cuerpo, a razón de 10 por 1, y queda en 0. Como eso lo deja por debajo de 15, en el mismo ciclo se convierte en cadáver. Un bot con 20000 de energía que gasta 12000 de una vez en un disparo termina como cadáver con 1800 de cuerpo (tenía 1000, más 8000 / 10). Cómo era en el original y otro ejemplo, en Energía, cuerpo y desechos.

Ni vejez ni gigantismo

No hay una edad máxima. Lo que sí puede haber es un costo por edad, que crece con .robage y termina matando de hambre: Costo por edad, a partir de Edad de inicio del costo ciclos de vida, constante, logarítmico (Costo por edad logarítmico) o lineal (Costo por edad lineal, con pendiente Fracción lineal del costo por edad).

El código tiene también una regla para matar a los gigantes (cuerpo enorme con pocos cloroplastos, o más de cinco víctimas), pero su umbral es un cuerpo mayor que 32100, y el cuerpo nunca pasa de 32000: en la práctica no actúa nunca, ni en el original ni en el port.

La presión de memoria

El último paso de cada ciclo suma el largo del ADN de todos los bots del mundo, cadáveres incluidos. Si pasa de 4.000.000 de palabras, el motor mata de una vez a los más pobres: busca el bot con menos energía más diez veces su cuerpo, lo saca, y repite. Cuántos depende de la población y del largo medio del ADN: con un ADN medio de 425 palabras son unos 1500, y menos si el ADN medio es más largo.

Es una regla para que la simulación no se quede sin memoria, pero también es presión selectiva: en un mundo enorme castiga a los pobres justo cuando el genoma de la población crece. Pasa en simulaciones muy pobladas y largas, con miles de bots.

En qué momento del ciclo

Las fases del ciclo (ver El ciclo y el orden de las acciones) son: el ADN → se borran los sentidos → los disparos → fuerzas y choques → movimiento → acciones → nacimientos y muertes → el sol. La muerte toca varias:

De ahí sale algo poco intuitivo: un bot que muere en este ciclo todavía puede tener un hijo, porque su pedido de reproducción se atiende antes que su muerte. El bot marcado por un disparo incluso corre sus acciones de ese ciclo (dispara, se reproduce) antes de salir. Es así también en el original, y los bots evolucionados pudieron aprovecharlo.

Un cadáver sale del mundo cuando su cuerpo llega a 0, en el recuento que se hace entre fuerzas y choques y el movimiento: en el mismo ciclo si se lo terminaron de comer con un disparo, o en el siguiente si se le acabó por la descomposición o por un lazo.

Los cadáveres

Un cadáver es un bot que dejó de vivir pero sigue en el mundo. Conserva su cuerpo, su posición, su velocidad y sus lazos, y pierde todo lo demás:

Los demás lo ven como a cualquier bot. .refbody trae su cuerpo real, pero .refnrg vale 0 y toda su firma (.refeye y compañía) también: frente a un cadáver, *.refeye *.myeye != da verdadero, como si fuera de otra especie (ver La firma propia (my*)).

Comerse un cadáver

Lo que vale de un cadáver es el cuerpo, y la única manera de sacárselo es por el cuerpo: con disparos −6 (ver .shoot), que contra un cadáver rinden cuatro veces más que contra un bot vivo, o chupándole cuerpo por un lazo (ver Lazos y multicelulares). Un disparo de energía (−1) no le saca nada, porque no le queda energía.

Ursus Detrivoris, del Bestiario, tiene un gen para eso, comentado «eat corpses (or harmless bots)»: si lo que ve no dispara (su .refshoot vale 0, como la firma de todo cadáver), le dispara al cuerpo.

' Come cadaveres (o bots inofensivos)
cond
 *.eye5 30 >
 *.refshoot 1 <
start
 -6 .shoot store
stop

La descomposición

Si nadie se lo come, un cadáver puede pudrirse. Lo regulan tres parámetros:

ParámetroQué hace
Descomposición por cicloCuánto se descompone en cada paso. El cadáver pierde la décima parte de este valor de cuerpo.
Pausa de descomposición (ciclos)Cada cuántos ciclos da un paso.
Tipo de descomposiciónSi en cada paso suelta un disparo, en una dirección al azar: de residuos (−4) o de energía (−2), con el valor del parámetro de descomposición (o el cuerpo que le quede, si es menos).

Con descomposición 1000 y una pausa de 2 ciclos, el cadáver del primer ejemplo pierde 100 de cuerpo cada dos ciclos: pasa de 1040 a 40 en unos veinte ciclos y desaparece poco después. Con el tipo «disparo de energía», cada paso es además una pequeña ración que puede comer cualquiera que pase cerca; con «disparo de residuos», ensucia a los vecinos.

El valor por defecto de la descomposición es 0: los cadáveres no se pudren y quedan en el mundo hasta que alguien se los come.

Los lazos

Convertirse en cadáver no corta los lazos: el bot que estaba atado sigue atado, y puede seguir sacándole cuerpo por ahí. Los lazos se cortan cuando el bot sale del mundo, sea un vivo que muere sin cadáver o un cadáver que se quedó sin cuerpo; en ese momento el compañero los pierde y su .numties baja.

En este bot la madre tiene una hija a los 3 ciclos (que nace atada a ella) y después se deja morir; la hija, como ya tiene un lazo, no hace nada:

' La madre tiene una hija a los 3 ciclos y despues se deja morir;
' la hija nace atada a ella y no hace nada
cond
 *.robage 3 =
 *.numties 0 =
start
 50 .repro store
 1 50 store
stop
cond
 *50 1 =
start
 100 .strbody store
stop
end

Con 1000 de energía al empezar, la madre es cadáver en el ciclo 9 y la hija sigue leyendo .numties en 1. Con una descomposición rápida (2000, sin pausa), el cadáver se termina en el ciclo 13 y desde entonces la hija lee 0.

Cuando un bot sale del mundo también se pierde el virus que tenía guardado para disparar (ver Virus). Sus disparos que ya están en vuelo, en cambio, siguen su camino.

Los parámetros

ParámetroPara qué
CadáveresSi los muertos de hambre quedan como cadáveres.
Descomposición por ciclo, Pausa de descomposición (ciclos), Tipo de descomposiciónLa descomposición.
Costo por edad y los otros costos por edadLa muerte por vejez, si la querés.
Registrar los muertos, Sin vegetales en el registroGuardar una ficha de cada bot que muere.

En la vista del mundo los cadáveres se cuentan aparte; en Analizar (ver Analizar) hay un gráfico de cadáveres y otro de bots con y sin ellos.