Cogspark Works
Operator’s Manual
SimulationCraft engine build 20261011-af05b9e-w5788660 · game data 12.1.0.69933
§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.
- In game, type /simc. A window opens with the export text.
- Press Ctrl+A, then Ctrl+C to copy it.
- Here, open the feed tank (in the lite look, the Profile panel) and paste with Ctrl+V.
- 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.
- Sight glass: full when a profile is loaded
- Pilot lamp: amber blinking, empty · teal, loaded · rust, rejected paste
- Character plate: what is in the tank
- 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.
- Pilot lamp: lit beside the selected position
- Pointer: aims at the selected label
- Detents: one per position
§4The controls
- Fight style
- Patchwerk, CastingPatchwerk, LightMovement, HeavyMovement, DungeonSlice, HecticAddCleave. Open question: the exact set is to be verified against the engine build.
- 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.
§5Running, 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.
- Scale: 0 to 100 % complete
- Needle: only moves forward
- Lamp ring: the same progress in coarse steps
- Top drum: mean DPS, to the digit
- Bottom drum: ± error (95 % band), with the band as a percent of the mean underneath
- Pointer: shared by both drums (teal while live, brass when settled)
- Cap: press to run; reads Cancel during a run
- Bezel
- Mode and estimate: what will run and roughly how long
§6Reading 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.
- Character name
- Spec, class and simulation type
- Headline result
- 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.
§7The 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.
§8Requirements, offline use and the two looks
- 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-originandCross-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.
- The two looks
- Full machine draws the whole contraption, with its moving parts. Lite keeps every feature (all modes and options, run and cancel, the readout, crates, the report and this manual) with plain instrument panels and little motion. Lite is chosen for you when the device has 4 or fewer cores or 4 GB or less of memory, when data saver is on, when the system asks for reduced motion, or when a one-second check draws fewer than 45 frames per second. The Look switch in the header changes it either way, and your choice is remembered on this device.
§9Licence 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 af05b9e2e1e5 (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.