Skip to main content

Si es nuevo en Bitburner y puede encontrar que el juego es un poco complicado, esta es una guía de progresión temprana del juego para ayudarlo a superar el juego inicial.

1: Sigue el tutorial

Además del tutorial dentro del juego, hay una buena guía sobre cómo iniciar un script de piratería decente en el documentación en línea[bitburner.readthedocs.io].

En este punto, tiene un script que debilitará, crecerá y pirateará continuamente un servidor determinado. Puede pensar que es lento (y tendría razón) y eso se debe a que hay varias mejoras que puede hacer.

El primer paso es empezar a usar netscript2[bitburner.readthedocs.io]. Netscript 1, o los archivos .script que se usan en el tutorial, son lentos y tienen pocas funciones. Netscript2 está muy cerca del javascript moderno, y su velocidad solo está limitada por su computadora. Tenga en cuenta que la velocidad aquí se refiere al tiempo de ejecución, no a qué tan rápido se ejecutan las funciones debilitar (), crecer () y piratear (), eso está determinado por la habilidad de piratería.

Al escribir secuencias de comandos, puede notar que sus requisitos de RAM aumentan a medida que usa más funciones ns. Dado que solo debilitar () crecer () y piratear () se benefician del uso de subprocesos adicionales, tener cada uno en un script separado reducirá el costo de RAM de usar subprocesos adicionales y, por lo tanto, aumentará mucho nuestras ganancias de piratería.

En este punto vale la pena tener la documentación de la API[bitburner.readthedocs.io] práctico.

Separando nuestros scripts de piratería para optimizar el uso de RAM

Para permitirnos ejecutar nuestras funciones importantes con tantos subprocesos como sea posible, descubra cómo hacer el script más simple posible que se ejecutará debilitado () en un objetivo dado por argumento y nada más. Luego tome su secuencia de comandos de piratería del tutorial y, en lugar de ejecutar debilitar () directamente, encuentre una manera de ejecutar la secuencia de comandos debilitar y pasarle el objetivo como argumento, usando tantos subprocesos como permita el RAM libre. Luego, encuentre una manera de esperar hasta que termine. Repita este proceso para crecer () y hackear ().

Usando esta técnica, dependiendo de la RAM de su servidor, es probable que duplique sus ingresos y gastos de piratería.

Control centralizado

Si implementa este script de piratería en cada servidor en el que se ha rooteado, debería estar progresando bastante bien. Pero si analizamos el uso de RAM en nuestros servidores rooteados, vemos que las secuencias de comandos debilitar.ns, crecer.ns y hack.ns reales no utilizan toda la memoria RAM disponible porque la secuencia de comandos de control ocupa una gran parte. Pero si echamos un vistazo a lo que está haciendo el script de control, se vuelve obvio que podemos centralizarlo.

El objetivo aquí es escribir un script de control que ejecutamos en la computadora de nuestra casa, que puede generar debilitar.ns, crecer.ns y hackear.ns en otros servidores – dejándonos con toda su memoria libre para realizar trabajos importantes. Si la secuencia de comandos de control ocupa aproximadamente el doble de RAM que un solo subproceso de debilitar.ns, crecer.ns o hack.ns, obtenemos 2 subprocesos adicionales en cada uno de nuestros servidores rooteados de forma gratuita mediante el uso de esta técnica.

Ejecución simultánea

En general, para las optimizaciones, es importante medir qué partes de nuestros algoritmos tienen el mayor impacto en el rendimiento. Supongamos que hemos llegado al punto en que se prepara un servidor (se alcanza la seguridad mínima y el dinero máximo) para que nuestro ciclo se debilite -> crezca -> debilite -> piratee.

Comience imprimiendo para registrar el tiempo dedicado a cada paso. En mi caso, el sumidero de tiempo obvio fue el debilitamiento inmediatamente después del crecimiento, porque el crecimiento aumentó significativamente la seguridad. ¿Qué pasaría si pudiéramos comenzar a debilitarnos mientras el crecimiento está en progreso, haciendo así las tareas en paralelo? En realidad podemos:

El tiempo que toma debilitar (), crecer () y piratear () se calcula según el servidor y el estado del jugador en el comienzo de la operación El efecto ocurre en el final. Así, si empezamos a debilitarnos antes de que acabe el crecimiento, será mucho más rápido. Encuentra una manera de ver cuánto tiempo tomará debilitar () y crecer () (pista: el documentación[github.com] tiene funciones para esto). Luego, en lugar de usar toda la memoria disponible para comenzar a crecer, use la mitad. Luego comienza a debilitar con la otra mitad. Si el debilitamiento se ejecuta más rápido, debe dormir un poco el script antes de ejecutar el debilitamiento.

Tenga en cuenta que la división óptima probablemente esté lejos del 50/50. Puede experimentar con la relación o utilizar las funciones de análisis de la documentación[github.com] para calcular la división óptima para que el debilitamiento tenga la potencia suficiente para contrarrestar el efecto del crecimiento.

Optimización adicional

grow () hace crecer el servidor en un cierto% de su dinero actual. Idealmente, queremos asegurarnos de que un solo crecimiento () lo recuperará por completo. Encuentre una manera de calcular cuántos subprocesos de pirateo y crecimiento necesita para mantener el ciclo corto.

La última y más difícil optimización a considerar es agrupar un ciclo completo y lanzarlos simultáneamente, de modo que piratear () crecer () y debilitar () se produzcan en un breve lapso de tiempo entre uno y otro. Si logra esto, puede aprovechar mucho los servidores más grandes en el juego posterior, porque un solo truco de subproceso completo eliminará todo el dinero, dejándole mucho tiempo para reconstruir su alijo. Si, en cambio, pone en cola varios lotes de scripts que se suceden entre sí y roban un porcentaje menor del dinero, gana mucho más dinero con el tiempo por GB de RAM que de otra manera.

Sin embargo, esta última optimización no es un problema trivial y requiere una planificación, análisis y refactorización extensos para hacerlo bien.

Sigue leyendo: