Hybrid Encoding For Generating Large Scale Game Level Patterns With Local Variations
This work addresses the challenge of generating cohesive and varied game levels for game designers and developers, though it is incremental as it builds on existing CPPN and GAN-based methods.
The paper tackles the problem of generating cohesive large-scale game levels with local variations by proposing a hybrid approach that evolves CPPNs first and then latent vectors, combining the benefits of both methods. The result shows that this hybrid approach covers areas that neither CPPNs nor directly evolved latent vectors can, and achieves comparable or superior Quality-Diversity (QD) scores in Super Mario Bros. and The Legend of Zelda.
Generative Adversarial Networks (GANs) are a powerful indirect genotype-to-phenotype mapping for evolutionary search. Much previous work applying GANs to level generation focuses on fixed-size segments combined into a whole level, but individual segments may not fit together cohesively. In contrast, segments in human designed levels are often repeated, directly or with variation, and organized into patterns (the symmetric eagle in Level 1 of The Legend of Zelda, or repeated pipe motifs in Super Mario Bros). Such patterns can be produced with Compositional Pattern Producing Networks (CPPNs). CPPNs define latent vector GAN inputs as a function of geometry, organizing segments output by a GAN into complete levels. However, collections of latent vectors can also be evolved directly, producing more chaotic levels. We propose a hybrid approach that evolves CPPNs first, but allows latent vectors to evolve later, combining the benefits of both approaches. These approaches are evaluated in Super Mario Bros. and The Legend of Zelda. We previously demonstrated via a Quality-Diversity algorithm that CPPNs better cover the space of possible levels than directly evolved levels. Here, we show that the hybrid approach (1) covers areas that neither of the other methods can, and (2) achieves comparable or superior QD scores.