Skip to content

An AI for playing NES Tetris at a high level. Based primarily on search & heuristic, with high quality board evaluation through value iteration.

Notifications You must be signed in to change notification settings

airkongo/StackRabbit

 
 

Repository files navigation

StackRabbit

An AI that plays NES Tetris at a high level. Primarily based on search & heuristic, with high-quality board eval through value iteration.

Due to the logistics of playing NES Tetris, there are two different clients for interacting with the main AI backend:

  • fceux contains a Lua client for playing in the FCEUX emulator (primary client)
  • console_client contains a python client that runs on Raspberry Pi to play on a real console.
  • TetrisTrainer is a public web client (try it live!) that lets users draw a board and ask AI about the best placements.

Then there are two components of the backend:

  • server contains the primary server, written in Node.js. It handles the request parsing, and the delegation to worker threads. It also contains lots of deprecated AI code, since the initial implmentation was entirely in JS (oops).
  • cpp_modules contains modules that perform the core AI computation at literally 100x the speed of the original JS implementation. The main flow involves a Node server thread sending a game state to the C++ module, which returns the value of each possible move as an encoded JSON map.

About

An AI for playing NES Tetris at a high level. Based primarily on search & heuristic, with high quality board evaluation through value iteration.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 66.6%
  • TypeScript 26.1%
  • Lua 3.2%
  • Python 1.9%
  • JavaScript 1.8%
  • C 0.4%