Giter Club home page Giter Club logo

3dpinballai's Introduction

3D Pinball AI

3D Space Cadet Pinball - Deep Reinforcement Learning is an open-source example of create an AI in .Net using (Unity ML-Agents) and a game ('3D Space Cadet Pinball'), to serve as a learning environment for training intelligent agents to play pinball without supervision.

The Pinball agent is rewarded by the score going up, and all actions and frames that lead to a higher score are remembered. Initially the actions will be random (using a curiosity model) but over time the agent will choose actions that lead to the highest reward (score).

Features

  • A PinballAgent that can learn from an external game (3D Pinball) by watching the screen as a visual observation.
  • (TODO:) Use behaviour cloning to watch a recording of the highest score for 3d Space Cadet Pinball
  • (TODO:) Fix scaling limitation.

Prerequistes

Training the PinballAgents

The code

  • The brain (Pinball Agent) implemented in .Net
  • The eyes (External Window Manager) used to screen capture external window, and send keys to it. You could say one eye watches the window frames and the other looks at the score.
  • The AI config (trainer_config.yaml) the unity ML agents training config.

Limitation

  • The 3D Space Cadet Window must be in focus during training, with no windows overlapping it.
  • Currently the PinballAgent can only read the score when Windows is set to 100% scale when training. This is due to the method chosen for detecting the score by comparing pixels.

How to change display scaling settings using recommended values

To change a display scaling size using the recommended settings, use these steps:

  1. Open Settings.
  2. Click on System.
  3. Click on Display.
  4. Under the "Scale and layout" section, use the drop-down menu and select the 100% scale setting.

Additional Resources

Credit

Initial concept and code developed by Elliot Wood

Community and Feedback

This is an open-source project and we encourage and welcome contributions. Please add detail when submitting new feature branches.

If you run into any problems using this project, submit an issue and make sure to include as much detail as possible.

License

Apache License 2.0

3dpinballai's People

Contributors

elliotwood avatar

Watchers

 avatar  avatar

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.