a programmatic interface for QWOP
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
gradle/wrapper
src
.gitignore
LICENSE
README.md
build.gradle
gradlew
gradlew.bat

README.md

QWOPPER: a programmatic interface for QWOP

The intended goal of the project is to write a bot able to play QWOP.

Evolution

2008, Bennett Foddy

Bennett Foddy created the popular computer game in 2008. Since then, millions of people have played!

The Wikipedia entry has more background on the game.

2011, Laurent Vaucher

Laurent Vaucher built the first version of "QWOPPER". He tried using genetic algorithms to learn to play the game.

That work is detailed in their blog post.

2013, Steven Ray

Steven Ray developed an improved version of "QWOPPER" while a Master's student at Sac State. He along with his advisor V. Scott Gordon and Laurent Vaucher successfully submitted a paper titled "Evolving QWOP Gaits" to Genetic and Evolutionary Computation Conference 2014.

See the Youtube video here or download the paper here. The DOI is 10.1145/2576768.2598248.

2019, Kunal Marwaha

I've cleaned up and updated this application for modern (circa-2019) tooling. With this program, I'm aiming to get a good walking gait in QWOP. I may or may not use genetic algorithms, as I have some idea of what "walking" looks like.

My code is here.

Using

  1. Clone project: git clone https://github.com/marwahaha/QWOPPER.git (or download the ZIP)
  2. Navigate into the directory: cd QWOPPER
  3. Launch the graphical interface: ./gradlew run (gradlew.bat run on Windows).
  4. Resize the graphical interface to half-screen, and open QWOP in the other half screen.
  5. Click Find game area. Enter a Gait "DNA" or press Random. Press Run and watch!

Gait "DNA"

The gait "DNA" is a string of letters A-P. Each letter encodes which of [Q, W, O, P] are pressed, each held for 150ms. Each of 2*2*2*2=16 options are listed below.

When the gait string is complete, the computer starts again from the first letter. This continues until the runner crashes, the game is complete (100 meters), or the program is stopped.

Letter Input
A Q
B W
C O
D P
E QW
F QO
G QP
H WO
I WP
J OP
K QWO
L QWP
M QOP
N WOP
O QWOP
P (none pressed)

Contributing tips

Acknowledgements

  • To Bennett Foddy for creating the game and thoughts on physics in game design.
  • To Laurent Vaucher and Steven Ray for previous work, and allowing their code to be MIT-licensed.
  • To Henry Chang for testing the software and discussions on gradient descent, genetic algorithms, and image processing.
  • To Allan Peng, Madison Ashley, and Mike Singletary for discussions about programmatically playing QWOP.

Thanks also to: