← all repositories
glample/Arnold

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.

536 stars Python AgentsDomain Apps
Arnold
Velocity · 7d
+0.2
★ / day
Trend
steady
star history

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 vizdoom works 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.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.