Cuerpo, energía y estado
Las sysvars que describen al propio bot: energía, cuerpo, masa, edad, reloj, muertes y desechos, más las órdenes para pasar energía al cuerpo y al revés.
| Dirección | Sysvar | Tipo | Resumen |
|---|---|---|---|
| 9 | .robage | Sentido | La edad del bot en ciclos: 0 en su primer ciclo de vida, sube de a 1 y se detiene en 32000. |
| 10 | .mass | Sentido | La masa del bot: sale del cuerpo, del caparazón y sobre todo de los cloroplastos, y decide cuánto lo mueve cada empujón. |
| 12 | .timer | Entrada y salida | Un reloj que suma 1 por ciclo, que podés escribir y que el hijo hereda del padre: sirve para sincronizar a un linaje. |
| 220 | .kills | Sentido | Cuántos bots mató este bot, con disparos o por un lazo; el motor la actualiza solo cuando mata. |
| 310 | .nrg | Sentido | La energía del bot, entre 0 y 32000: lo que gasta en cada acción y lo que lo mantiene vivo. |
| 311 | .body | Sentido | El cuerpo del bot, entre 0 y 32000: reserva que vale 10 de energía por punto y que define su tamaño y su peso. |
| 312 | .fdbody | Comando | Convierte cuerpo en energía: hasta 100 de energía por ciclo, a 10 de energía por punto de cuerpo. |
| 313 | .strbody | Comando | Guarda energía como cuerpo: hasta 100 de energía por ciclo, que se convierten en 10 de cuerpo. |
| 314 | .setboy | Comando | Sube o baja la flotabilidad del bot, que en el modo estanque con gravedad decide a qué altura se queda. |
| 315 | .rdboy | Sentido | La flotabilidad del bot, de 0 a 32000, tal como quedó la última vez que la cambió con .setboy. |
| 828 | .waste | Sentido | Los desechos que acumuló el bot: en exceso le escriben números al azar en la memoria; se tiran con un disparo -4. |
| 829 | .pwaste | Sentido | Los desechos permanentes: un resto que queda cada vez que el bot tira desechos y que ya no se puede eliminar. |
Este grupo es el tablero del bot: lo que el motor le cuenta sobre sí mismo al final de cada ciclo, y un par de órdenes para administrar sus reservas. Lo más leído de todo DarwinBots está acá: casi cualquier bot tiene alguna condición sobre .nrg o .body.
Un bot guarda su riqueza en dos monedas. La energía (.nrg) es la que se gasta: cada instrucción, cada movimiento, cada disparo la consume, y si se acaba el bot muere. El cuerpo (.body) es una reserva más lenta que además lo hace más grande y más pesado (.mass). Entre las dos hay un tipo de cambio fijo de 10 a 1: .strbody guarda 100 de energía como 10 de cuerpo, y .fdbody hace el camino inverso. Con eso se arma una alcancía, como en este bot:
' Mantiene la energía entre 2000 y 5000 usando el cuerpo de reserva
cond
*.nrg 5000 >
start
100 .strbody store
stop
cond
*.nrg 2000 <
*.body 100 >
start
100 .fdbody store
stopEl resto del grupo son relojes y contadores: .robage (la edad, que arranca en 0), .timer (un reloj que se hereda de padre a hijo y que podés escribir) y .kills (a cuántos mataste). .waste y .pwaste miden los desechos, que en exceso le corrompen la memoria al bot. .setboy y .rdboy manejan la flotabilidad en el modo estanque.
Los sentidos de este grupo llegan con un ciclo de atraso, y un bot recién cargado los lee en 0 en su primer ciclo (salvo .timer, que arranca al azar): *.nrg 500 < es verdadero ahí aunque tenga energía de sobra. Cómo se cobra y se gana la energía está en Energía, cuerpo y desechos; los cambios de un ciclo al otro, en Ganancias y pérdidas.