a bot that learns to play super mario bros. a work in progress. kinda sucks right now.
Go to file
Connor Olding 450bd70d99 update presets
too many changes to list (or even tell what's changed),
but most importantly, ARS has improved.
2018-06-28 09:49:01 +02:00
ars.lua fix and rewrite ARS telling (it was super broken!) 2018-06-21 17:13:35 +02:00
Base.lua forgot this 2017-06-30 06:17:26 +00:00
config.lua add PowerSign momentum to ARS, antithetic by default 2018-06-21 05:15:05 +02:00
gameconfig.lua tweak inputs: add power-up status, remove top/bottom tile rows 2018-06-13 20:18:10 +02:00
main.lua make ARS param decay relative to more stuff 2018-06-24 12:20:34 +02:00
nn.lua add normalizing and no-biasing features to DenseBroadcast 2018-06-24 12:18:30 +02:00
presets.lua update presets 2018-06-28 09:49:01 +02:00
README.txt add video link 2018-06-16 01:01:24 +02:00
smb.lua tweak inputs: add power-up status, remove top/bottom tile rows 2018-06-13 20:18:10 +02:00
snes.lua TODOs and delete an unused variable 2018-06-16 00:38:09 +02:00
strict.lua split strictness to its own file 2018-05-03 16:48:12 +02:00
util.lua add PowerSign momentum to ARS, antithetic by default 2018-06-21 05:15:05 +02:00
xnes.lua rename weight* to param* outside of nn.lua 2018-06-16 00:33:47 +02:00

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