Giter VIP home page Giter VIP logo

qwop-controls's Introduction

QWOP Controls

Build Status Javadoc

Controlling the game QWOP.

Personal research code, not well-formatted for external use.

Development

All development is being done in IntelliJ after a recent switch from Eclipse. The IntelliJ project files are included in the repository here.

Maven is used to handle fetching dependencies and building.

Running

    mvn -e exec:java -Dexec.mainClass=FOO

Documentation

Javadoc is being filled out bit by bit as I am trying to improve the structure of the project. The Javadoc is directly hosted from the /docs/ directory on a github.io site. This directory and the Javadoc itself can be regenerated by running:

    mvn javadoc:javadoc
Writeups and presentations

Go here.

Testing

Unit tests are still fairly sparse as coding practices are getting up to speed.

Things to note:

  1. Substantial structuring changes as the project is migrated from BitBucket.

  2. For larger tree build, memory use is high. Increase Java heap space to prevent OutOfMemoryError. e.g. for 10Gb:

     export _JAVA_OPTIONS="-Xmx10g"
    

    View settings with:

     java -XshowSettings:vm 
    

qwop-controls's People

Contributors

mws262 avatar dependabot[bot] avatar

Watchers

James Cloos avatar  avatar

qwop-controls's Issues

Add smarter controller to UCB rollout policy

UCB rollout policy takes random actions. It would be cool to use the sort-of-bad-but-better-than-random neural network controller as the rollout controller. At very least, anything better than random.

Make bootstrapping easier again

Since switching to the yaml configuration model, using the same model at the same checkpoint for evaluation and control became much harder. I don't actually know a great way to do this, but let's figure it out.

Eliminate TreeWorker pooling

TreeWorker pooling was worthwhile when each game had to be on its own classloader. Now that this is no longer the case with GameUnified. The complexity added by using pooling is likely not worth it.

Fix worker monitor panel

Panel which monitors different threads in the tree UI doesn't work with the new yaml system. Fix at some point.

Make score propagation interface

It would be nice to be able to propagate values back along the tree in multiple ways.
Candidates:
Best overall
Average (current strategy)
Best of three with rollouts or value function evaluations

Make state normalization method part of the configuration

Spent a long time tracking down inconsistencies in controller results only to find that the state normalization method was hardcoded differently now than it had been a month ago. Make this part of the configuration to keep it more obvious.

Workers jam up too easily with the current node locking.

With the UCB sampler, workers tend to deadlock when there are a lot of workers. I think that some sections of the tree might be being locked from other workers too much. When one worker is expanding from a node, it doesn't allow other works to also try another potential action from that node. This should be changed.

mvn test spews way too much to console

Lots of logging spams up the console. Also on the CI server, there are graphics errors that somehow don't cause the build to fail, but still seem like bad things.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.