Teaching AI to circle-strafe since 2017
A PyTorch DOOM bot that won the ViZDoom AI Competition by learning to frag with deep reinforcement learning.

What it does
Arnold trains neural networks to play DOOM scenarios through raw screen pixels and game variables. It bundles 17 training maps, DQN/DRQN implementations, and five pretrained models—including the ones that actually won the 2017 ViZDoom AI Competition.
The interesting bit
The project doesn’t just slap a standard DQN on DOOM. It adds auxiliary prediction tasks (like “where is the enemy?”), supports recurrent LSTM layers for temporal reasoning, and lets you randomize textures during training so the agent doesn’t just memorize wall patterns. There’s even a dedicated mode to make the agent turn around manually when it gets stuck, which is either clever engineering or a quiet admission that RL agents are still bad at not corner-camping.
Key highlights
- Won the 2017 ViZDoom AI Competition (both tracks)
- Supports DQN and DRQN with LSTM/GRU recurrence
- Auxiliary game-features prediction (target detection, enemy presence)
- 17 bundled maps + 5 pretrained models, including a “super shotgun” agent described as “extremely difficult to beat”
- Can pit multiple Arnold agents against each other, or against a human player
Caveats
- Requires Python 2/3 and manual ViZDoom installation; the README warns you to ensure
import vizdoomworks from any directory - Some hyperparameters are scenario-specific and the tuning surface is large (the example config block is ~30 flags)
- Best Demo award at AAAI 2017, but the repo itself appears largely unmaintained since
Verdict
Worth a look if you’re studying RL in 3D environments or need a baseline for ViZDoom research. Skip it if you want a modern, maintained framework—this is a research artifact with papers attached, not a living toolkit.