a bot that learns to play super mario bros. a work in progress. kinda sucks right now.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Connor Olding dc8969469d move param/sigma decay into es methods 1 year ago
Base.lua forgot this 2 years ago
README.txt add video link 1 year ago
ars.lua move param/sigma decay into es methods 1 year ago
config.lua add PowerSign momentum to ARS, antithetic by default 1 year ago
gameconfig.lua tweak inputs: add power-up status, remove top/bottom tile rows 1 year ago
main.lua move param/sigma decay into es methods 1 year ago
nn.lua add normalizing and no-biasing features to DenseBroadcast 1 year ago
presets.lua update presets 1 year ago
smb.lua tweak inputs: add power-up status, remove top/bottom tile rows 1 year ago
snes.lua move param/sigma decay into es methods 1 year ago
strict.lua split strictness to its own file 1 year ago
util.lua add PowerSign momentum to ARS, antithetic by default 1 year ago
xnes.lua move param/sigma decay into es methods 1 year ago

README.txt

this program is largely incomplete and not in a presentable state.
please be mindful when sharing it.
however, feel free to copy any snippets of code you find useful.

video of it in action: https://youtu.be/cD43DWa-3fM

usage:
0. edit config.lua as you please
1. open FCEUX 2.2.3
2. load Super Mario Bros. (U) (CRC32: 3337EC46)
3. open a new Lua script window (it's in the File menu)
4. browse and open main.lua

TODOs: (that i can remember right now)
- normalize `for i=a,b` code style
- normalize and/or embed sprite type inputs
- settle on a network architecture
- compute how many input neurons the network needs instead of hardcoding
- add some detection for enemies later in the game
- fix cfg.enable_overlay (smb.lua doesn't see it being changed)
- maybe log the average distance from init?

naive:
- learn any combination of buttons, starting from title screen
- learn to run network without frameskip
- learn other games