DarwinBotsManual
Abrir la app EnglishEN

Parásitos y virus

Del lazo que ata y chupa al virus que reescribe el ADN ajeno: tres bots del Bestiario diseccionados, con números medidos, y una receta mínima de contagio.

En Un alimentador por lazo armaste un bot que ata su comida con un lazo y la vacía. Para ese bot era una técnica de caza; los de esta página hacen del parasitismo un estilo de vida: viven pegados a otro bot, o directamente viven dentro de su ADN. La mecánica ya la conocés — los lazos en Lazos y multicelulares, los virus en Virus —, así que acá vamos derecho a los diseños del Bestiario y a lo que pasa cuando los ponés a correr.

Cuándo paga cada estrategia

Un lazo alcanza apenas: solo ata al bot que estás viendo y de cerca, unos 400 de borde a borde. Atar es la parte fácil; retener es la carísima. El lazo nace blando y estira sin frenar a una presa que corre (lo medimos estirado a 490 sin romperse; recién revienta pasado el 1000) y solo a los 19 ciclos, si no re-ataste, se endurece y se vuelve un brazo. Conviene, entonces, contra presas lentas o quietas: vegetales, bots trabados contra una pared. Y como chuparle a un bot con toxina te envenena en vez de alimentarte (Un alimentador por lazo), las víctimas indefensas son las que mejor pagan.

El virus es lo contrario: no apunta. Sale hacia un lado al azar, vuela lejos y contagia al primero que toque, así que paga en mundos poblados y con la presa lejos. Lo paga caro la baba del otro: con unas 20 unidades frena cualquier virus (Virus). Y no distingue especies: tu propia descendencia puede contagiarse.

Parásito de lazoVirus
Qué le sacás al otroEnergía — y con el reparto, también caparazón y babaEl mando de su ADN
Cuánto esperásEl lazo endurece a los 19 ciclos; recién ahí compartísEl gen incuba 2 ciclos por palabra
Falla contraPresas rápidas; la baba desvía el atado~20 de baba; los cadáveres

Leechbot: chupar compartiendo

Leechbot (Atutouato, 2013) es el parásito de lazo en su forma más descarnada. Su gen de caza ata a lo que ve, sin preguntar de qué especie es; el trabajo sucio lo hace el reparto:

' Atar a lo que se ve, hasta tres lazos
cond
*.eye5 40 >
*.numties 3 <
start
1 .tie store
stop

' Multicelular: quedarme con el 99 % de todo
cond
*.multi 1 =
start
99 .sharenrg store
99 .shareslime store
99 .shareshell store
.sharewaste inc
stop

El 99 en .sharenrg no es una transfusión: es «sumá tu energía con la mía y déjame el 99 %», cada ciclo, hasta el tope de su cuerpo. Es una succión mucho más rendidora que el −1 del tutorial, que pierde el 30 % en el camino; acá solo se paga el 1 % de lo movido. Lo mismo le hace a la baba y al caparazón del atado.

Corrido contra un blanco que camina: lazo al primer ciclo, endurecimiento recién al 53 (el gen de caza re-ata cada vez que ve a la presa, y cada re-ata re inicia el reloj) y desde ahí el huésped se vació a mil por ciclo — de 3000 a 2000 y a 1000 en los ciclos 54 y 55, cadáver al 60—, con el parásito cobrando 990. Después tuvo un hijo, y ahí se vio el costo de no mirar de quién es el atado: pibe y padre quedaron atados entre sí, los dos corrieron el gen de chupado, se sacaron 1000 por ciclo cada uno, y el padre terminó seco al ciclo 67. El hijo, que venía con menos, frenó en 548 cuando el otro pasó a ser cadáver.

El bot tiene además un gen que promete chupar 1000 por ciclo con −1, y un gen «hacker» que le escribiría un 0 en la .up del atado para frenarlo. Los dos juntos no hacen ninguna de las dos cosas: el hacker pisa .tieloc con la dirección de .up (la transferencia pide .tieloc negativo) y deja .tienum leyendo una celda que nadie escribió nunca, así que la escritura en la memoria ajena tampoco sale. El huésped, mientras tanto, nunca aflojó: siguió empujando a fondo —su .vel marcó 40 toda la corrida— hasta quedar apretado contra la pared del campo, con el lazo estirado sosteniéndolo.

P1 Parasite bot: la remora

P1 Parasite bot (Fizban, 2004) es un parásito de lazo con modales. Elige huésped: quien dispara (.refshoot por encima de 0, así no pierde tiempo en vegetales), que no esté clavado, que no sepa atarse (.reftie, la firma de los lazos) y que no lleve su código de familia, un 666 que publica en .out1 y comprueba en .in1:

' Solo un huésped que dispara, no clavado, que no sepa atar
' y que no lleve mi marca: atarlo con el puerto 666
cond
*999 0 =
*.numties 0 =
*.eye5 20 >
*.refshoot 0 >
*.reffixed 0 =
*.in1 666 !=
*.reftie 0 =
start
666 .tie store
0 .aimsx store
0 .up store
-1 999 store
stop

Después de atar fija su propio ángulo del lazo en 0 — el huésped siempre le queda adelante y viaja colgado como una remora (en la corrida, el ángulo se quedó rondando los −17, una fracción de vuelta) — y una vez multicelular chupa a sorbitos, según lo lleno que esté el otro:

' Chuparle despacio mientras el huésped está lleno
cond
*999 3 =
*.refnrg 2500 >
start
666 .tienum store
-15 .tieval store
-1 .tieloc store
stop

Medido contra un huésped con 3000: le saca 15 por ciclo (cobra 10,5) y baja a 10 cuando el otro baja de 2500. No lo mata: lo ordea. A los 3050 pide un hijo… que nunca llega, porque el parto necesita lugar libre delante y adelante está siempre el huésped: en 120 ciclos no nació nadie. El parásito que no mata al huésped tampoco logra multiplicarse.

Un detalle de la táctica: al huésped también le escribe cosas — un 666 en su .tienum y un 628 en su .fixang, para que lo mantenga bien adelante. Esa orden no llega a ningún lado: el huésped llama a ese lazo con su número de orden, no con el 666 del parásito, y la instrucción queda sin destinatario. El viaje en pareja lo sostiene igual el 0 .fixang del propio parásito.

El bot original tiene una máquina de estados completa (una celda propia, la 999, dice qué hacer: buscar, atar, acomodarse, chupar, multiplicarse). Por la letra del ADN, en una simulación normal la cría es paciente: un gen la deja quieta mientras tenga algún lazo y menos de 75 ciclos, y a los 75 se declara lista; pero el gen de atado exige estar sin lazos, así que con el lazo de nacimiento ocupándole el cupo recién puede tomar huésped cuando aquel se corta solo, a los 100 ciclos (esto se lee de los genes; no lo medimos con padres de verdad). En nuestra prueba sin padres ató en seguida, y ahí apareció el otro supuesto: la cría pisa con su −2 el −1 que dejó el atado, la máquina queda dormida y pasa la corrida remolcando al huésped sin chuparle nada. La lección vale para todo este capítulo: estos diseños dependen de supuestos («si tengo un lazo es porque nací») que conviene releer cuando el mundo cambia.

El virus que toma posesión

El segundo camino no le roba energía al otro: le roba el futuro. Un virus inserta un gen en el ADN de la víctima y, desde el ciclo siguiente, ese gen corre como si fuera suyo (Virus); el ADN lo admite siempre, salvo que ya esté al límite de las 32000 palabras. La receta epidémica la viste: empaquetar el gen con .thisgene para que el contagiado fabrique y dispare más copias (Virus).

virusparttakeover (Spork/Shadowgod, 2014) es un Animal Minimalis con un gen extra que hace exactamente eso, y de paso le recorta el ADN al huésped:

' El gen de toma de posesion, tal cual está en el bot
cond
start
*.genes *.thisgene *.genes sub sgn 1 add sub .delgene *51 1 sub abs mult store
1 51 store
0 51 *.repro sgn 0 floor mult store
.tie inc
*.thisgene .mkvirus store
.vshoot inc
stop

La primera línea borra, con .delgene, el último gen del huésped que no sea él mismo. La tercera debería desbloquear el borrado para el ciclo siguiente… y no funciona: la pila queda al revés y la orden se escribe en la dirección 0, que no dirige ninguna celda. Resultado medido: un gen recortado, uno solo, la primera vez que el gen corre. En el propio fabricante ese gen recortado es el de reproducirse: el bot se castra a sí mismo en su primer ciclo y no vuelve a tener hijos jamás.

Lo demás sí funciona, y muy bien. .tie inc ata a quien tenga cerca, y *.thisgene .mkvirus store con .vshoot inc lo convierte en una fábrica continua: el gen es largo (~35 palabras), así que cada copia incuba unos 70 ciclos — un virus cada ~70, en una dirección al azar. Lo que medimos en un campo chico, con el gen solo (sin los genes de caza del bot entero):

Cada contagiado paga sus propios disparos. La epidemia se sostiene sola.

El bot entero, tal cual está en el Bestiario, conserva los genes de caza del Animal Minimalis y se come a las víctimas a disparos antes de que el virus las alcance: en dos corridas con tres víctimas cada una, las seis murieron sin contagiarse. Igual, el virus es el arma más pensada: la caza alimenta a la generación actual, el gen insertado le gana la guerra a la especie rival entera, porque cada hijo de la víctima nace contagiado.

Un sedante mínimo

Para cerrar, una receta propia de una sola de las dos: un virus que no mata ni drena, solo inmoviliza. El gen inyectado escribe 1 en .fixpos, y ya está: .fixpos es un interruptor que el motor nunca borra y que la física respeta sin importar dónde cayó el gen en el ADN ajeno ni qué escriba después el huésped. A vos la marca te salva: la celda 91 se escribe antes de que corra el gen del sedante.

' Gen 1: marcarme (antes de que corra el gen 3) y avanzar
cond
start
1 91 store
10 .up store
stop

' Gen 2: fabricar el virus con el gen 3 y dispararlo
cond
*.vtimer 0 =
start
3 .mkvirus store
30 .vshoot store
stop

' Gen 3: el sedante — solo corre en quien no tiene la marca
cond
*91 0 =
start
1 .fixpos store
stop

Corrido contra un blanco que camina, en un campo de 300×200: al ciclo ~15 un virus le pegó; el blanco quedó clavado en seco (velocidad 40 a 0, posición congelada el resto de la corrida) y su ADN pasó de 1 gen a 2. El fabricante siguió moviéndose: la marca funciona. Y siguió disparando: como ninguna infección deja inmunidad, cada copia que le pega al mismo huésped le suma un gen — al ciclo 150 su ADN ya llevaba siete copias del sedante, ocho genes en total. Lo que paga el fabricante es la fuerza de cada disparo (acá 30, que el multiplicador de costos no toca), más la copia y el disparo de costos de siempre (Virus).

¿Y ahora qué hacés con la presa clavada? Lo que quieras, con calma: acercarte a dispararle como en Un bot que dispara, o atarte y chuparla como el alimentador. ¿Hacerlo epidémico, agregándole *.thisgene .mkvirus store al gen del sedante? Se puede, pero ojo: los virus no distinguen especie, así que un pariente contagiado fabrica virus que te pueden pegar a vos. Toda arma contagiosa necesita su marca, como la celda 91 de esta.

Qué probar después