Cogspark
Back to the machine

Operator’s manual

Cogspark Works

Operator’s Manual

SimulationCraft engine build 20261017-1860cd1-w128c622 · game data 12.1.5.70448

§1What the machine is

Cogspark is SimulationCraft, compiled to WebAssembly, running in a Web Worker in this tab on your own CPU threads. Your profile is never uploaded: there is no server, no queue, no account and no rate limit. The only wait is your CPU doing the work.

The site is static files. After the first visit everything, the engine included, is kept by the browser, and the machine works with the network off. Results stay on this device.

Everything that moves on the machine is driven by the real run: when the engine is idle, it is at rest.

§2Loading a character

The machine simulates the character described by a /simc string, the text export of the SimulationCraft addon.

  1. In game, type /simc. A window opens with the export text.
  2. Press Ctrl+A, then Ctrl+C to copy it.
  3. Here, open the feed tank and paste with Ctrl+V.
  4. The plate beside the text reads back the character, spec, gear and item level as you paste. If the text is not a /simc export, it says why in words and the profile is not loaded. Then feed it in.

A rejected paste never replaces the profile already loaded. The tank’s sight glass is full and its lamp teal when a profile is loaded; the lamp blinks amber when the tank is empty.

The feed tank: sight glass, pilot lamp, character plate and hatch.1234
The feed tank
  1. Sight glass: full when a profile is loaded
  2. Pilot lamp: amber blinking, empty · teal, loaded · rust, rejected paste
  3. Character plate: what is in the tank
  4. Hatch: open the tank to paste a profile

§3Choosing a simulation

Turn the Simulation switch (click a label, drag the knob, scroll, or use the arrow keys).

Quick Sim
Simulates the profile: DPS with its 95 % band, where the damage came from, DPS over the fight, buff uptimes and the rest of simc’s report.
Compare
Profilesets: copies of your profile, each with one edit. Results arrive one by one and are ranked against the base profile, simulated in the same run. With early exit on, the run stops once the top 5 stay the same for 20 finished sets.
Stat Weights
SimulationCraft’s scale factors: how much DPS one point of each stat is worth. Weights describe this gear, these talents and this fight only. To choose between two items, use Compare or Top Gear.
Top Gear
Combines equipped and bag items into profilesets. The count multiplies per slot, so the machine shows the number of combinations and a time estimate before you run.
A rotary switch: pilot lamp, pointer and detents.QUICKCOMPAREWEIGHTSTOP GEAR123
Rotary switches
  1. Pilot lamp: lit beside the selected position
  2. Pointer: aims at the selected label
  3. Detents: one per position

§4The controls

Fight style
The six standard styles: Patchwerk, CastingPatchwerk, LightMovement, HeavyMovement, DungeonSlice, HecticAddCleave. Open question: the exact set is to be verified against the engine build. After them come 10 boss fight profiles (section 5). Turn the knob or click the window for the full list.
Length · vary
Fight length in seconds (default 300) and how much it varies between iterations (default ±20 %).
Targets
Number of enemies.
Precision
Either a fixed number of iterations, or a target error: simc keeps going until the 95 % band is smaller than that percentage of the mean. The estimate converts a target error into iterations from the profile’s spread.
Threads
Worker threads to use, up to the pool (your logical cores + 1). Runs of 100 iterations or fewer use 1–2 threads.

§5Boss fight profiles

Past the six standard styles, the fight-style knob turns to real raid encounters. Each boss profile replays one logged Heroic pull: how long it lasted, which enemies were up, when adds arrived, when bosses could not be attacked, and how the boss’s health fell. The standard styles stay the expected baseline; a profile shows how a character does on that one fight.

  • Length and targets are set by the profile. Their drums lock and show the profile’s values while one is selected.
  • Vary stays yours. At 0 % the pull replays exactly. Above 0 the fight length varies and the boss’s health curve stretches with it, but adds, untargetable windows and Bloodlust stay at their logged times, so they drift against the boss’s health.
  • Bloodlust fires on pull unless a profile says otherwise, as two do below.
  • Each profile was generated from logs and checked on one player. They will be refined as better logs, kill logs in particular, become available.
Nek'zali the Soulcoiler · The Venomous Abyss
Stage 1, an intermission in which the boss can’t be attacked (121–208 s), then stage 2. Two kinds of add arrive from 64 s; the boss stays attackable while they are up, so they take only what your cleave reaches.
327 s · 1 enemy at the start · 21 kinds of add · 1 untargetable window · Bloodlust on pull · log pull 3470-20
Entombed Sentinels · The Venomous Abyss
Two bosses and one add at a time. Three times a fight Vitriolic Stasis makes both bosses unattackable until the group deals with it: 7, 8 and 11 s in this pull, from 46 s, 144 s and 243 s.
312 s · 2 enemies at the start · 7 kinds of add · 4 untargetable windows · Bloodlust on pull · log pull 3445-4
The Lost Explorers · The Venomous Abyss
Three bosses and no adds. A boss hit with a fish is briefly untargetable: Scrollsage Iku from 46 s and First Mate Nama from 165 s, about 7 s each.
271 s · 3 enemies at the start · no adds · 2 untargetable windows · Bloodlust on pull · log pull 3497-2
Vashnik the Malignant · The Venomous Abyss
One boss, always attackable. Two kinds of add arrive from 28 s and take only what your cleave reaches.
330 s · 1 enemy at the start · 28 kinds of add · always attackable · Bloodlust on pull · log pull 3455-5
Sszorak · The Venomous Abyss
One boss, always attackable, no adds: the closest profile to a plain single-target fight.
338 s · 1 enemy at the start · no adds · always attackable · Bloodlust on pull · log pull 3420-3
The Twin Fangs · The Venomous Abyss
Two bosses side by side. Twice (148–170 s and 317–340 s) Ithraz swims to a new corner while Vexhul blasts from the pool in the middle: Vexhul is then out of cleave range, and only single-target damage such as damage over time or Havoc reaches it. One kind of add arrives from 39 s.
421 s · 2 enemies at the start · 13 kinds of add · always attackable · a boss out of cleave range 2× · Bloodlust on pull · log pull 3421-6
The Coiled Altar · The Venomous Abyss
Zul’jan first, then Malacrass, then the Soulbinding intermission (255–290 s), then phase 3 with the sim on Zul’jan until 393 s. Bloodlust waits for the intermission.
456 s · 2 enemies at the start · 3 kinds of add · 5 untargetable windows · Bloodlust at 255 s · log pull 3429-25
Ula'tek · The Venomous Abyss
No kill log exists yet, so this is built from the longest Heroic wipe (581 s), cut at 483 s. The sim swaps to the Venomous Heart in its first window (137–155 s); Ula’tek can’t be attacked during the split (156–304 s, which holds the second Heart window) or from 309 s to 363 s. The Heart takes about double damage. The fight’s last Heart window (574 s in the log, as the raid wiped) falls after the profile stops. Bloodlust fires at 130 s, just before the first Heart window.
483 s · 1 enemy at the start · 49 kinds of add · 3 untargetable windows · Bloodlust at 130 s · log pull 3492-36
Nymrissa Wavecaller · The Tidebound Grotto
One boss, always attackable. Adds come in eight waves; each wave is four adds that live from the wave’s first spawn until its last add died in the log, since no more than about four can be attacked at once.
295 s · 1 enemy at the start · 8 kinds of add · always attackable · Bloodlust on pull · log pull 3379-0
Kith'ix · The Unbinding of Kith'ix
One boss, always attackable. Adds arrive in waves from 9 s to 234 s, heaviest at 9–33 s and 117–143 s. Built from the first Heroic kill (283 s).
283 s · 1 enemy at the start · 16 kinds of add · always attackable · Bloodlust on pull · log pull 3513-17

§6Running, watching, cancelling

Press the red button. The first visit downloads the engine once (7.5 MB compressed); after that it starts from the browser’s cache. The phase lamps on the plinth show fetch, compile, instantiate, run and result. During the run:

  • Progress gauge: 0–100 % complete. Iterations done ÷ total for Quick Sim and Stat Weights (across all its scale-factor runs); profilesets done ÷ total for Compare and Top Gear. The needle only moves forward and reads 100 when the run ends, early exit included. The lamp ring around the bezel repeats the same progress in coarse steps. A fresh page reads 0; a cancelled run leaves the needle where it stopped. Loading the engine shows on the phase lamps, not on the gauge.
  • Readout: two drums under one pointer. The top drum is the running mean DPS; the bottom drum is its ± error (the 95 % band), with the same band as a percent of the mean printed small underneath. The bottom drum rolls toward smaller values as the estimate settles. During a run the band is an estimate from the running mean; the crate carries simc’s own.
  • Beacon: lights about 3 s before the result is ready and stays on until the crate is out.

During a run the red button reads Cancel. Cancelling takes about half a second; a cancelled run leaves no crate.

The progress gauge: 0 to 100 % complete, a needle that only moves forward, and the lamp ring.050100% COMPLETE123
The progress gauge
  1. Scale: 0 to 100 % complete
  2. Needle: only moves forward
  3. Lamp ring: the same progress in coarse steps
The readout: two drums under one pointer, DPS on top and the ± error below.208,688± 2290.11 % of the mean123
The readout
  1. Top drum: mean DPS, to the digit
  2. Bottom drum: ± error (95 % band), with the band as a percent of the mean underneath
  3. Pointer: shared by both drums (teal while live, brass when settled)
The red button: cap, bezel, mode and estimate.RUNQuick Sim · ≈ 10 s123
The red button
  1. Cap: press to run; reads Cancel during a run
  2. Bezel
  3. Mode and estimate: what will run and roughly how long

§7Reading the result

When the run finishes, the hatch opens and a crate rolls out. The crate is the way into the report: click it, or Tab to it and press Enter. Earlier crates wait in the crate yard below the console, and each one opens its own report.

The headline is the mean DPS with its 95 % band: 1.96 × the standard error of the mean. For the bundled Shadow Priest profile that is 1.96 × 116.64 = ± 228.62 DPS. Two results whose difference is inside their band are a tie.

A result crate: character, spec and simulation type, headline result, stale marking.Character nameShadow Priest · Quick Sim208,688 DPSSTALE1234
The crate
  1. Character name
  2. Spec, class and simulation type
  3. Headline result
  4. Stale marking when it applies

The report is the whole of simc’s own result, read from the JSON the engine writes; it replaces simc’s HTML report. A section index runs down the side (a jump list on a phone); every section folds. Focus or hover a ? for what a column means.

  • Summary: mean DPS and its band with the arithmetic, median, minimum, maximum, spread of single fights, fight style and length, targets, iterations, threads, and the result stamp.
  • Damage sources: every ability and pet: DPS, share, uses, interval, damage per use, average hit and crit, crit rate, direct against damage over time. Click a column to sort; open a row for its hits and ticks. On a phone the table keeps the main columns and the row opens to show the rest.
  • Charts: DPS over the fight, damage share, and each resource over the fight.
  • Buffs: applications, refreshes, intervals, duration, uptime, wasted stacks and expiries; open a row for the buff over the fight. Constant buffs are listed underneath.
  • Procs and gains: how often each effect fired, and where each resource came from and how much was wasted.
  • Sample sequence: one fight’s casts in order, with the buffs up at each cast. One sample only: other fights differ.
  • Character: gear and item level, buffed stats, consumables, the talent string to copy, and the action priority list from the profile.
  • Simulation info: timings, events processed, engine, game data and wrapper versions.
  • Not in this report: what simc’s JSON does not carry, said plainly (for example no DPS distribution histogram, no hotfix tables, no spell data, no CPU time).

Compare, Top Gear and Stat Weights results add their own section at the top of the report.

§8The result stamp and staleness

Every result carries a stamp: engine commit and date, game version and hotfix, wrapper version and hash, build id, profile hash, precision, fight style, tool and time.

A saved result is stale when the profile hash or the game version differs from now. A newer engine build alone does not make it stale. When only the game data’s hotfix has moved, the result stays usable and the report says newer data is loaded.

§9Requirements and offline use

Threads need isolation
The engine’s threads use SharedArrayBuffer, which browsers allow only on cross-origin isolated pages. The host sends Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: credentialless; where it does not, the page’s own service worker adds them and reloads once. If the page still is not isolated, the machine says so and cannot run here; saved results stay readable.
First load
About 7.5 MB compressed (111.0 MB uncompressed). Compiling takes about 1 s the first time and 0.4 s from the cache; instantiating about 0.4 s (measured on the reference machine).
Speed
On the reference machine (16 threads), 1,000 iterations of the bundled profile take about 10.4 s. Your estimate is measured on your device after the first run.
Memory
The engine reserves 768 MiB when it starts and may grow to 2 GiB.
Offline
The site is static files, and the page talks to no other site. After the first visit the browser keeps the app and the engine, and runs work with the network off. Results, the crate history and your settings are kept in this browser on this device (IndexedDB and local storage), and nowhere else. Clearing the site’s data deletes them.

§10Licence and source

The engine (SimulationCraft) and its worker are free software under the GNU General Public License, version 3. This build’s exact source is named in SOURCE.txt, shipped with the engine, and the licence text is in LICENSE. Engine commit 1860cd1d5763 (simulationcraft/simc, branch midnight).

The page loads the engine as a separate file and talks to it only through messages; the page’s own code is not part of the engine.

The type families are under the SIL Open Font License; their licence texts ship with the site.

Cogspark is not affiliated with or endorsed by Blizzard Entertainment. World of Warcraft is a trademark of Blizzard Entertainment, Inc.