Bitburner: Guía temprana del juego (sin spoilers)

¿Terminaste el tutorial y te preguntas cómo progresar? ¿Quieres mejorar tu script de piratería o tal vez quieres comenzar a automatizar otras partes del juego?

Esta es una guía sin spoilers que te indica la dirección correcta.

 

Scripts de piratería: cómo mejorar

1: Sigue el tutorial

Además del tutorial 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 la rapidez con la que se ejecutan las funciones de 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, separarlos de todo lo demás le permitirá ejecutar más subprocesos y, por lo tanto, obtener una mayor recompensa.

En este punto vale la pena tener la documentación 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á , solamente debilitar () 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, utilizando tantos subprocesos como permita el RAM libre. Luego, encuentre una manera de esperar hasta que termine. Repita este proceso para grow() y hack().

Debido a que ahora solo usamos una pequeña fracción de nuestra RAM en control con 1 subproceso, podemos gastar el resto de nuestra RAM en ejecutar las funciones que realmente se preocupan por los subprocesos, con tantos subprocesos como sea posible. Esto puede más que duplicar sus ingresos.

Control centralizado

Si implementa este script de piratería en cada servidor en el que tiene root, 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 solo estamos atacando el objetivo más rentable con todos estos servidores nuestros, ¿por qué no apegarnos a un solo script de control en un servidor y dejar que controle a los demás?

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 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. Al principio del juego, cuando la mayor parte de tu RAM proviene de servidores aleatorios que has rooteado, esto puede representar un gran aumento.

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 el 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 tardan en 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 grow() lo traiga de vuelta al máximo. 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 por lotes un ciclo completo y lanzarlos simultáneamente, de modo que hack() crezca() y debilite() se activen en poco tiempo. 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 secuencias de comandos 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.

Encontrar y descifrar servidores: obtenga más ram para atacar o un objetivo más jugoso

Si siguió el tutorial, tiene un script que verificará algunos servidores codificados y los descifrará. En lugar de depender de listas codificadas, cree un script que se ejecute escanear()[github.com] y hace un amplitud-primera-búsqueda[en.wikipedia.org] para generar una lista de todos los servidores del juego. Luego puede realizar un bucle continuo (digamos una vez cada diez segundos) con dormir ()[github.com], y recorra la lista, ejecutando cualquier abridor de puertos disponible y NUKE.exe si puede; hay funciones para verificar si tienes suficientes puertos[github.com] y habilidad de piratería[github.com].

Una vez que se descifra un servidor, puede decidir qué hacer con él:

  • Un primer paso fácil es ns.tprint()[github.com] el nombre del servidor para que esté al tanto.
  • Otro es copia[github.com] y corrida[github.com] pirateando scripts para que pueda comenzar a ganar dinero de inmediato.
  • Una tercera es hacer una clasificación de todos los posibles objetivos de piratería, ordenarlos por alguna métrica e imprimir el resultado o redirigir todos sus servidores para piratear el nuevo objetivo si es mejor que el anterior. Una heurística simple es dinero máximo[github.com] dividido por seguridad mínima[github.com]. Una más precisa es el dinero máximo dividido por el tiempo que llevaría piratear, volver a crecer y debilitarse, funciones para las cuales se pueden encontrar en el documentación[github.com].

 

Otras mecanicas

Próximamente: Guías de hacknet, mercado de valores y más.

Más guías:

Deja un comentario

ArabicEnglishFrenchGermanItalianJapaneseKoreanPortugueseSpanish