QWOPPER: a programmatic interface for QWOP
The intended goal of the project is to write a bot able to play QWOP.
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.
- Clone project:
git clone https://github.com/marwahaha/QWOPPER.git
(or download the ZIP) - Navigate into the directory:
cd QWOPPER
- Launch the graphical interface:
./gradlew run
(gradlew.bat run
on Windows). - Resize the graphical interface to half-screen, and open QWOP in the other half screen.
- Click Find game area. Enter a Gait "DNA" or press Random. Press Run and watch!
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) |
- You'll need to install Gradle.
- You can run the JAR directly with
java -jar build/libs/QWOPPER.jar
. - Lots of Gradle tips here.
- 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:
- Discussions (here, here, here) and videos (here, here, here, here, here, here) about running in QWOP.
- Other projects (here, here, here, here, here) about computers learning to play QWOP.
- Projects (here, here, here) about computers detecting and manipulating humanoid shapes.
- Articles (here, here, here) about gradient descent and genetic algorithms.
- Documentation about Levenshtein distance.
- (humorous) The Ministry of Silly Walks!