D.idle

Say it: die dull. Status page.

A hobby project that turns Diablo II: Lord of Destruction into an idle game. A bot plays the real game by itself, offline, and a layer of goals, routines and progression is being built around it, the way an idle game gives you things to unlock and decisions to check in on. It is early days. Right now the work is on the part underneath: a bot that plays reliably for hours with nobody watching.

Streams when the bot is running.

Between runs

No bot is running right now. This is the last run of each.

Loopy Sorceressd2dended

Playing through the early game in Rogue Encampment

level 4, 7,700 XP, 334 kills, 0 deaths, 13 potions drunk, run time 0h 05m

Last update 2026-10-31 00:10 UTC

Soaky Sorceressd2lod (original game)ended

Levelling up toward level 22 in Stony Field

level 15, 195,140 XP, 7,100 kills, 4 deaths, 203 potions drunk, run time 8h 05m

Last update 2026-10-30 20:26 UTC

Fresha Sorceressd2lod (original game)ended

Levelling up toward level 20 in Stony Field

level 11, 75,549 XP, 2,387 kills, 3 deaths, 121 potions drunk, run time 4h 04m

Last update 2026-10-30 20:12 UTC

Now building on d2d

  • d2d is an open-source reimplementation of the Diablo II engine. It lets the bot run headless (no screen) and far faster than real time. Measured with the bot attached: 22 to 33 times faster.
  • On 2026-10-30 we decided to make d2d the main way the bot runs. The original-game path is frozen: it keeps working, and it stays as the reference we compare against.
  • Progress so far: a fresh Sorceress reaches level 5 in about 3 to 4 hours of game time, which takes minutes of real time. The bot's loop on d2d is still being tuned.
  • Goal, not built yet: the bot and d2d packaged in one container, so a friend can start it with a single command.

d2d is the work of the d2decomped project (GPL-3.0). Our fixes to it go upstream as open pull requests. See d2decomped, pull requests #127 and #128.

Why we are making it

What is different about it

How it works

Where we are

Three stages, each made of milestones. Tap a milestone to see its checks.

Alpha: a reliable Act 1 bot on the product path

47%
M0 Foundations: the product path runs live64%
2 of 7 checks verified
  • Game memory readable without CAP_SYS_PTRACE: subreaper reads its descendant, other processes get the fd via SCM_RIGHTSverified
  • d2bot --managed launches the game, logs in through OOG and reads memory with no setcap, on one instance, then plays a 10-minute goalverified
  • Start, stop, helper and restart of a game go through internal/launch (no bash/ssh in the product path); sentinel uses itpartly done
  • d2input helper survives a 2 h bot run at bot command rates with 0 deathspartly done
  • (details not shown on the public page)partly done
  • Save snapshot before every game start and after every Save and Exit, checksum verify on load, restore tested once livepartly done
  • Measured: what a kill -9 loses, and whether the map id is stable across Save and Exit (F3, F10)partly done
A Act 1 self-leveler: clvl 1 to 15, 2 h unattended50%
2 of 11 checks verified
  • Fresh clvl 1 Sorceress reaches clvl 12 within 2 h, and clvl 15 in Act 1 within a further 2 h, unattendedpartly done
  • Two 2 h runs on two characters (different seeds) pass the m1 soak profilenot yet
  • <= 1 death per hour; no death with an unused healing potion in the belt and life above the chicken threshold 1 s beforenot yet
  • Death inside a bot run: overlay dismissed, respawn, corpse policy decided, back to the goal, 3 times without helppartly done
  • (details not shown on the public page)partly done
  • Stat and skill points spent per the build plan within one game of gaining them; new skill bound to a hotkeyverified
  • Gear pass buys or equips a better item inside the bot loop at least once per 2 h runpartly done
  • Ladder rungs >= 3 at most 1 per hour, longest no-progress window < 5 min, sentinel actions <= 2 per hourpartly done
  • Bot and game RSS growth < 5 %/h after 15 min; fds, threads, goroutines flatpartly done
  • A managed, unattended run of 60+ minutes with no human input and no capability on the product pathverified
  • Navigation and town work on more than one map seed and character without absolute coordinatespartly done
B Normal Act 1 complete: quests, Andariel, hop to Act 240%
1 of 11 checks verified
  • (details not shown on the public page)partly done
  • Step/Plan executor (internal/task) with sim fakes; quest handlers are data plus shared primitivesverified
  • NPC dialog rows for Act 1 quest NPCs (Akara, Kashya, Charsi, Warriv, Cain) picked by recorded index and verified by effectpartly done
  • Den of Evil cleared and reward claimed unattendedpartly done
  • Blood Raven and the Countess killed unattended with boss scripts; Andariel killed unattendedpartly done
  • Act 1 to Act 2 through Warriv; Lut Gholein waypoint taken; bot runs in Act 2 townpartly done
  • Corpse retrieval succeeds in >= 80 % of deaths where the policy retrieves (>= 5 sampled)partly done
  • Fresh character from clvl 1 to standing in Lut Gholein with all Act 1 required quests, one run, 0 human inputnot yet
  • Every Act 1 quest route (Den, Burial Grounds, Monastery to Catacombs 4) is walkable by the bot, in more than one seedpartly done
  • The in-memory quest source is the first source of the bot quest reader and the campaign verifies steps by memory, not by save at menusnot yet
  • (details not shown on the public page)not yet
G1 Day-long soak on the product path (24 h)37%
1 of 8 checks verified
  • 24 h soak on one instance in managed mode (Act 1 leveling then Countess/Andariel runs), m3 profile passesnot yet
  • Sentinel runs in the product topology (in-process or fd-passing, no setcap) and passes the drill table plus a real death and a forced Wine crashpartly done
  • Bot ladder rung 4 (game restart) wired; a hang or crash loses <= 1 save cycle; save cycle knob (leave and re-enter every N min) activenot yet
  • Every failsafe action, death and pause is visible on the dashboard and the event log; a self-paused bot shows whypartly done
  • 0 human or agent interventions during the 24 h (operator log)not yet
  • (details not shown on the public page)verified
  • Scheduled game recycle (Save and Exit, stop, start, login) wired between goals; the soak labels it and the sentinel does not count it as a manual restartpartly done
  • Recovery rungs (ladder rung >= 3, sentinel actions, chicken exits) per hour recorded in every soak report and falling between soakspartly done

Beta: Normal complete, installable by a friend

30%
C1 Normal Acts 2 and 38%
0 of 6 checks verified
  • Act 2 mercenary hired, revived after a forced death, equipped; merc treated as friendly by combatpartly done
  • Waypoint tabs for acts 2-5 and cross-act travel worknot yet
  • Horadric Cube found and used (staff assembly, Khalim's Will)not yet
  • Horadric Staff, Tal Rasha's Tomb (correct tomb), Duriel killed, hop to Act 3 via Meshifnot yet
  • Khalim's relics, Council, Mephisto killed, red portal to Act 4not yet
  • Acts 2-3 in one unattended run, deaths <= 1 per hournot yet
C2 Normal Acts 4 and 5, Baal, hop to Nightmare0%
0 of 5 checks verified
  • Chaos Sanctuary seals opened, seal bosses and Diablo killed, hop to Act 5not yet
  • Ancients (no-portal constraint), Worldstone Keep, Baal waves and Baal killednot yet
  • Difficulty screen used; character enters Nightmare Act 1not yet
  • Fresh clvl 1 to Nightmare entry unattended within 40 h wall time, <= 1 death per hour averaged, 0 human input after startnot yet
  • Each act's required quests and hops are Steps with offline tests and one recorded arena fixture per bossnot yet
F Headless container and setup wizard, usable by a friend41%
1 of 6 checks verified
  • Container image without Blizzard bytes builds; Wine, Xvfb, subreaper, memfd work inside with no caps and no networkverified
  • D2 1.14d runs in the container (plain Wine or pinned Proton), renders on Xvfb, the bot reads memory and sends input, one goal runs 30 minnot yet
  • Wizard path on an empty volume: game files (installers or existing dir) -> CD keys typed in the installer via the browser viewport -> patch -> data extract -> character created -> first goal, no shellpartly done
  • d2doctor passes on two hosts (the worker host desktop and a container) and prints an actionable fix for each detectable failurepartly done
  • Someone other than the user and the agents installs it from the docs on their own host and reaches a running goalnot yet
  • Binary upgrade keeps state (versioned state files with migrations); runner/Proton version pinned and checked at startpartly done
G2 Multi-day soak (72 h)0%
0 of 4 checks verified
  • 72 h soak, v1 profile passes, 0 manual restarts, report producednot yet
  • Log rotation and a disk guard (pause before the data dir runs out); measured in the soaknot yet
  • Human-needed state (self-pause, crash loop) sends a notification to the phonenot yet
  • Soak mixes goals (leveling, farm runs, idle windows, a difficulty or act change) through the goal managernot yet

Good-bot gate: the game layer may start

26%
D1 Nightmare playthrough0%
0 of 4 checks verified
  • Nightmare Acts 1-5 unattended, deaths <= 2 per hour (XP loss counted)not yet
  • Teleport-based navigation (clvl 18+) with walk fallbacknot yet
  • Cold-immune packs handled (Static Field, merc, skip rules) without death spiralsnot yet
  • Difficulty gate (clvl floor, resist after penalty, gold) decides the hop; resist read from statsnot yet
D2 Hell playthrough and farming runs12%
0 of 4 checks verified
  • Hell playthrough to Baal unattendednot yet
  • Farming goals (Countess, Andariel, Mephisto, Pindleskin, Baal) with per-run timing and drop logs; runs per hour within 2x of a scripted human baselinenot yet
  • Loot filter keeps runes, uniques, sets and bases per rules; stash management never fills the stashnot yet
  • Gear plan uses only runewords available offline (ladder flags checked)partly done
H Good-bot gate40%
2 of 10 checks verified
  • (details not shown on the public page)not yet
  • Every Tuning knob has metadata (label, unit, range, direction); every profile stays in range and never beats the defaultverified
  • Handicap profiles measured live: each built-in profile is slower (XP/h, seconds per run) and stays within the death boundnot yet
  • Per-character telemetry the game layer can price: XP/h, seconds per run, deaths/h, gold/h, drops per run, from measurements not constantspartly done
  • (details not shown on the public page)not yet
  • Opus review of the gate finds no blockernot yet
  • Combat is class-agnostic: a data-driven profile fights a second class live (left/right hands, aura upkeep, melee)verified
  • Leveler builds and gear scoring for the second class, with skill-ID read-back, run live in the bot looppartly done
  • A mercenary is hired, revived and equipped by the botpartly done
  • Cheat allow-list and sentinel character map come from config, so a second class can be created, restarted and cheated without code editspartly done

Being worked on

What shipped

Nothing merged in this window.