The
development work on the framework has stopped. The necessary time to
keep up with the crazy nature of reinforcement learning, the bug fixing
and community support cannot be justified anymore (sadly). The
repository will remain up as it should be, for people interested in the
field, a very exhaustive resource code-wise to interact with games for
machine learning. There is a ton to learn by snooping through the code.
Have Fun!
Serpent.AI is a simple yet powerful, novel framework to assist
developers in the creation of game agents. Turn ANY video game you own
into a sandbox environment ripe for experimentation, all with familiar
Python code. The framework's raison d'être is first and
foremost to provide a valuable tool for Machine Learning & AI
research. It also turns out to be ridiculously fun to use as a hobbyist
(and dangerously addictive; a fair warning)!
The framework features a large assortment of supporting modules that
provide solutions to commonly encountered scenarios when using video
games as environments as well as CLI tools to accelerate development.
It provides some useful conventions but is absolutely NOT opiniated
about what you put in your agents: Want to use the latest, cutting-edge
deep reinforcement learning algorithm? ALLOWED. Want to use computer
vision techniques, image processing and trigonometry? ALLOWED. Want to
randomly press the Left or Right buttons? sigh ALLOWED. To top
it all off, Serpent.AI was designed to be entirely plugin-based (for
both game support and game agents) so your experiments are actually
portable and distributable to your peers and random strangers on the
Internet.
You'll also be glad to hear that all 3 major OSes are supported: Linux, Windows & macOS.
Experiment: Game agent learning to defeat Monstro (The Binding of Isaac: Afterbirth+)
Background
The project was born out of admiration for / frustration with OpenAI Universe.
The idea is perfect, let's be honest, but some implementation details
leave a lot to be desired. From these, the core tennets of the framework
were established:
Thou shall run natively. Thou shalt not use Docker containers or VNC servers.
Thou shall allow a user to bring their own games. Thou shalt not wait for licensing deals and special game APIs.
Thou shall encourage diverse and creative approaches. Thou shalt not only enable AI flavors of the month.