DOOM self-play experiment

Two compact tactical policies, trained against a league of earlier opponents in the real DOOM engine. This is parameter search over existing behaviors, not a neural network learning DOOM from pixels.

32480 simulated matches · 207.9 seconds of wall time · seed 20260905

Player improvement

+0.013

Paired score change against the original opponent.
95% bootstrap interval: [-0.088, +0.109]

Inconclusive at 95%

Enemy improvement

-0.004

Paired score change against the original opponent.
95% bootstrap interval: [-0.097, +0.096]

Inconclusive at 95%

Held-out matchups

All cells use the same separate evaluation seeds. Training uses E1M1/E1M2 combat drills; E1M3 is unseen during selection. Wins require killing all opponents; death is a loss; the time limit produces a draw. Health and damage statistics remain original DOOM values.

Player / enemy checkpointPlayer winsEnemy winsDrawsPlayer score
initial / initial1682400.884
initial / middle1702110.913
initial / final1692300.888
middle / initial1761600.989
middle / middle1731720.964
middle / final1741620.976
final / initial1672410.897
final / middle1712010.939
final / final1751610.988

Promotion history

Each candidate must beat its incumbent on separate validation encounters against the same opponents. These changing matchups are not directly comparable across generations.

GenerationSideValidation score gainDecision
1player-0.088Kept incumbent
1enemy+0.035Promoted
2player+0.137Promoted
2enemy-0.075Kept incumbent
3player+0.031Promoted
3enemy+0.036Promoted
4player-0.036Kept incumbent
4enemy+0.000Kept incumbent
5player-0.023Kept incumbent
5enemy+0.009Promoted
6player+0.043Promoted
6enemy-0.003Kept incumbent
7player+0.010Promoted
7enemy-0.029Kept incumbent
8player+0.023Promoted
8enemy+0.019Promoted
9player-0.024Kept incumbent
9enemy-0.021Kept incumbent
10player+0.017Promoted
10enemy-0.017Kept incumbent
11player+0.027Promoted
11enemy-0.010Kept incumbent
12player+0.030Promoted
12enemy+0.034Promoted
13player-0.029Kept incumbent
13enemy-0.011Kept incumbent
14player+0.001Kept incumbent
14enemy+0.023Promoted
15player+0.034Promoted
15enemy-0.022Kept incumbent
16player-0.036Kept incumbent
16enemy+0.023Kept incumbent

Interpretation

The bots receive structured line-of-sight observations and geometry queries. Short combat drills do not establish full-level competence or improvement against humans. Confidence intervals summarize these sampled encounters, not every DOOM map. Trained policies are saved for further experiments and are not automatically enabled in the browser.

Full results and checkpoints · Raw match results

Engine, trainer, and IWAD fingerprint: abeaa2dd596291b27bffdda1ad38db4fd28b9997503a86ef2afe887697423978