Modular Multiobjective (Hyper) Neuro-Evolution of Augmenting Topologies + MAP-Elites: Java code for evolving intelligent agents in Ms. Pac-Man, Tetris, and more, as well as code for Procedural Content Generation in Mario, Zelda, Minecraft, and more!
Currently, when a list of possible blocks is defined, the CPPN has to have a separate output for each one. This is a bit extreme. What we did in Python was allow the CPPN to have a fixed number of block outputs, but evolve which blocks were represented by each of those possibilities.
I think we can implement something like this by using the ShapeInnovationGenotype as inspiration. It is a combination of a CPPN and a BoundedRealValuedGenotype. However, what we need here is a combination of a CPPN and a BoundedIntegerValuedGenotype where each int represents the index of a block in the available block set.
The new genotype can be called MinecraftCustomBlocksGenotype, but I worry that lots of changes have to be made to the existing code to handle it. Each time a regular TWEANNGenotype is expected, we may need a special case to handle this new possibility instead.
We did this in Python (https://github.com/schrum2/EvoCraft-SCOPE/issues/6), but never did it in Java.
Currently, when a list of possible blocks is defined, the CPPN has to have a separate output for each one. This is a bit extreme. What we did in Python was allow the CPPN to have a fixed number of block outputs, but evolve which blocks were represented by each of those possibilities.
I think we can implement something like this by using the
ShapeInnovationGenotype
as inspiration. It is a combination of a CPPN and aBoundedRealValuedGenotype
. However, what we need here is a combination of a CPPN and aBoundedIntegerValuedGenotype
where each int represents the index of a block in the available block set.The new genotype can be called
MinecraftCustomBlocksGenotype
, but I worry that lots of changes have to be made to the existing code to handle it. Each time a regular TWEANNGenotype is expected, we may need a special case to handle this new possibility instead.