Generating Mega Man Levels With Generative Adversarial Networks (GANs)
This page presents research in Procedural Content Generation via Machine Learning done by undergraduate student Benjamin Capps as
part of Southwestern University's Summer research program
SCOPE.
The research makes use of the MM-NEAT software package,
though neural networks are not evolved. Rather, real-valued latent vectors are evolved and sent as input to pre-trained GANs
which output Mega Man level segments. There are two approaches. The OneGAN approach uses a single GAN trained on all
Mega Man level segments in a training set derived from the Video Game Level Corpus.
The MultiGAN approach instead uses a separate GAN for each type of level segment: horizontal, upward, downward,
upper-left corner, upper-right corner, lower-left corner, and lower-right corner.
Levels evolved using each approach were compared in a human subject study to see which levels were more fun, challenging, etc.
In particular, we were interested in determining which levels looked more as if they were designed by humans. All evolved levels
are available to play below by simply clicking a link. The levels can be played
after installing Mega Man Maker.
Presentation for Genetic and Evolutionary Computation Conference
Pre-recorded video presentation for the virtual GECCO 2021 conference.
Video Explanation
This is a brief video introduction to the research filmed by Ben.
Presentation at Southwestern University Homecoming
After completing a human subject study, further analyzing the results, and getting our paper accepted to the Genetic and Evolutionary Computation Conference, Ben gave a presentation on the research to an audience at Southwestern University's Homecoming event. Ben also reflects on the SCOPE summer research experience that made this work possible.
OneGAN
The latent vector inputs evolved with this approach were sent to a single GAN trained on all Mega Man level segments from VGLC.
The latent vector inputs evolved with this approach were sent to different GANs depending on where the level segment was going to be placed
with respect to the previously placed segment. This encourages a more natural, human-like flow between segments.