SimhiveSimhive · Doku · Pool-Seite

Skripte, Rohdaten und Seeds

Sims per Skript mit dem simhive-CLI starten, das rohe simc-json2 und die CSV jedes Ergebnisses herunterladen, einen Lauf über seinen Seed nachstellen und als bekannter Theorycrafter höhere Limits bekommen.

Die Oberfläche ist für Ausrüstungsentscheidungen gebaut. Ein Theorycrafter dagegen simmt hunderte Male am Tag, jagt kleinen Effekten hinterher und will rohe Zahlen fürs Notebook. Dafür gibt es diese Schnittstellen.

Rohdaten zu jedem Ergebnis #

Neben Bericht speichern hat jedes Ergebnis zwei Buttons:

  • json2 lädt das rohe SimulationCraft-json2 des Laufs herunter: jeder Wert, jeder Buff, jeder Proc, jede Ressource und jede Zeitleiste, die simc geschrieben hat – genau so, wie die Oberfläche sie bekommen hat. Bei einem Pool-Lauf ist das die zusammengeführte Ausgabe aller Pakete, im selben Aufbau, den simc für seine eigenen Threads verwendet.
  • CSV lädt die Vergleichszeilen eines Ergebnisses aus Top Gear, Droptimizer oder Erweitert herunter: Name, Slot, Gegenstandsstufe, Item-ID, Quelle, DPS, Fehler, Differenz.

Das rohe json2 liegt komprimiert neben dem Verlaufseintrag auf dem Rechner, der die Sim ausgeführt hat, und wird mit ihm gelöscht. Startest du eine Sim über die Weboberfläche des Pools, bleibt es beim Ergebnis, bis einer deiner Rechner sie in den Verlauf übernimmt – höchstens 48 Stunden. Ausnahme: sehr große Ausgaben (über 8 MB komprimiert) werden nicht aufbewahrt.

Einen Lauf nachstellen #

Am Ende jeder Ergebniszeile stehen der Seed des Laufs und der SimulationCraft-Commit des Pools. Bei einem Pool-Lauf ist das der Seed des ersten Pakets; die übrigen Pakete zählen von dort hoch. Wiederholen, gleicher Seed startet dieselbe Sim noch einmal mit diesem Seed:

  • Auf einem einzelnen Rechner ist das Ergebnis identisch – eine Änderung an der Eingabe ist also der einzige Unterschied.
  • Im Pool wird die Arbeit auf die Rechner verteilt, die gerade online sind. Die Paket-Seeds liegen dann womöglich anders, und das Ergebnis kann innerhalb seines Fehlers abweichen.

Du kannst auch selbst seed=123456 in eine Sim unter Erweitert schreiben; der Pool übernimmt ihn.

Das CLI #

Die Engine der App lauscht auf deinem Rechner (Port 4747 oder der nächste freie – steht unter Einstellungen → This machine). Das Skript simhive schickt eine .simc-Datei als Sim unter Erweitert, wartet und schreibt, was du haben willst:

simhive run mysim.simc --json result.json --raw result.json2.json --csv rows.csv

Die Datei ist die Sim, wie du sie auch für simc schreiben würdest: ein Charakter, Optionen, profileset.-Zeilen. Aus den Profilesets werden Zeilen. Iterationen, Zielfehler und Kampfdauer kommen aus der Datei. Das Skript gibt DPS, Zeilenzahl, Seed und Commit aus und endet mit 0, wenn die Sim fertig ist.

Wo das Skript liegt: bin/simhive.mjs im Engine-Ordner (in der App: data/localbots/ in ihrem Datenordner; bei Docker: /app). Starte es mit node bin/simhive.mjs run … – oder führe in dem Ordner einmal npm link aus, dann ist simhive in deinem Pfad. Mit --server sprichst du eine andere Engine an, etwa eine Docker-Instanz in deinem LAN.

Höhere Limits #

Sims im Pool sind begrenzt, damit nicht ein Mitglied den Pool eine Stunde lang blockiert: 200.000 Iterationen pro Profil, 1.000 Profilesets, Zielfehler nicht feiner als 0,05 %. Wer einem Effekt von 0,1 % auf der Spur ist, braucht mehr. Der Betreiber kann ein Mitglied in der Konsole auf high limits setzen: eine Million Iterationen, 5.000 Profilesets, Zielfehler bis 0,01 %. Die Regeln zu Dateien und Netzwerk bleiben immer gleich. Frag einfach den Betreiber deines Pools.