Python vs Punch Out
summary
Uses neat-python to evolve neural nets that play an NES Punch-Out!! ROM via an NES emulator and pykeyboard input, scoring networks by a custom fitness (10,000,000 for a win; 1,000,000 per knockdown; 1,000 per energy-difference; 1 per second survived; 2 per heart; 10 per star). Evolution finds quirks: a single-KO exploit and a clock-stop bug, so fitness is adjusted. Results: better-than-author in ~15 minutes, three-round victory over Mr. Dream after ~3 days, runs on a modest gaming laptop and benefits from parallelization.
AI-written summary · about
chapters (18)
- 0:00Introduction
- 0:49About me
- 1:14About Punch Out
- 6:50Visual Representation
- 9:08Neural Networks
- 11:46Live Demo
- 13:31Bugs
- 15:15Fitness Function
- 16:27Grass of Progress
- 16:59Mr Dream
- 18:38How Long
- 20:00What would I do differently
- 21:27Results
- 23:08My Code
- 26:09Interface
- 26:49Generation
- 29:04Fitness points
- 30:49Conclusion
related talks
31mUsing Python to build an AI to play and win SNES StreetFighter II
26mFrom 3 to 300 fps: NES Emulation in Python and Cython
57mGame Programming with Python
29mJourneys through JuPyteR
36mHow to Optimize your Python Program for Slowness
50mBuilding a Pong playing AI in just 1 hour (plus 4 days training...)
49mYou Used Python for What?!
46mTyping better and potentially faster with python
