Back to Simulator

Guide

Bitefight Ruins Strategy Helper — complete feature guide & how-to

1. The Main Page Plan, simulate & optimize 2. Dynamic Lab Tune the engine yourself 3. Test Bench Batch-validate the model

1 The Main Page

This is where you'll spend most of your time. You describe the fight you're about to take — the enemy you see in-game and the units you have available — and the helper predicts the outcome, round by round, then helps you find the army that loses the fewest units.

Pick your race

At the top of Your Units, choose Vampire or Werewolf. This only changes the unit names and artwork — the stats and mechanics of each tier are identical for both races.

Set the layer

The Layer selector (with the −10 / −1 / +1 / +10 buttons) sets how deep into the Ruins you are. The layer decides your maximum army capacity — the higher the layer, the more units you can field. The capacity number updates automatically as you change the layer.

Enter the enemy formation

Under Opponent you'll see the ten enemy types (Skeleton → Lich, labelled E1–E10). Type in how many of each you see on the in-game Ruins page. Leave the rest at 0. Each enemy card shows that unit's passive if you hover it.

Enter your own units

Under Your Units (tiers T1–T8) type how many of each you want to send. The capacity bar keeps you from exceeding what the layer allows. Hover any unit card to read its passive ability.

Simulate the battle

Press Simulate Current Scenario to run the fight. You'll get a full report:

  • Result — VICTORY or DEFEAT.
  • Your Units — what you sent in.
  • Fallen Units — how many of each tier you lose.
  • Round-by-round log — every attack, the exact damage formula, type bonuses, passives and deaths, so you can see why the result happened.

Cultist luck — the loss range

The Undead Cultist (E3) buffs a random enemy (+10%, stacking) every time it survives a hit, so your losses can vary with luck. Whenever a Cultist is in the enemy line-up, the report automatically shows your Fallen Units as a [min–max] range — best case to worst case — across every enemy the Cultist could buff. With no Cultist present you just get the single exact result.

Verified results

Our engine reproduces real Ruins battles in over 98% of cases, but a handful of specific matchups are known exceptions. For those, instead of a report that would be slightly off, the helper shows the confirmed real in-game result — contributed and checked by players — with a short "verified result" note. So even where the simulation can't perfectly reproduce the round-by-round sequence, you still get the true numbers.

Find the optimal army

Don't want to guess? Press Find Optimal Formation and the optimizer tests thousands of compositions to find the one with the lowest losses for your capacity. It uses all of your CPU cores, so deeper layers just take a little longer.

  • Cultist-aware — when a Cultist is in the fight, each suggested army's losses are shown as a best-to-worst range (the Cultist buffs a random enemy, so the real loss lands somewhere in that band).
  • 🎯 One shot, one kill — for absolute certainty, restrict results to armies that kill the Cultist before it can act, so the losses become exact.
  • 🛡️ Cultist Proof — the alternative: keep only formations whose losses stay identical no matter which enemy the Cultist buffs. You get a guaranteed result without having to kill the Cultist first. (The two options are mutually exclusive; leave both off to see the full best-to-worst range.)

The red ⓘ guide

The red ⓘ button next to Find Optimal opens a full plain-English explanation of how the simulation works — who attacks first, how targets are chosen, the type triangle, and every unit's passive with how the algorithm uses it. Open it any time you're unsure why a fight went the way it did.

Share & copy

Use the buttons above the log to copy the full report or export the battle as a shareable link, so you can compare setups or send a plan to a friend.

2 Dynamic Lab

The Dynamic Lab is for players who want to look under the hood and bend the rules. It keeps the normal simulator but adds an Engine Controls panel and a powerful Unit Stats & Overrides editor. Everything you change here applies live to both the report and the optimizer — and only while the Dynamic Lab / Test Bench is open, so the public calculator is never affected.

Open Dynamic Lab

The Engine Controls panel

A side panel with engine knobs:

  • Attack Rounding — how each hit's damage is rounded (half-up / floor / ceil).
  • Sort Timing — when the attack order is recomputed (each attack / start of round / start of battle).
  • Attacker & Target Sort Parameters — the priority used to order who attacks (speed, position, side, tier, count) and which enemy in a row is hit first, each with an ascending/descending toggle.
  • Cultist +10% Target — force the Cultist to always buff a specific enemy (or random / off) instead of leaving it to chance.
  • Type Effectiveness Matrix — override the Brute / Occult / Monstrosity advantage triangle itself, cell by cell (the ×1.5 / ×0.5 / ×1.0 multipliers), to test "what if" type rules.

You can minimize the whole panel into the bug-icon circle in the bottom-right corner and click it to bring the panel back.

Unit Stats & Overrides

The Edit Unit Stats & Overrides button opens a table of every unit. The gray placeholder in each box is the current game value, so a blank box means "unchanged"; type a number to override it (the box turns amber). Per unit you can change:

  • Speed, Attack, HP, Type, Position (vanguard/rearguard), Cost, Army Strength.
  • Ignore Type — force that attacker's type multiplier to ×1.0.
  • Ignore Shield — let that enemy bypass your T2 Ghoul's −50% shield.
  • Ignore Passive — switch that unit's special ability off entirely.
  • Others — the Cultist's buff timing, the Zombie's revive & attack timing (including "revive but never attack"), and the Spiderling's tier.
  • Zombie (revived) — a dedicated row right under the Zombie lets you set the stats the zombies come back with (default: 1 HP each), plus its own Ignore Type / Ignore Shield.

Press Reset all overrides at the bottom to return everything to the real game values.

3 Test Bench

The Test Bench turns the helper into a spreadsheet of battles. You enter fights whose real outcome you already know, then run them all at once to check how closely the simulator matches reality. It's how the model is kept honest.

Open Test Bench

Pick a mode (top-right switch)

The switch in the top-right corner sets what the bench does:

  • Verify vs reality — you enter each battle's real in-game result and losses, and the bench checks whether the engine reproduces them (PASS/FAIL).
  • Mass testing — the result/loss columns disappear; you just enter battles and the bench shows each one's predicted losses (unit images + count, or a range when a Cultist can swing it). No pass/fail.
  • Find formation — finds one reusable ally formation that wins every enemy set at a layer. See the section below.

The Vampire / Werewolf buttons switch the ally artwork; the choice is shared with the main page.

Build your test rows

Each row is one battle. Fill in the Layer, the Enemies (E1–E10) and your Allies (T1–T8). In Verify mode you also set the Expected Result (WIN/LOSS) and the Real In-Game Losses per tier — the actual numbers from the fight. Add as many rows as you like; Add New Test drops a fresh row at the top.

Run all tests

Press Run All Tests. Each row is simulated on the real-game algorithm plus your current overrides; in Verify mode it's marked PASSED or FAILED and a pass count shows overall accuracy. When a Cultist is present the check is range-based — a test passes if your real losses fall inside the engine's best-to-worst band.

The pass count (e.g. Passed: 336 / 347) is remembered between visits. If you then change a test row or any engine / override setting, it turns into an amber Needs re-test warning so you know the number is stale until you run again.

Per-row tools

  • Log — opens that row's full round-by-round battle log in the detailed report format, so you can see exactly where a failing test diverges.
  • Open in new tab — loads that battle in the Dynamic Lab for hands-on tweaking.
  • Delete — removes the row.

Import & export

Load battles from a JSON file or paste, or from a CSV file, and export your suite back out — using the exact formats shown below. Great for keeping a growing library of verified fights.

Find best formation for layers

In the Ruins the enemies at each layer re-roll every few hours, so a formation tuned to one specific enemy set is wasted the moment the layer changes. This mode solves that: it finds one reusable ally formation that wins every enemy set a layer can throw at you — a formation you can keep using regardless of which set you're dealt.

  • Scenarios come from a dedicated enemy-only table (just Layer + Enemies). It auto-imports every enemy combination from your Verify vs reality rows, and you can add more by hand with Add enemy formation — no allies or losses needed. Rows are grouped by layer, with a separator line showing each layer's scenario count.
  • Cost is a range, not a total. Because you fight one set at a time, each formation is shown as a cost 0–max per battle, plus its average and how many sets it wins for free (0 cost). Open a scenario's cost breakdown to see what it pays on each set.
  • Pick how “best” is decided with the three-way ranking switch — it re-ranks instantly, no re-search:
    • Most free (0) — maximises the number of sets you beat for zero loss.
    • Lowest average — smallest expected loss per battle.
    • Lowest worst-case — caps the most you can ever lose on any single set.
  • Search settings (persisted): Depth (Quick / Deep), Layers (limit to a range, e.g. 1–30), Units (tick only the tiers you own), and Cultist handling — One shot, one kill (kill it round 1, exact costs), Cultist Proof (only formations whose losses never change no matter what the Cultist buffs), or Allow buffs (worst-case cost across every buff, so no surprises).
  • Report on any layer opens a full round-by-round battle report; two dropdowns let you pick any scenario and any of the found formations (Cultist luck included).
  • Export CSV saves the results; the enemy table has its own Export / Import / Clear while you're in this mode.

Battle data format (JSON & CSV)

Battles can be saved and shared as data — handy if you want to keep a library of fights or build a test suite. Each battle is one record with the layer, the ten enemy counts (e1–e10), your eight unit counts (a1–a8), the expected result, and the expected losses per tier.

JSON — an array of battles
[
  {
    "layer": 79,
    "e": [0, 0, 12, 0, 0, 8, 0, 0, 0, 3],   // E1..E10 (here: 12 Cultists, 8 Wraiths, 3 Lich)
    "a": [120, 40, 0, 0, 0, 0, 0, 0],            // T1..T8 (here: 120 T1, 40 T2)
    "expRes": "WIN",
    "expLoss": [14, 0, 0, 0, 0, 0, 0, 0]            // losses per tier T1..T8
  }
]
CSV — one battle per line (header optional)
layer,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,a1,a2,a3,a4,a5,a6,a7,a8,expRes,loss1,loss2,loss3,loss4,loss5,loss6,loss7,loss8
79,0,0,12,0,0,8,0,0,0,3,120,40,0,0,0,0,0,0,WIN,14,0,0,0,0,0,0,0

Order is always layer → 10 enemies → 8 allies → expected result → 8 losses. Both formats can be imported and exported from the Test Bench.

Advanced Tools

The Advanced Tools drop-down holds the same engine knobs and the same Unit Stats & Overrides editor as the Dynamic Lab, so any override you can make there you can make here too — and it applies to your test run.