Bitburner: Guida al gioco in anticipo (senza spoiler)

Hai finito il tutorial e ti stai chiedendo come procedere? Vuoi migliorare il tuo script di hacking o forse vuoi iniziare ad automatizzare altre parti del gioco?

Questa è una guida senza spoiler che ti indica la giusta direzione.

 

Script di hacking: come migliorare

1: Segui il tutorial

Oltre al tutorial ingame, c'è una buona guida su come avviare uno script di hacking decente nel documentazione online[bitburner.readthedocs.io].

A questo punto hai uno script che indebolirà, crescerà e hackererà continuamente un determinato server. Potresti pensare che sia lento (e avresti ragione) e questo perché ci sono diversi miglioramenti che puoi apportare.

Il primo passo è iniziare a usare netscript2[bitburner.readthedocs.io]. Netscript 1, o file .script utilizzati nel tutorial, sono lenti e con poche funzionalità. Netscript2 è molto simile al moderno javascript e la loro velocità è limitata solo dal tuo computer. Nota che la velocità qui si riferisce al tempo di esecuzione, non alla velocità con cui vengono eseguite le tue funzioni indeboli() grow() e hack(), che è determinata dall'abilità di hacking.

Durante la scrittura di script potresti notare che i loro requisiti di RAM aumentano man mano che usi più funzioni ns. Poiché solo indebolire() grow() e hack() traggono vantaggio dall'uso di thread aggiuntivi, separarli da tutto il resto ti consentirà di eseguire più thread e quindi ottenere un guadagno maggiore.

A questo punto vale la pena averlo la documentazione dell'API[bitburner.readthedocs.io] a portata di mano.

Separare i nostri script di hacking per ottimizzare l'utilizzo della ram

Per consentirci di eseguire le nostre funzioni importanti con il maggior numero di thread possibile, scopri come creare lo script più semplice possibile che verrà eseguito esclusivamente indebolire() su un obiettivo dato dall'argomento e nient'altro. Quindi prendi il tuo script di hacking dal tutorial e, invece di eseguire direttamente indebolire(), trova un modo per eseguire lo script indebolimento e passargli il target come argomento, usando tutti i thread consentiti dalla ram libera. Quindi, trova un modo per aspettare che finisca. Ripeti questo processo per grow() e hack().

Poiché ora utilizziamo solo una piccola parte della nostra RAM per il controllo con 1 thread, possiamo spendere l'intero resto della nostra RAM per eseguire le funzioni che si occupano effettivamente dei thread, con il maggior numero possibile di thread. Questo può più che raddoppiare il tuo reddito.

Controllo centralizzato

Se distribuisci questo script di hacking su ogni server su cui hai root, dovresti procedere abbastanza bene. Ma se analizziamo l'utilizzo della ram sui nostri server rooted, vediamo che gli script indeboli.ns, grow.ns e hack.ns effettivi non utilizzano tutta la ram disponibile perché lo script di controllo occupa un bel pezzo. Ma se stiamo solo attaccando l'obiettivo più redditizio con tutti questi nostri server, perché non attenerci a un unico script di controllo su un server e lasciare che controlli gli altri?

L'obiettivo qui è scrivere uno script di controllo che eseguiamo sul nostro computer di casa, che può generare indebolimento.ns grow.ns e hack.ns su altri server – lasciandoci con tutta la loro memoria libera per svolgere lavori importanti. Se lo script di controllo richiede circa il doppio della ram di un singolo thread di indebolimento.ns, grow.ns o hack.ns, otteniamo gratuitamente 2 thread aggiuntivi su ciascuno dei nostri server rooted utilizzando questa tecnica. All'inizio del gioco, quando la maggior parte della tua ram proviene da server casuali su cui hai effettuato il root, questo può contare per un notevole aumento.

Esecuzione simultanea

In generale, per le ottimizzazioni, è importante misurare quali parti dei nostri algoritmi hanno l'impatto più lungo sulle prestazioni. Supponiamo di essere arrivati ​​al punto in cui un server è preparato (sicurezza minima e denaro massimo raggiunto) in modo che il nostro ciclo sia approssimativamente indebolito -> crescita -> indebolimento -> hack.

Inizia stampando per registrare il tempo trascorso su ogni passaggio. Nel mio caso, l'evidente perdita di tempo è stata l'indebolimento subito dopo la crescita, perché la crescita ha aumentato significativamente la sicurezza. E se potessimo iniziare a indebolirci mentre è in corso la crescita, facendo così i compiti in parallelo? Possiamo infatti:

Il tempo impiegato da indeboli(), grow() e hack() viene calcolato dal server e dallo stato del giocatore al inizia a dell'operazione. L'effetto avviene al fine. Quindi, se iniziamo il nostro indebolimento prima che la crescita finisca, sarà molto più veloce. Trova un modo per vedere quanto tempo impiegheranno indebolire() e grow() (suggerimento: the documentazione[github.it] ha funzioni per questo). Quindi, invece di utilizzare tutta la memoria disponibile per iniziare a crescere, usa metà. Quindi inizia a indebolirti con l'altra metà. Se indebolire viene eseguito più velocemente, è necessario sospendere un po' lo script prima di eseguire indebolimento.

Si noti che la divisione ottimale è probabilmente lontana da 50/50. Puoi sperimentare il rapporto o utilizzare le funzioni di analisi da documentazione[github.it] per calcolare la divisione ottimale in modo che l'indebolimento abbia potenza appena sufficiente per contrastare l'effetto della crescita.

Ulteriore ottimizzazione

grow() fa crescere il server di una certa % del suo denaro corrente. Idealmente, vogliamo assicurarci che un singolo grow() lo riporti al massimo. Trova un modo per calcolare quanti thread di hack and grow sono necessari per mantenere il ciclo breve.

L'ultima e più difficile ottimizzazione da considerare è quella di eseguire il batch di un intero ciclo e lanciarli contemporaneamente, in modo che hack() grow() e indeboli() vengano tutti colpiti entro un breve tempo l'uno dall'altro. Se lo gestisci, puoi trarre grande vantaggio dai server più grandi nel gioco successivo, perché un singolo hack a thread completo rimuoverà tutti i soldi, lasciandoti molto tempo per ricostruire la sua scorta. Se invece accodi diversi batch di script che si succedono l'uno dopo l'altro e rubano una percentuale inferiore del denaro, guadagni molto più denaro nel tempo per GB di ram che altrimenti.

Quest'ultima ottimizzazione, tuttavia, è un problema non banale e richiede un'ampia pianificazione, analisi e refactoring per essere corretta.

Trovare e crackare i server: ottieni più RAM per attaccare o un bersaglio più succoso

Se hai seguito il tutorial, hai uno script che controllerà alcuni server hardcoded e li craccherà. Invece di fare affidamento su elenchi codificati, crea uno script che venga eseguito scansione()[github.it] e fa un ricerca in ampiezza[it.wikipedia.org] per generare un elenco di tutti i server nel gioco. Quindi puoi eseguire un ciclo continuo (diciamo una volta ogni dieci secondi) con dormire ()[github.it], e scorrere l'elenco, eseguendo eventuali apriporta disponibili e NUKE.exe se possibile: ci sono funzioni da controllare se hai abbastanza porte[github.it] ed abilità di hacking[github.it].

Una volta che un server è stato violato, puoi decidere cosa farne:

  • Un primo passo facile è quello di ns.tprint()[github.it] il nome del server in modo da essere a conoscenza.
  • Un altro è copia[github.it] ed eseguire il[github.it] hackerare gli script in modo che possa iniziare immediatamente a farti guadagnare denaro.
  • Un terzo è fare una classifica di tutti i possibili obiettivi di hacking, ordinarli in base a una metrica e stampare il risultato, o reindirizzare tutti i tuoi server per hackerare il nuovo obiettivo se è migliore di quello vecchio. Una semplice euristica è denaro massimo[github.it] diviso sicurezza minima[github.it]. Uno più preciso è il denaro massimo diviso per il tempo necessario per hackerare, ricrescere e indebolirsi, funzioni per le quali si possono trovare nel documentazione[github.it].

 

Altri meccanici

Prossimamente: Guide all'hacknet, al mercato azionario e altro ancora.

Altre guide:

Lascia un tuo commento

ArabicEnglishFrenchGermanItalianJapaneseKoreanPortugueseSpanish