Last year I created the NPC Maker project and this year I’m going to advertise it and invite collaboration.
The purpose of the NPC Maker is to study the evolution of intelligent life in simulated environments.
I’ve carefully designed interfaces around AIs, environments, and critical algorithms so that each component can be replaced without changing any of the other components. Any AI can interface with any environment. My hope is that this project grows into an ecosystem of tools and components that are mostly compatible with each other.
If anyone would like to help, the NPC Maker needs:
Environments for AIs to inhabit or puzzles for AIs to solve
AI or control system implementations
An implementation of the NEAT algorithm
If this research agenda is of interest to anyone, speak up, and I’d love to discuss it more and help you get started using the NPC Maker!
The NPC Maker is designed for a more general class of problem than the gymnasium. The gym assumes that all agents have an explicit reward signal which is not always true. The gym also assumes that the environments have a fixed number of agents which is not always true either, for example in an RTS game agents are frequently created and killed. And finally the gym does not implement any evolutionary algorithms, whereas the NPC maker is designed to support any & all evolutionary algorithms.
Technically speaking, I designed the NPC Maker out of frustration that my code was rarely transferable from one experiment to the next. The NPC Maker is designed for maxium isolation between components so changes to each component should be very self contained. The NPC Maker’s API is simple, flexible, well-documented, programming-language-agnostic, and crash-tolerant.
Id like to take a moment to complain that the gym does not label their observations or actions, instead the gym uses vectors of numbers. This works if youve got a very small number of sensors or motors, but falls apart with realistic animal bodies that have hundreds of muscles and thousands of sensors. Someday your program will break and to debug it you will need to know the exact mapping between the body and the brain. Im sure someone will say “why cant your learning algorithm just figure out what each sensor/motor does through trial and error?” Which isnt a very helpful answer.