DarwinBotsManual
Abrir la app EnglishEN

Parámetros: Costos

Cuánta energía le cobra la simulación a un bot por ejecutar su ADN, moverse, disparar, fabricar defensas, tener cuerpo y envejecer.

Este grupo fija el precio de cada cosa que hace un bot. Todos los precios se pagan en energía (.nrg) y son iguales para todos los bots del mundo, vegetales incluidos. Con los valores de fábrica de la app están todos en 0: vivir y actuar es gratis, y un bot solo se queda sin energía si la gasta en algo (regalarla, pasarla al cuerpo, fabricar defensas) o si se la sacan. Tocalos cuando quieras que la evolución premie a los bots ahorrativos, o cuando armes un mundo con las reglas de los torneos.

Esta página dice qué cobra cada parámetro. El mecanismo de conjunto (en qué fase del ciclo se cobra cada cosa, qué pasa si la energía queda negativa) está en Energía, cuerpo y desechos, y el detalle del ADN en Ejecución y costos.

Cómo se cobra

Cada costo se cobra como precio × Multiplicador de costos. El multiplicador vale 1 de fábrica y es la perilla general: en 0 todo es gratis aunque los precios no lo sean, en 2 todo cuesta el doble. Está en el grupo Parámetros: Costos dinámicos porque el motor lo puede mover solo para llevar la población a un objetivo.

Hay tres clases de costos:

ClaseCuándo se pagaParámetros
Por instrucciónCada vez que el ADN ejecuta una, en la fase del ADN.Número a Control de flujo
Por acciónCuando el bot hace algo: empujar, girar, atar, disparar, fabricar.Cloroplasto nuevo, Mover a Disparar, Veneno a Caparazón
MantenimientoTodos los ciclos, aunque el bot no haga nada; también al reproducirse.ADN por ciclo, Copia del ADN, Mantenimiento del cuerpo a Fracción lineal del costo por edad, Costo por edad logarítmico, Costo por edad lineal

Los cobros no miran el saldo: la energía puede quedar negativa entre una fase y otra, y recién en las acciones se decide si el bot murió (ver Energía, cuerpo y desechos). Los cadáveres no pagan mantenimiento.

Un precio negativo, o un multiplicador negativo, convierte el costo en un pago: con el multiplicador en −1 y el store a 1, cada store le suma 1 de energía al bot. La app acepta un precio negativo con un aviso de valor poco habitual; el multiplicador negativo lo acepta sin aviso.

Los atajos: F1 y sin costos

No hace falta cargar los 26 valores a mano. En Experimentar, el modo Básico tiene el control Costos con tres opciones: F1 pone los precios de la liga, Sin costos devuelve todo a los valores de fábrica y Personalizados es lo que se ve cuando los valores no coinciden con ninguno de los otros dos (por ejemplo, porque cambiaste alguno en el modo Avanzado). En el modo avanzado, el botón Ajustes F1 y la base Liga F1 del escenario ponen los mismos precios, junto con el resto de las reglas de la liga (ver Experimentar y Experimentar: modo avanzado).

Los precios F1 son estos; todo lo demás del grupo queda en 0 (y también el ajuste dinámico):

Con esos precios, lo caro es disparar y atarse; ejecutar el ADN y tener cuerpo casi no cuesta. El F1 copia al original, que ponía en 0 los costos del 1 en adelante: el de Número no lo toca, así que si lo cambiaste a mano, queda como estaba.

Número

Por cada número del ADN que se ejecuta.

Por defecto
0
Rango habitual
0 a 1000
Variable
NUMCOST
Clave
cost:0
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Se cobra por cada número que el ADN apila al ejecutarse, como 10 o .up cuando la sysvar va sin asterisco (es una dirección, o sea un número). Dentro de un gen apagado los números no se ejecutan y no cuestan. Es el costo que más crece con el largo del ADN que corre de verdad: un gen típico tiene más números que cualquier otra cosa. Ver Números y lecturas.

Lectura *.número

Por cada lectura de memoria (*.x).

Por defecto
0
Rango habitual
0 a 1000
Variable
DOTNUMCOST
Clave
cost:1
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Se cobra por cada lectura de memoria con asterisco, como *.eye5 o *50. Un bot que consulta muchos sentidos por ciclo paga uno por cada lectura, aunque lea dos veces la misma. Ver *<numero> | *.<sysvar>.

Comando básico

add, sub, mult…

Por defecto
0
Rango habitual
0 a 1000
Variable
BCCMDCOST
Clave
cost:2
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Lo paga cada operador básico ejecutado: las cuentas y el manejo de la pila, como add, mult, rnd, dup o swap. La lista completa está en Básicos.

Comando avanzado

angle, dist, sqr…

Por defecto
0
Rango habitual
0 a 1000
Variable
ADCMDCOST
Clave
cost:3
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Lo paga cada operador avanzado: trigonometría y geometría, como angle, dist, sqr o pow. debugint y debugbool son de esa familia pero no cuestan nunca. Ver Avanzados.

Comando de bits

Operaciones de bits.

Por defecto
0
Rango habitual
0 a 1000
Variable
BTCMDCOST
Clave
cost:4
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Lo paga cada operador de bits, como & o <<. Ver Bit a bit.

Condición

Por cada comparación.

Por defecto
0
Rango habitual
0 a 1000
Variable
CONDCOST
Clave
cost:5
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Se cobra por cada comparación, como >, = o %=. Ojo: las condiciones de un gen se evalúan siempre, porque hay que saber si el gen corre, así que este costo lo pagan también los genes que terminan apagados. Con las reglas F1 vale 0,004. Ver Comparaciones.

Lógica

and, or, not…

Por defecto
0
Rango habitual
0 a 1000
Variable
LOGICCOST
Clave
cost:6
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Lo paga cada operador lógico, los que combinan o manipulan resultados booleanos: and, or, not, dropbool y los demás de Lógicos.

Store

Por cada escritura en memoria.

Por defecto
0
Rango habitual
0 a 1000
Variable
COSTSTORE
Clave
cost:7
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Es el precio de store, la instrucción con la que el bot actúa: casi todo lo que hace pasa por un store. Las variantes pagan una fracción: inc y dec la décima parte; addstore y sus parientes, la quinta; rndstore, sgnstore y sqrstore, la séptima; absstore y negstore, la octava. Un store que no llega a escribir (por una condición en línea falsa, o a la dirección 0) no cuesta. Con las reglas F1 vale 0,04. Ver Ejecución y costos.

Cloroplasto nuevo

Por cada cloroplasto que fabrica un bot.

Por defecto
0
Rango habitual
0 a 1000
Variable
CHLRCOST
Clave
cost:8
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Se cobra por cada cloroplasto que el bot compra con .mkchlr. La compra se cancela entera si lo dejaría con menos de 100 de energía, y esa regla vale aunque el precio sea 0: un bot con 90 de energía no puede comprar ni uno. Sacarlos con .rmchlr es gratis. Con las reglas F1 vale 0,2: 1000 cloroplastos salen 200 de energía. Ver Cloroplastos y vegetales.

Control de flujo

cond, start, stop…

Por defecto
0
Rango habitual
0 a 1000
Variable
FLOWCOST
Clave
cost:9
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Lo pagan los marcadores de gen: cond, start, else y stop. Se ejecutan aunque el gen esté apagado, así que un bot con muchos genes paga este costo por cada uno en cada ciclo. Ver Flujo.

Mover

Por unidad de empuje.

Por defecto
0
Rango habitual
0 a 1000
Variable
MOVECOST
Clave
cost:20
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Es el precio de empujar con .up, .dn, .sx y .dx, por unidad de empuje. Se cobra sobre el empuje ya recortado por el tope de velocidad, así que pedir más de lo que el mundo deja no cuesta más, y nunca se cobra más energía de la que el bot tiene. En el modo estanque también se paga por mantenerse a flote. Con las reglas F1 vale 0,05. Ver Física.

Girar

Por cada 200 unidades de giro (un radián).

Por defecto
0
Rango habitual
0 a 1000
Variable
TURNCOST
Clave
cost:21
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Es el precio de girar, por cada 200 unidades de giro (unos 57 grados): un cuarto de vuelta cuesta 1,57 veces el precio y una vuelta entera, 6,28. Se paga igual girando con .aimsx, .aimdx o .setaim. Las reglas F1 no cobran el giro. Ver Física.

Atar

Por cada intento de atar, dividido por los lazos después del intento más 1. El lazo de nacimiento se lo cobra al padre.

Por defecto
0
Rango habitual
0 a 1000
Variable
TIECOST
Clave
cost:22
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Se cobra cada vez que el bot intenta atar a otro con .tie y hay alguien a tiro, salga o no el lazo. También se cobra en cada parto, por el lazo de nacimiento: lo paga el padre (en la reproducción sexual, la madre). El precio se divide por la cantidad de lazos que el bot tiene después del intento más uno, así que el primer lazo cuesta la mitad del precio, el segundo un tercio, y así; un intento que falla, sin lazos, cuesta el precio entero. Con las reglas F1 vale 2: un hijo le cuesta 1 de energía a un padre que no tenía otros lazos. Ver Lazos y multicelulares.

Disparar

Por cada disparo.

Por defecto
0
Rango habitual
0 a 1000
Variable
SHOTCOST
Clave
cost:23
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Es el precio base de un disparo con .shoot. Cuánto paga el tirador depende del tipo: los disparos para comer, el veneno y los desechos lo dividen por la cantidad de lazos más uno, los de memoria lo pagan entero y un disparo de comer con .shootval grande lo multiplica (la tabla está en Disparos). También lo pagan, sin que el bot lo pida, el disparo con el que expulsa los desechos cuando se le juntan demasiados, y el disparo de un virus (Virus). Con las reglas F1 vale 2.

ADN por ciclo

Por ciclo y por largo del ADN.

Por defecto
0
Rango habitual
0 a 1000
Variable
DNACYCCOST
Clave
cost:24
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Un costo de mantenimiento: en cada ciclo, el bot paga este precio por cada instrucción de su genoma (sin contar el end final), se ejecute o no. Es lo que castiga el ADN basura que se acumula con las mutaciones. Un ADN de 100 instrucciones más el end, con el precio en 0,01, cuesta 1 por ciclo. Ver Ejecución y costos.

Copia del ADN

Al reproducirse, por largo del ADN.

Por defecto
0
Rango habitual
0 a 1000
Variable
DNACOPYCOST
Clave
cost:25
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Se cobra al reproducirse, por cada instrucción del genoma (esta vez con el end): es el precio de copiar el ADN para el hijo. Si no le alcanza, el padre queda en 0 de energía, pero el hijo nace igual. También lo paga quien fabrica un virus, por cada palabra del gen que copia. Ver Reproducción.

Veneno

Por unidad de veneno fabricada.

Por defecto
0
Rango habitual
0 a 1000
Variable
VENOMCOST
Clave
cost:26
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Es el costo de transacción por cada unidad de veneno que el bot fabrica con .mkvenom, encima de la conversión fija (1 de energía por unidad). Lo que se paga por este costo no desaparece: se vuelve desechos (.waste). Con las reglas F1 vale 0,01. Ver Defensas.

Toxina

Por unidad de toxina fabricada.

Por defecto
0
Rango habitual
0 a 1000
Variable
POISONCOST
Clave
cost:27
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Igual que el del veneno, para la toxina que se fabrica con .mkpoison (la conversión fija es 1 de energía cada 4 unidades). El costo también se vuelve desechos. Con las reglas F1 vale 0,01. Ver Defensas.

Baba

Por unidad de baba fabricada.

Por defecto
0
Rango habitual
0 a 1000
Variable
SLIMECOST
Clave
cost:28
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

El costo por unidad de baba que se fabrica con .mkslime, encima de la conversión fija (1 de energía cada 10). Se vuelve desechos. Un bot atado a otros en un multicelular paga menos: el costo se divide por la cantidad de lazos más uno, aunque los desechos se suman enteros. Con las reglas F1 vale 0,1.

Caparazón

Por unidad de caparazón fabricada.

Por defecto
0
Rango habitual
0 a 1000
Variable
SHELLCOST
Clave
cost:29
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

El costo por unidad de caparazón que se fabrica con .mkshell, con las mismas reglas que la baba: conversión fija de 1 de energía cada 10, el costo se vuelve desechos y en un multicelular se divide por los lazos más uno. Con las reglas F1 vale 0,1. Ver Defensas.

Mantenimiento del cuerpo

Por ciclo y por unidad de cuerpo.

Por defecto
0
Rango habitual
0 a 1000
Variable
BODYUPKEEP
Clave
cost:30
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Mantenimiento del cuerpo: en cada ciclo, el bot paga este precio por cada punto de .body. Hace que guardar energía en el cuerpo tenga un costo. Con 0,001, un bot con 1000 de cuerpo pierde 1 por ciclo; con el valor F1 (0,00001), una centésima. Ver Energía, cuerpo y desechos.

Costo por edad

Por ciclo, a partir de la edad de inicio.

Por defecto
0
Rango habitual
0 a 1000
Variable
AGECOST
Clave
cost:31
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

La cuota de vejez: lo que el bot paga por ciclo una vez que su edad pasó de la edad de inicio. Así como está es un monto fijo; con Costo por edad logarítmico o Costo por edad lineal pasa a crecer con los años. Sirve para que los bots viejos dejen lugar a sus hijos sin tener que programarles la muerte. Con las reglas F1 vale 0,01 y la edad de inicio queda en 0. Ver Muerte y cadáveres.

Edad de inicio del costo

Ciclos de vida antes de cobrar por edad.

Por defecto
0
Rango habitual
0 a 2147483647
Variable
AGECOSTSTART
Clave
cost:32
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

La edad, en ciclos, a partir de la cual se cobra Costo por edad: el cobro empieza cuando la edad la supera. Con 0 (el valor de fábrica) se cobra desde el segundo ciclo de vida, porque en el primero la edad todavía es 0. Las formas logarítmica y lineal cuentan los ciclos desde esta edad, no desde el nacimiento.

Fracción lineal del costo por edad

Pendiente del costo por edad lineal.

Por defecto
0
Rango habitual
0 a 1000
Variable
AGECOSTLINEARFRACTION
Clave
cost:33
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

La pendiente de la cuota de vejez lineal: cuánto se suma a Costo por edad por cada ciclo vivido después de la edad de inicio. Con el costo en 1 y la pendiente en 0,5, el bot paga 1,5 en su primer ciclo de vejez, 2 en el segundo, 2,5 en el tercero, y así. Solo cuenta si Costo por edad lineal está activado.

Costo por edad logarítmico

Crece con el logaritmo de la edad.

Por defecto
no
Rango habitual
sí / no
Variable
AGECOSTMAKELOG
Clave
cost:51
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Activado, la cuota de vejez es Costo por edad por el logaritmo natural de los ciclos vividos desde la edad de inicio: crece rápido al principio y después cada vez más despacio. Con el costo en 10, el bot paga 6,9 cuando lleva 2 ciclos de vejez, unos 46 a los 100 y unos 69 a los 1000. Si activás también Costo por edad lineal, gana este.

Costo por edad lineal

Crece en línea recta con la edad.

Por defecto
no
Rango habitual
sí / no
Variable
AGECOSTMAKELINEAR
Clave
cost:60
En vivo
se puede cambiar con la simulación corriendo
Modo
solo avanzado

Activado, la cuota de vejez crece en línea recta: Costo por edad más Fracción lineal del costo por edad por cada ciclo vivido desde la edad de inicio. A la larga es más dura que la logarítmica, porque no se aplana nunca. No tiene efecto si Costo por edad logarítmico también está activado.