Bitburner: Early Game Guide (Spoilerfrei)

Du hast das Tutorial beendet und fragst dich, wie es weitergehen soll? Möchten Sie Ihr Hacking-Skript verbessern oder vielleicht andere Teile des Spiels automatisieren?

Dies ist eine spoilerfreie Anleitung, die Sie in die richtige Richtung weist.

 

Hacking-Skripte: Verbesserungsvorschläge

1: Folgen Sie dem Tutorial

Zusätzlich zum Ingame-Tutorial gibt es eine gute Anleitung, wie man ein anständiges Hacking-Skript startet Online-Dokumentation[bitburner.readthedocs.io].

An diesem Punkt haben Sie ein Skript, das einen bestimmten Server kontinuierlich schwächt, vergrößert und hackt. Sie denken vielleicht, dass es langsam ist (und Sie haben Recht), und das liegt daran, dass Sie mehrere Verbesserungen vornehmen können.

Der erste Schritt ist, mit der Nutzung zu beginnen netscript2[bitburner.readthedocs.io]. Netscript 1 oder .script-Dateien, die im Tutorial verwendet werden, sind langsam und haben wenig Funktionen. Netscript2 ist sehr nah an modernem Javascript, und ihre Geschwindigkeit wird nur durch Ihren Computer begrenzt. Beachten Sie, dass sich die Geschwindigkeit hier auf die Ausführungszeit bezieht, nicht darauf, wie schnell Ihre schwächen(), wachsen() und hack() Funktionen ausgeführt werden – das wird durch Hacking-Fähigkeiten bestimmt.

Beim Schreiben von Skripten stellen Sie möglicherweise fest, dass deren RAM-Anforderungen steigen, wenn Sie mehr ns-Funktionen verwenden. Da nur schwächen(), wachsen() und hack() von der Verwendung zusätzlicher Threads profitieren, können Sie durch das Trennen von allen anderen Threads mehr Threads ausführen und somit eine höhere Auszahlung erzielen.

An dieser Stelle lohnt es sich zu haben die API-Dokumentation[bitburner.readthedocs.io] praktisch.

Trennung unserer Hacking-Skripte zur Optimierung der RAM-Nutzung

Damit wir unsere wichtigen Funktionen mit so vielen Threads wie möglich ausführen können, finden Sie heraus, wie Sie ein möglichst einfaches Skript erstellen, das ausgeführt werden kann einzige schwächen() auf ein durch Argument gegebenes Ziel und nicht mehr. Dann nimm dein Hacking-Skript aus dem Tutorial und statt das schwächen() direkt auszuführen, finde einen Weg, das schwächen-Skript auszuführen und ihm das Ziel als Argument zu übergeben, indem du so viele Threads verwendest, wie freier Arbeitsspeicher zulässt. Finden Sie dann einen Weg, um zu warten, bis es fertig ist. Wiederholen Sie diesen Vorgang für grow() und hack().

Da wir jetzt nur einen kleinen Bruchteil unseres Arbeitsspeichers für die Steuerung mit 1 Thread verwenden, können wir den gesamten Rest unseres Arbeitsspeichers für die Ausführung der Funktionen verwenden, die sich tatsächlich um Threads kümmern, mit so vielen Threads wie möglich. Dadurch kann sich Ihr Einkommen mehr als verdoppeln.

Zentralisierung der Steuerung

Wenn Sie dieses Hacking-Skript auf jedem Server bereitstellen, auf dem Sie Root haben, sollten Sie recht gut vorankommen. Aber wenn wir die RAM-Nutzung auf unseren gerooteten Servern analysieren, sehen wir, dass die eigentlichen Skripte "weaken.ns", "grow.ns" und "hack.ns" nicht den gesamten verfügbaren RAM verwenden, da das Kontrollskript einen ziemlich großen Teil einnimmt. Aber wenn wir mit all unseren Servern sowieso nur das profitabelste Ziel angreifen, warum nicht bei einem einzigen Kontrollskript auf einem Server bleiben und es die anderen kontrollieren lassen?

Das Ziel hier ist es, ein Kontrollskript zu schreiben, das wir auf unserem Heimcomputer ausführen und auf dem „weaken.ns, grow.ns“ und „hack.ns“ spawnen können andere Server – uns mit all ihrer Erinnerung für wichtige Aufgaben frei zu lassen. Wenn das Kontrollskript ungefähr doppelt so viel RAM benötigt wie ein einzelner Thread von schwachen.ns, grow.ns oder hack.ns, erhalten wir mit dieser Technik 2 zusätzliche Threads auf jedem unserer gerooteten Server kostenlos. Im frühen Spiel, wenn der größte Teil Ihres Arbeitsspeichers von zufälligen Servern stammt, die Sie gerootet haben, kann dies eine ziemliche Steigerung darstellen.

Gleichzeitige Ausführung

Im Allgemeinen ist es für Optimierungen wichtig zu messen, welche Teile unserer Algorithmen die längste Auswirkung auf die Leistung haben. Nehmen wir an, wir sind an dem Punkt angelangt, an dem ein Server vorbereitet ist (minimale Sicherheit und maximales Geld erreicht), sodass unsere Schleife ungefähr schwächen -> wachsen -> schwächen -> hacken ist.

Beginnen Sie mit dem Drucken, um die für jeden Schritt aufgewendete Zeit zu protokollieren. In meinem Fall war die offensichtliche Zeitsenke das Schwächen direkt nach dem Wachsen, da das Wachsen die Sicherheit erheblich erhöhte. Was wäre, wenn wir anfangen könnten, während des Wachstums zu schwächen und so die Aufgaben parallel zu erledigen? Wir können tatsächlich:

Die Zeit, die von weighten(), grow() und hack() benötigt wird, wird durch den Server- und Spielerstatus auf der berechnet Anfang der Operation. Die Wirkung tritt bei der Ende. Wenn wir also mit dem Abschwächen beginnen, bevor das Wachstum beendet ist, wird es viel schneller sein. Finden Sie einen Weg, um zu sehen, wie lange schwachen () und wachsen () dauern (Tipp: die  Dokumentation[github.com] hat Funktionen dafür). Verwenden Sie dann die Hälfte, anstatt den gesamten verfügbaren Speicher zum Starten des Wachstums zu verwenden. Beginnen Sie dann mit der anderen Hälfte zu schwächen. Wenn schwächen schneller ausgeführt werden würde, müssen Sie Ihr Skript ein wenig schlafen lassen, bevor Sie schwächen ausführen.

Beachten Sie, dass die optimale Aufteilung wahrscheinlich weit von 50/50 entfernt ist. Sie können entweder mit dem Verhältnis experimentieren oder die Analysefunktionen von verwenden  Dokumentation[github.com] um die optimale Aufteilung zu berechnen, damit der Schwächling gerade genug Kraft hat, um dem Effekt des Wachsens entgegenzuwirken.

Weitere Optimierung

grow() vergrößert den Server um einen bestimmten Prozentsatz seines aktuellen Geldes. Idealerweise möchten wir sicherstellen, dass ein einziges grow() es wieder voll auffüllt. Finden Sie einen Weg, um zu berechnen, wie viele Hack-and-Growth-Threads Sie benötigen, um den Zyklus kurz zu halten.

Die letzte und am schwierigsten zu berücksichtigende Optimierung besteht darin, einen ganzen Zyklus zu stapeln und sie gleichzeitig zu starten, sodass hack(), grow() und schwächen() alle innerhalb kurzer Zeit aufeinander treffen. Wenn Sie dies schaffen, können Sie im späteren Spiel große Vorteile aus größeren Servern ziehen, da ein einziger Full-Threaded-Hack das gesamte Geld entfernt und Ihnen viel Zeit lässt, den Vorrat wieder aufzubauen. Wenn Sie stattdessen mehrere Batches von Skripten in die Warteschlange stellen, die alle nacheinander eintreffen und einen geringeren Prozentsatz des Geldes stehlen, gewinnen Sie im Laufe der Zeit viel mehr Geld pro GB RAM als sonst.

Diese letzte Optimierung ist jedoch ein nicht triviales Problem und erfordert umfangreiche Planung, Analyse und Umgestaltung, um richtig zu werden.

Server finden und knacken: Holen Sie sich mehr RAM für Angriffe oder ein saftigeres Ziel

Wenn Sie dem Tutorial gefolgt sind, haben Sie ein Skript, das einige hartcodierte Server überprüft und sie knackt. Anstatt sich auf fest codierte Listen zu verlassen, erstellen Sie ein Skript, das ausgeführt wird Scan()[github.com] und tut a Breiten-zuerst-Suche[de.wikipedia.org] um eine Liste aller Server im Spiel zu erstellen. Dann können Sie eine kontinuierliche Schleife (z. B. einmal alle zehn Sekunden) mit verwenden schlaf ()[github.com], und durchlaufen Sie die Liste, führen Sie alle verfügbaren Portöffner und NUKE.exe aus, wenn Sie können – es gibt Funktionen, die Sie überprüfen müssen wenn du genug Ports hast[github.com] und Hacking-Fähigkeit[github.com].

Sobald ein Server geknackt wurde, können Sie entscheiden, was damit geschehen soll:

  • Ein einfacher erster Schritt ist ns.tprint()[github.com] den Namen des Servers, damit Sie es wissen.
  • Ein anderer ist zu Kopieren[github.com] und Lauf[github.com] Hacken von Skripten, damit es Ihnen sofort Geld einbringen kann.
  • Eine dritte besteht darin, eine Rangliste aller möglichen Hacking-Ziele zu erstellen, sie nach einer Metrik zu sortieren und entweder das Ergebnis auszudrucken oder alle Ihre Server umzuleiten, um das neue Ziel zu hacken, wenn es besser ist als Ihr altes. Eine einfache Heuristik ist maximales Geld[github.com] geteilt durch Mindestsicherheit[github.com]. Eine genauere ist das maximale Geld geteilt durch die Zeit, die zum Hacken, Nachwachsen und Abschwächen benötigt wird. Funktionen dafür finden Sie in der  Dokumentation[github.com].

 

Andere Mechanik

Demnächst erhältlich: Leitfäden zu Hacknet, Börse und mehr.

Weitere Anleitungen:

Hinterlasse einen Kommentar

ArabicEnglishFrenchGermanItalianJapaneseKoreanPortugueseSpanish