Logbook 4: Gathering data for algorithms to implement, fitness function and evaluation techniques

Anasthasia Manu
2 min readMar 15, 2021

So I’m having a hard time balancing coursework and dissertation but I have finally started to search around in terms of the some of the algorithms I want to implement and some examples of code that has been implemented. I want to make a platformer generator in AR (if possible) loosely Super Mario Bros based. Definitely want to used Graph Grammars, looking into CPPNs/NEAT if it is possible to convert what I find to 3D spaces.

I will note down below the links that might help with implementing such things:

DREAM IMPLEMENTATION:

NEAT implementations online:

  1. GitHub — InderPabla/NEAT
  2. SharpNEAT Neuroevolution Framework (sourceforge.io)

NEAT PCG — content generation:

  1. Neuroevolution of content layout in the PCG: Angry bots video game

MAP-Elites pseudocode:

  1. Interactive Constrained MAP-Elites
  2. Another pseudo implementation

Char-RNN Super Mario generation level:

  1. Machine Learning is Fun! Part 2. Using Machine Learning to generate… | by Adam Geitgey | Medium

REALISTIC IMPLEMENTATION:

N-grams in platformer implementations/ 3D objects:

  1. View N-gram Network for 3D Object Retrieval
  2. Linear levels through n-grams
  3. Composing Video Game Levels with
    Music Metaphors through Functional Scaffolding

Genetic algorithm:

EA + mutation and crossover with tree genotype. One that focuses on population diversity. Island Model? Maybe use similar evolutionary algo used in ANGELINA → co operative coevolutionary ea , improvement of co operative evolutionary ea

  1. Mario Level Generation From Mechanics Using Scene Stitching
  2. Illuminating search spaces by mapping elites
  3. Evolutionary Algorithms for solving multi-objective problems
  4. PCG of balanced levels for 3D Paintball Game
  5. PCG in 3D game
  6. Improving Evolutionary Algorithms

Genetic algorithm implementations (explore):

  1. AForge.NET Framework Documentation :: Table of Content
  2. An Introduction to Evolutionary Algorithms and Code with Genetic Algorithm in Unity. | by Venkatesh Tata | Medium
  3. Mario level generation using the Mario Bros engine (here)

EVALUATION:

I will also need to get a solid evaluation technique so any fitness function I implement can make sense. Currently I am thinking of the following for fitness function/evaluation:

  1. Number of different path to goal
  2. Number of tiles not visited
  3. Can be completed (Through agent modelling- A* agent or sarsa) within a set period (1/2mins)(100 Iterations?)
  4. Number of different tiles
  5. Broken Rules
  6. No Goal
  7. No Obstacles
  8. length of shortest path to exit
  9. Percentage of area used by shortest path
  10. Ability to produce playable games on different AR planes
  11. Entropy → measure sections of completed ground level (example here)
  12. Sparseness →a layout is sparse if the average distance between two NPCs or actionable powerups/coin is high (look at here for more info)

Weighted combination of some of the above use a heuristics for fitness function. Will get back to this when I have a clearer idea!

--

--