← All work

Go-based Computational Simulator: predictions checked against reality

A simulator written in Go that plays out a character's fight in an online game many times over, from gear, talents and rotation, and reports expected damage per ability plus what each stat is worth. A calibration harness compares its output with real recorded combat, ability by ability, and keeps the gaps visible. Free to use, built and operated by Agentas.

Status
Live and free, v1.0 since June 2026
Scope
9 class models on one shared engine
Stack
Go standard library, plain JavaScript front end
Source
Private — walkthrough on request
Simulator result
A simulation result: output per ability and the timeline of a fight.

What it does

A discrete-event engine

A discrete-event scheduler plays out every swing, spell, buff and proc in time order. Each run repeats the fight many times with seeded random rolls, one goroutine per iteration, and averages the results.

Accuracy per ability

The target is within 10% on damage per hit and 15% on cast count for each ability, measured against real logs. A correct total alone can hide errors that cancel each other out, so every ability is checked on its own.

Calibration with an evidence trail

Recordings captured in the game are analysed into evidence files with a confidence level on every row. Those values become constants in the Go code, and regression tests hold the calibrated abilities to their tolerances.

Stat weights and a gear picker

The simulator nudges each stat and re-runs the fight to measure what it is worth. The weights respect caps, so a stat past its cap counts as zero, and a gear picker ranks items by those weights.

Side by side with real logs

A command-line tool diffs simulator output against a real combat log, finding the fight window and matching pets to their owners automatically. On the analytics platform, players can run a similar comparison on their own fights.

An offline edition

Power users can download a native command-line build. It is licensed with an Ed25519 signature tied to the machine, and CI builds it for Windows, macOS (Intel and Apple silicon) and Linux.

Relevant if you're looking for…

sim.epoglogs.com runs in the browser, and the way we calibrate it applies to any model that drives decisions.

  • A combat simulator for your own character: set gear, talents, buffs and rotation in the browser, and the fight is played out many times to give expected damage per ability.
  • Stat weights and gear choices: the simulator measures what each stat is worth, counts a stat past its cap as zero, and a gear picker ranks items by those weights.
  • A simulator for nine classes: all nine class models run on one shared engine, each with its own app in the browser.
  • Monte Carlo simulation software for your own decisions: we build models like this for clients and calibrate them against real data at the level where the decisions are made.

We build this for clients: Data and reporting platform · Custom software and internal tools

How it works

  1. 01

    Configure

    Gear, talents, buffs and rotation, set in the browser.

  2. 02

    Simulate

    The fight runs many times in parallel with seeded random rolls.

  3. 03

    Weigh

    Each stat is nudged and re-run to find what it is worth.

  4. 04

    Check

    Output compared with real logs, ability by ability.

How it's built

The simulator is written from scratch in Go, on the standard library alone and with no web framework. An earlier version built on an existing open-source simulator matched about 97% of total damage, yet its per-ability numbers were off in ways that cancelled out: melee damage alone ran 23% high. That would have quietly skewed every gear comparison, so we rebuilt the engine around per-ability accuracy.

One class-agnostic core handles scheduling, resources, damage over time and the attack tables, and each of the nine classes is its own module on top. The spellcasting classes share a common foundation for mana, channelled spells and spell power, which took the simulator from four classes to nine in early June 2026. The nine browser apps are generated from a single source with shared components and served by the same Go binary.

Engineering highlights

  • Per-ability targets: ±10% damage per hit, ±15% cast count
  • Every evidence row carries a confidence level, from high to pending
  • Unexplained gaps are logged as open observations
  • No third-party Go dependencies
  • One login shared with the analytics platform, checked server to server
  • Nine class models built in about two months

Questions

What is a Monte Carlo simulation?

A way to estimate an outcome by running the same scenario many times with random rolls and averaging the results. Our simulator does this for a character's fight, with seeded random rolls and one goroutine per iteration.

How accurate is the simulator?

Each ability is checked on its own against real combat logs, with a target of within 10% on damage per hit and 15% on cast count. Gaps we cannot explain yet are logged as open observations.

Is sim.epoglogs.com free?

Yes, it is free to use in the browser. It shares one login with the analytics platform at epoglogs.com.

Want something like this?

Any model that drives decisions, from pricing to capacity planning, earns trust the same way: calibrate it against real data at the level where the decisions are made, and keep the gaps where everyone can see them.

Get in touch

← All work · Software & AI for businesses