DarwinBotsManual
Abrir la app EnglishEN

Entradas y salidas

Los veinte canales con los que un bot le pasa números a otro: .out y .in por la vista, .tout y .tin por un lazo.

DirecciónSysvarTipoResumen
410.tout1ComandoPrimer canal de salida por lazo: el número que escribís acá lo lee en su .tin1 el bot atado a vos.
411.tout2ComandoCanal de salida por lazo número 2: lo que escribís acá lo lee en su .tin2 el bot atado a vos.
412.tout3ComandoCanal de salida por lazo número 3: lo que escribís acá lo lee en su .tin3 el bot atado a vos.
413.tout4ComandoCanal de salida por lazo número 4: lo que escribís acá lo lee en su .tin4 el bot atado a vos.
414.tout5ComandoCanal de salida por lazo número 5: lo que escribís acá lo lee en su .tin5 el bot atado a vos.
415.tout6ComandoCanal de salida por lazo número 6: lo que escribís acá lo lee en su .tin6 el bot atado a vos.
416.tout7ComandoCanal de salida por lazo número 7: lo que escribís acá lo lee en su .tin7 el bot atado a vos.
417.tout8ComandoCanal de salida por lazo número 8: lo que escribís acá lo lee en su .tin8 el bot atado a vos.
418.tout9ComandoCanal de salida por lazo número 9: lo que escribís acá lo lee en su .tin9 el bot atado a vos.
419.tout10ComandoCanal de salida por lazo número 10: lo que escribís acá lo lee en su .tin10 el bot atado a vos.
420.tin1SentidoPrimer canal de entrada por lazo: el valor que publica en su .tout1 el bot del otro extremo del lazo que estás leyendo.
421.tin2SentidoCanal de entrada por lazo número 2: el valor que publica en su .tout2 el bot del otro extremo del lazo que estás leyendo.
422.tin3SentidoCanal de entrada por lazo número 3: el valor que publica en su .tout3 el bot del otro extremo del lazo que estás leyendo.
423.tin4SentidoCanal de entrada por lazo número 4: el valor que publica en su .tout4 el bot del otro extremo del lazo que estás leyendo.
424.tin5SentidoCanal de entrada por lazo número 5: el valor que publica en su .tout5 el bot del otro extremo del lazo que estás leyendo.
425.tin6SentidoCanal de entrada por lazo número 6: el valor que publica en su .tout6 el bot del otro extremo del lazo que estás leyendo.
426.tin7SentidoCanal de entrada por lazo número 7: el valor que publica en su .tout7 el bot del otro extremo del lazo que estás leyendo.
427.tin8SentidoCanal de entrada por lazo número 8: el valor que publica en su .tout8 el bot del otro extremo del lazo que estás leyendo.
428.tin9SentidoCanal de entrada por lazo número 9: el valor que publica en su .tout9 el bot del otro extremo del lazo que estás leyendo.
429.tin10SentidoCanal de entrada por lazo número 10: el valor que publica en su .tout10 el bot del otro extremo del lazo que estás leyendo.
800.out1ComandoPrimer canal de salida por la vista: el número que escribís acá lo lee en su .in1 cualquier bot que te esté mirando.
801.out2ComandoCanal de salida por la vista número 2: lo que escribís acá lo lee en su .in2 el bot que te esté mirando.
802.out3ComandoCanal de salida por la vista número 3: lo que escribís acá lo lee en su .in3 el bot que te esté mirando.
803.out4ComandoCanal de salida por la vista número 4: lo que escribís acá lo lee en su .in4 el bot que te esté mirando.
804.out5ComandoCanal de salida por la vista número 5: lo que escribís acá lo lee en su .in5 el bot que te esté mirando.
805.out6ComandoCanal de salida por la vista número 6: lo que escribís acá lo lee en su .in6 el bot que te esté mirando.
806.out7ComandoCanal de salida por la vista número 7: lo que escribís acá lo lee en su .in7 el bot que te esté mirando.
807.out8ComandoCanal de salida por la vista número 8: lo que escribís acá lo lee en su .in8 el bot que te esté mirando.
808.out9ComandoCanal de salida por la vista número 9: lo que escribís acá lo lee en su .in9 el bot que te esté mirando.
809.out10ComandoCanal de salida por la vista número 10: lo que escribís acá lo lee en su .in10 el bot que te esté mirando.
810.in1SentidoPrimer canal de entrada por la vista: el valor que publica en su .out1 el bot que tenés en el ojo con foco.
811.in2SentidoCanal de entrada por la vista número 2: el valor que publica en su .out2 el bot que tenés en el ojo con foco.
812.in3SentidoCanal de entrada por la vista número 3: el valor que publica en su .out3 el bot que tenés en el ojo con foco.
813.in4SentidoCanal de entrada por la vista número 4: el valor que publica en su .out4 el bot que tenés en el ojo con foco.
814.in5SentidoCanal de entrada por la vista número 5: el valor que publica en su .out5 el bot que tenés en el ojo con foco.
815.in6SentidoCanal de entrada por la vista número 6: el valor que publica en su .out6 el bot que tenés en el ojo con foco.
816.in7SentidoCanal de entrada por la vista número 7: el valor que publica en su .out7 el bot que tenés en el ojo con foco.
817.in8SentidoCanal de entrada por la vista número 8: el valor que publica en su .out8 el bot que tenés en el ojo con foco.
818.in9SentidoCanal de entrada por la vista número 9: el valor que publica en su .out9 el bot que tenés en el ojo con foco.
819.in10SentidoCanal de entrada por la vista número 10: el valor que publica en su .out10 el bot que tenés en el ojo con foco.

Un bot puede espiar una dirección de la memoria de otro (con .memloc o, por un lazo, con .tmemloc), pero la forma pensada para comunicarse es publicar números para que otros los lean. Para eso hay dos juegos de diez canales, cada uno con su salida y su entrada:

CanalEscribís enEl otro lee enLlega a
Por la vista.out1 … .out10.in1 … .in10quien te tenga en el ojo con foco, o te choque
Por un lazo.tout1 … .tout10.tin1 … .tin10el bot atado a vos, si está escuchando ese lazo

Las salidas son configuración: el motor no las borra nunca, así que con escribirlas una vez alcanza y el valor queda publicado hasta que lo cambies. Las entradas son sentidos: las llena el motor después de que corre el ADN, así que siempre leés lo que el otro tenía publicado en el ciclo anterior. Un bot recién nacido arranca con todas en 0; no hereda las salidas del padre.

El uso más común, por lejos, es reconocer a los de tu especie: todos escriben el mismo código en .out1 y, antes de disparar, comparan *.in1 con *.out1. Así lo hace, por ejemplo, Artemis Minimalis del Bestiario. Elegí un código distinto de 0: 0 es lo que publica cualquier bot que no usa el canal, y también lo que vale .in1 cuando no estás viendo a nadie.

' me identifico con un código
start
555 .out1 store
stop

' disparo solo si lo que tengo enfrente no es de los míos
cond
*.eye5 0 >
*.in1 *.out1 !=
start
-1 .shoot store
stop

Los canales por lazo sirven para coordinar a un organismo de varios bots. Por la vista, .in1 se borra después de cada ejecución del ADN; por el lazo, .tin1 se vuelve a cargar en cada ciclo desde el lazo que estás leyendo y solo pasa a 0 cuando ese lazo deja de existir. El padre y el hijo quedan atados al nacer y pueden hablarse por ahí casi enseguida: el padre recibe lo del hijo desde el primer ciclo, y el hijo recibe lo del padre cuando su .robage llega a 3 (ver las sysvars de lazos y Lazos y multicelulares). Si lo que querés es escribir directamente en la memoria del otro, eso lo hacen .tieloc y .tieval.