<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Pathfinding Agents for Platformer Level Repair</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Seth Cooper</string-name>
          <email>se.cooper@northeastern.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Anurag Sarkar</string-name>
          <email>sarkar.an@northeastern.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Northeastern University</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>A key concern for procedural level generation is ensuring that generated levels are in fact playable. One approach for determining playability is using pathfinding agents to test if generated levels can be completed. This typically involves following an iterative loop of generating candidate levels until the agent is able to successfully complete a playthrough, discarding the failed level and starting the generation process over each time the agent fails. In this paper, we present a new approach for generating playable levels that leverages pathfinding agents, not to simply test levels for playability, but to perform level repair to fix generated levels that are unplayable. By augmenting a simple pathfinding agent to be able to take moves that would require modifying the level, our approach can fix unplayable levels without having to regenerate a new level from scratch. We compared our repair agent to a default agent on three PCGML level generators each for Super Mario Bros. and Kid Icarus, and found the repair agent was able to fix the majority of levels, taking time that ranged from similar to the default agent to around 4x its time.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Procedural content generation (PCG) refers to a set of
approaches for algorithmically generating content for games.
An important consideration for PCG methods is ensuring
functionality of generated content, which in the specific
context of game level generation means ensuring that
generated levels are playable. One approach for doing so,
particularly for techniques involving search-based PCG
        <xref ref-type="bibr" rid="ref20">(Togelius et al. 2011)</xref>
        and PCG via machine learning (PCGML)
(Summerville et al. 2018), is to follow a generate-and-test
methodology. Here, as the name suggests, a test is used to
check if a generated level satisfies desired constraints (such
as playability). If this test fails, the level is discarded, a new
level is generated, and the process continues until a desired
number of valid levels has been generated.
      </p>
      <p>A commonly used test in such approaches is the use of
pathfinding agents to check for playability, filtering out those
generated levels that the agents fail to complete. As
discussed in the related work, this approach has been used by
several prior works for generating playable levels; it restarts
the generation process no matter how the agent failed to
complete the level. However, not all unplayable levels are
generated the same, and a simple set of modifications might
be enough to render some of them playable without having
to regenerate them from scratch. Additionally, such
modifications could be determined by leveraging information
about where and how the agent would need to do something
impossible to complete the level and thus the ability to repair
an unplayable level could be incorporated into the
pathfinding agent itself, thereby aiming to replace the
generate-andtest loop with a single generate-and-fix pass, or increase the
likelihood of the test passing.</p>
      <p>In this paper, we introduce a new pathfinding agent
capable of repairing levels as part of testing levels for
playability. The agent is able to make some impossible moves as
it searches for a path through the level, and, if the resulting
path includes these moves, they are used to modify the level
in an attempt to repair it. In our approach, the level remains
unmodified as the agent searches for a path, which can lead
to finding paths with contradictions in them, such as both
moving through a non-solid tile and then jumping off of it
as if it were solid. We attempt to guide the agent away from
such moves.</p>
      <p>For evaluation, we compared our repair agent to a default
agent on three different PCGML level generators (two
ngrams and one VAE) each for Super Mario Bros. and Kid
Icarus, and found the repair agent to be able to repair the
majority of levels. The execution time for the repair agent
ranged from being similar to that of the default agent to
approximately 4x its time.</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>
        A body of prior PCG research has utilized pathfinding
agents, specifically based on A search, to help generate
playable levels. This has been particularly popular in
searchbased PCG techniques
        <xref ref-type="bibr" rid="ref20">(Togelius et al. 2011)</xref>
        where
playability as determined by the A agent is incorporated into the
objective function being optimized to search for levels.
Additionally, use of A agents has also been popular in PCGML
techniques where these agents have been used to annotate
levels with A paths with the hope that models trained on
them will generate levels with such traversable paths as well.
      </p>
      <p>
        Overall, there have been two popular approaches to
pathfinding agents that have been used in a number of works
for evaluating level playability and generating playable
levels. First, Robin Baumgarten’s physics-simulation agent
        <xref ref-type="bibr" rid="ref12 ref21">(Togelius, Karakovskiy, and Baumgarten 2010)</xref>
        , used with
Markov models
        <xref ref-type="bibr" rid="ref13">(Snodgrass and Ontan˜o´n 2014)</xref>
        , GANs
        <xref ref-type="bibr" rid="ref22">(Volz et al. 2018)</xref>
        , Quality-Diversity algorithms
        <xref ref-type="bibr" rid="ref23">(Withington 2020)</xref>
        , the GVG-AI domain
        <xref ref-type="bibr" rid="ref2">(Green et al. 2018; 2020)</xref>
        and the Mario AI framework (Khalifa et al. 2019).
Second, Adam Summerville’s tile-based agent
        <xref ref-type="bibr" rid="ref19">(Summerville,
Philip, and Mateas 2015)</xref>
        , used with LSTMs
        <xref ref-type="bibr" rid="ref14 ref16 ref17">(Summerville
and Mateas 2016)</xref>
        , Markov models
        <xref ref-type="bibr" rid="ref14 ref16 ref17">(Snodgrass and Ontan˜o´n
2016; 2017)</xref>
        and VAEs
        <xref ref-type="bibr" rid="ref10 ref9">(Sarkar et al. 2020)</xref>
        . Note that in all
these cases, the agent is used to determine whether a
generated level is playable or not rather than to modify the level.
Our work differs in that our agent can actively attempt to
repair a generated level if it is not playable.
      </p>
      <p>
        A number of prior works have focused on repairing
generated levels.
        <xref ref-type="bibr" rid="ref6">Jain et al. (2016)</xref>
        trained autoencoders to
generate and repair Mario levels while both
        <xref ref-type="bibr" rid="ref8">Mott, Nandi, and
Zeller (2019</xref>
        ) and
        <xref ref-type="bibr" rid="ref11">Shu et al. (2020)</xref>
        attempted to repair
defective GAN-generated Mario levels, with the former using
LSTMs and the latter using a hybrid approach combining
a multi-layer perceptron and genetic algorithms. We also
attempt to fix defective generated levels in this work but utilize
our pathfinding agent, instead of a trained model, to make
repairs.
      </p>
    </sec>
    <sec id="sec-3">
      <title>Method</title>
      <p>Here we describe the basic approach we used to allow a
pathfinding agent to attempt to repair a platformer level.</p>
      <p>
        For pathfinding, we started with the pathfinding agent
provided by the Video Game Level Corpus (VGLC)
        <xref ref-type="bibr" rid="ref16 ref17">(Summerville et al. 2016)</xref>
        . This tile-based pathfinding agent
considers two types of tiles: solid and non-solid. We made a
few minor updates, such as adding support for start and goal
tiles, and removing some shortcuts the agent could take to
move through solid tiles. We refer to this as the default
agent. Running this agent on a level gives a path from the
start to the goal, if there is one, which determines if the level
is playable.
      </p>
      <p>We augmented the default agent to create the repair agent.
The repair agent can take additional actions: in some cases
it can move through solid blocks or jump while above
nonsolid blocks. However, these actions have a very high cost,
high enough that the agent will not take them unless
necessary. After the repair agent has found a path, it goes back
through the path and looks for any high cost moves. If it
finds any, it then modifies the level appropriately:
modifying a solid tile to be non-solid if it was moved through, and
modifying a non-solid tile to solid if it was jumped off of.</p>
      <p>While this approach is relatively quick, it can result in the
repair agent making contradictory moves and modifications.
For example, the agent can jump up through a non-solid tile,
and then jump again from above that same tile, which would
result in a modification to place a solid tile, even though if
that solid tile had been there originally, the first jump would
not have been possible.</p>
      <p>To reduce the chance of these kinds of contradictory
moves, we prevent the agent from making some moves in
cases that seem likely to introduce contradictions, based
level</p>
      <p>playable
w/o with
rep. rep. not min med max</p>
      <p>modifications
(in repaired levels)
on which tiles have already been visited by the pathfinding
search. These include preventing the agent from walking on
solid tiles that have been visited, or starting a jump above
solid or non-solid tiles that have been visited. We also
prevent moves that would modify the start and goal tiles and
those under them. Notably, this does mean that the agent
will have different moves available depending on the order
in which nodes (and thus tiles) are visited by the pathfinding
search; thus we do not expect the agent to find an optimal
set of modifications. To check if the level is playable by the
default agent with the modifications, we confirm the default
agent can follow the path the repair agent took after applying
modifications.</p>
      <p>If the repair agent can find a path through the level, and
the default agent can follow that path after applying
modifications, we consider the level repaired.</p>
    </sec>
    <sec id="sec-4">
      <title>Analysis and Discussion</title>
      <p>
        To evaluate the performance of this approach, we ran the
repair agent and the default agent on levels generated via two
PCGML approaches, trained using levels from the games
Super Mario Bros. (SMB) and Kid Icarus (KI), taken from
the VGLC
        <xref ref-type="bibr" rid="ref16 ref17">(Summerville et al. 2016)</xref>
        .
      </p>
      <p>
        First, we used n-grams
        <xref ref-type="bibr" rid="ref1 ref13">(Dahlskog, Togelius, and
Nelson 2014)</xref>
        . For SMB, we generated levels using trigrams;
one trained on level 1-1 (SMB N1-1) and one on level
13 (SMB N1-3). For KI, we generated levels using bigrams,
one trained on level 1 (KI N1) and one on level 4 (KI N4).
      </p>
      <p>Levels generated were 100 columns/rows for SMB/KI.</p>
      <p>
        Second, we used variational autoencoder (VAE)-based
sequential level generation models for SMB (SMB VAE) and
KI (KI VAE) as described in
        <xref ref-type="bibr" rid="ref10 ref9">Sarkar and Cooper (2020)</xref>
        . The
model for each game was trained on 16x16 level segments
of that game extracted from all their levels in the VGLC and
is capable of generating whole, continuous levels consisting
of these 16x16 segments. Levels contained 6 segments each,
resulting in 96 columns/rows for SMB/KI.
      </p>
      <p>For each generator, we generated 1000 levels. We ran the
default agent and repair agent on each to see which
lev- - - - - - - - - - - - - - - - - - - - - - - - - - - - - . . . . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - . . - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - . . - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - . . . . - - - - - - - - - - - - - - - - . . - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - . . - - - . - - - - - - - - - - - - - . . . - - - - - - - - - . . . . . - - - - - - - E - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . . . . . . . }
d- - - - . . X X - - - . - - - - - - - - - - - . . X X - - - - - - - - - - . X X - . - - - S S S S S S - - - - - - - - - - S S S Q - - - - - - - - - - - - - - - - - - - - - - - - - . . - - S S S S S S
- - - . . X X X - - - - . - - - - - - - . . . . X X X - - - - - - - - - - X X X - - . - - - - - - - - - - - - - - - - . . . . - - . . - - - - - - - - - - - - - - - - - . . - - - . . - - - - - - - -
e- - . . X X X X - - - - - . - - - - - . . - - X X X X - - - - - - - - - X X X X - - - . - - - - - - - - - - - - - - . . - - - . . . - . - - - - - - - - - - - - - - - . . - . - . . - - - - - - - - -
- . . X X X X X - - - - - - . - - - . . - - X X X X X - - - - - - - - X X X X X - - - - . - - - - - - - - - - - - . . - - - - - . - - - . . - - - - - - - - - - - - . . - - - . . - - - - - - - - - -
m- { X X X X X X - - - - - - - . - . . - - X X X X X X - - - - - - - X X X X X X - - - - - . - - - - - - - - - - . . X - - - - - S - - &lt; &gt; - . - - Q - - Q - - - . . . - - - &lt; &gt; ^ - - - - - - - - - -
- X X X X X X X - - - - - - - - . . - - X X X X X X X - - - - - - X X X X X X X - - - - - - . - - - - - - - - . . X X - - - - - - - - [ ] - - . - - - - - - - - . &lt; &gt; - - - [ ] - - - - - - - - - - -
X X X X X X X X - - - - - - - - &lt; &gt; - X X X X X X X X - - &lt; &gt; - X X X X X X X X - - - - - - - . - - - - - - . . X X X - - - - - - - - [ ] - - - . - - - - - - - . [ ] - - - [ ] - - - - - - - - - - -
X X X X X X X X - - - - - - - - [ ] X X X X X X X X X - - [ ] X X X X X X X X X - - - - - - - - . . . . . . . X X X X - - - - - - E - [ ] - - - - . . . . . . . . [ ] - E - [ ] - - - - - - - - - - -
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . . . . - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . . - - - . - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . . - - - - - . - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . . - . . - - - - - - - . - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - E - - - - - E - - - - - - . . . . . . - . . - - - - - - - - - . . . . }
M ax--- --- --- --- --- --- --- --- --- --- --- --- --- --. -.. -.- --. --. --. --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --S --S --S --S --S --S --S --S --S --S --S --S --S --S -.Q .-. ..- -.- --- --- --- -^. --- --- --S --S --- --- --- --- --- --- --- --S --S --S --S --S --S --S
--S
- - - - - - S - - - - - . . - - - - - . . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . . - - - - - - - - - - - - - - - - - - - - - - - - -
m- - - Q - - - - - - - . . - - - - - X X - . - - - - - - - - - - Q - - - - Q - - - - - - - - - - - - - Q - - - - - - - - - - - - - - - - - - - - . S - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - . . . - - - - - X X X - - . - - - - - - - - - - - - - - - - - - - - - - . . - - - - - - - - - - - - - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - . . &lt; &gt; - - - - X X X X - - - . - - - - - - - - - - - - - - - - - - - - . . - . - - - - - - - - - - - - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - -
X { . . . . . . . - [ ] - - - X X X X X - - - - . . . . . . . . . . . . . . . . . . . . . - - - . . . . . . . . . . . . . . . . . . . . . . . . . - E - E - - - - - - - - E E - E - - - - - - - - - -
X X X X X X X X X X X X X X X X X X X X - - X X X X X X X X X X X X X X X X X X X X X X X - - X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . . - - - - - - - - - - - - - - - . . . . - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . . - . - - - - - - . . - - - - - . . - - - . - - - - - - - - - - -
- - - - - - - - - o o - - o o - - - - - - - - - - - - - - - - - - - o o - - - - - - - - - - - - - - - - . . - - - - - E . . . . . . - - - . - - - - . . - . - - - . . - - - - - . - - - - - - E - - -
d- - - - - - . . - - - - - - - - - - - - - - - - - - E - - - - - - - - - - - - . . - - - - - - - - - - . . - . - - - - . . - E - . - - - - - . . . . . - - - . - . . - E - - - - - . o - - - - E - - -
- - - - - . . - . - - - - - - - - - - - - - - - - X X X X X - - - - - - - - . . - . . . . . . . . . . . - - - . - - . . - X X X X - - - - X X X X X X - - - - . . - - - - - - - - - . - - - - - - X X X
e- - - . . . - - - . - - - - - - - - - - - - - . . - - - - - - . . . . - - . . - X X X X X X X X X X X X - - - - . . . - - - - - - - - - - - - - - - - - - - X X X - - - - - - - - - - . - - - - - - -
- - - . X X - - - - . . . . - - - - - - - - . . - . - - - - . . - - - . . . - - - - - - - - - - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . . . - - - -
mX - - . - - - - - - X X X - . - - - - - - . . - - - . - - . . - - - - X X X - - - - - - - - - - - - - - - - - - X X - - - - - - - - - - - - - - - - - - - - - - - - - - - X X X X - - X X X - . - - -
- - - . - - - - - - - - - - - . . . . . . . - - - - - . . . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . - -
- { . . - - - - - - - - - - X X X X X X X X - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . -
- X X X - - - - - - - - - - - - - - - - - - - - - - - - ^ - - - - - - - - - - - - - - - - - - - - - - - - o o o - - - - - - - - - - - - - - - - - - - - - - - - - - o o o - - - - - - - - - - - - - }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - X X X - - - - - - - - - - - - - - - - - - - - - - - - - - X X X - - - - - - - - - - - - - X X
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - o o o o o o - - - - - - - - - - - - - - - - - - - - - - - . . . . - - - - - - - - - o o - - - - - - - - . . . . - - - . . - . - - - - - - - - - - - - - - - - - - - - - - . . - - - - - -
cations (most of which are 1). Paths are shown as dots; removed solids are cyan + and added solids are magenta ˆ.
Paths are shown as dots; removed solids are cyan + and added solids are magenta ˆ.
els were playable by the default agent and which could be
repaired to be playable by the repair agent, and gathered
modification and timing information. The agents were
implemented in Python.</p>
      <p>For KI, we updated the agents to allow wrapping around
the sides of the level; for simplicity, we considered one-way
platforms as solid and moving platforms as non-solid, and
used the jump definitions from SMB.</p>
      <p>A summary of the results is given in Table 1, with example
repaired SMB levels in Figure 1 and KI levels in Figure 2.</p>
      <p>In the analysis, we found that most levels were able to
be repaired to be playable. The SMB levels generated were
mostly playable already, but the repair agent was able to
make all of them playable. Only one or two modifications
were needed to repair the levels, usually adding a solid tile
to make a jump possible.</p>
      <p>On the other hand, the KI levels generated were almost
entirely unplayable initially. The repair agent was able to
get to around 80-90% playable levels. Several modifications
were often needed to repair KI levels, sometimes carving out
several solid tiles to make a path. We suspect that these paths
may be due to certain modifying moves being prevented by
visited tiles, which the agent compensates for by modifying
solid tiles. It is possible that the low playability of the
generated KI levels was related to, for example, the simplicity
of the n-gram model creating large open vertical sections.</p>
      <p>Playability may also have been impacted by simplifying the
platform mechanics and using SMB jumps; a higher-fidelity
approximation of KI mechanics could have found the levels
to be more playable.</p>
      <p>We found a moderate increase in the relative time taken by
the repair agent, which appears to increase as the proportion
of initially playable levels decreases. For SMB N1-1, which
had 99.5% initially playable levels, the repair agent took
only 120% of the time of the default agent. For KI N1, which
had only 0.6% initially playable levels, the repair agent took
408% of the default agent’s time. We expect this is due to
the relatively short time in which the unplayable levels can
be rejected by the default agent.</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>In this work, we proposed a pathfinding agent that can
attempt to repair platformer levels by modifying solid tiles to
be non-solid or vice versa. In an analysis of procedurally
generated levels, we found the repair agent can improve
playability at the cost of an increase in time over an agent
that only evaluates playability.</p>
      <p>
        There are a variety of future directions and variations on
this work. Other types of modifications may be possible,
such as placing items, and other types of games could be
explored with other tile types. Different pathfinding search
heuristics may influence the modifications made. More
accurate models of player movement (than tile-based
approximations) can also be explored. Future work could also
examine the impact of repair on expressive range
        <xref ref-type="bibr" rid="ref12">(Smith and
Whitehead 2010)</xref>
        , for example, comparing the expressive
range of the generated levels pre- and post-repair.
      </p>
      <p>While we considered a level repaired with any number of
modifications, designers might want to place a limit on the
number, type, or location of modifications allowed before
rejecting a level. The application of repair agents as a
support tool for hand-authored levels, along with the types of
feedback they can provide to designers on their levels, may
be an area for further study.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Dahlskog</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Togelius</surname>
            , J.; and Nelson,
            <given-names>M. J.</given-names>
          </string-name>
          <year>2014</year>
          .
          <article-title>Linear levels through n-grams</article-title>
          .
          <source>In Proceedings of the 18th International Academic MindTrek Conference: Media Business, Management, Content &amp; Services</source>
          ,
          <fpage>200</fpage>
          -
          <lpage>206</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>Green</surname>
            ,
            <given-names>M. C.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Khalifa</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Barros</surname>
            ,
            <given-names>G. A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Nealen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ; and
          <string-name>
            <surname>Togelius</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <year>2018</year>
          .
          <article-title>Generating levels that teach mechanics</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <source>In Proceedings of the 13th International Conference on the Foundations of Digital Games</source>
          ,
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Green</surname>
            ,
            <given-names>M. C.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Mugrai</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Khalifa</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ; and
          <string-name>
            <surname>Togelius</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <article-title>Mario level generation from mechanics using scene stitching</article-title>
          . arXiv:
          <year>2002</year>
          .02992 [cs].
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>Jain</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Isaksen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ; Holmga˚rd, C.; and
          <string-name>
            <surname>Togelius</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          2019.
          <article-title>Intentional computational level design</article-title>
          .
          <source>In Proceedings of the Genetic and Evolutionary Computation Conference</source>
          ,
          <volume>796</volume>
          -
          <fpage>803</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <string-name>
            <surname>Mott</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ; Nandi,
          <string-name>
            <given-names>S.</given-names>
            ; and
            <surname>Zeller</surname>
          </string-name>
          ,
          <string-name>
            <surname>L.</surname>
          </string-name>
          <year>2019</year>
          .
          <article-title>Controllable and coherent level generation: A two-pronged approach</article-title>
          .
          <source>In AIIDE Workshop on Experimental AI in Games.</source>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <string-name>
            <surname>Sarkar</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Cooper</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <year>2020</year>
          .
          <article-title>Sequential segmentbased level generation and blending using variational autoencoders</article-title>
          .
          <source>In Proceedings of the 11th Workshop on Procedural Content Generation in Games.</source>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <string-name>
            <surname>Sarkar</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Summerville</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Snodgrass</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ; Bentley, G.; and
          <string-name>
            <surname>Osborn</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <year>2020</year>
          .
          <article-title>Exploring level blending across platformers via paths and affordances</article-title>
          .
          <source>In Sixteenth Artificial Intelligence and Interactive Digital Entertainment Conference.</source>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <string-name>
            <surname>Shu</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ; Liu, J.; and
          <string-name>
            <surname>Yao</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          <year>2020</year>
          .
          <article-title>A novel CNetassisted evolutionary level repairer and its applications to Super Mario Bros</article-title>
          . arXiv preprint arXiv:
          <year>2005</year>
          .06148.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <string-name>
            <surname>Smith</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Whitehead</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <year>2010</year>
          .
          <article-title>Analyzing the expressive range of a level generator</article-title>
          .
          <source>In Proceedings of the 2010 Workshop on Procedural Content Generation in Games.</source>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <string-name>
            <surname>Snodgrass</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , and Ontan˜o´n,
          <string-name>
            <surname>S.</surname>
          </string-name>
          <year>2014</year>
          .
          <article-title>Experiments in map generation using Markov chains</article-title>
          .
          <source>In Proceedings of the 9th International Conference on the Foundations of Digital Games.</source>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          <string-name>
            <surname>Snodgrass</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , and Ontan˜o´n,
          <string-name>
            <surname>S.</surname>
          </string-name>
          <year>2016</year>
          .
          <article-title>Controllable procedural content generation via constrained multi-dimensional Markov chain sampling</article-title>
          .
          <source>In Proceedings of the TwentyFifth International Joint Conference on Artificial Intelligence</source>
          ,
          <fpage>780</fpage>
          -
          <lpage>786</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          <string-name>
            <surname>Snodgrass</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , and Ontan˜o´n,
          <string-name>
            <surname>S.</surname>
          </string-name>
          <year>2017</year>
          .
          <article-title>Learning to generate video game maps using Markov models</article-title>
          .
          <source>IEEE Transactions on Computational Intelligence and AI in Games</source>
          <volume>9</volume>
          (
          <issue>4</issue>
          ):
          <fpage>410</fpage>
          -
          <lpage>422</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          <string-name>
            <surname>Summerville</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Mateas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <year>2016</year>
          .
          <article-title>Super Mario as a string: Platformer level generation via LSTMs</article-title>
          .
          <source>In Proceedings of 1st International Joint Conference of DiGRA and FDG.</source>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          <string-name>
            <surname>Summerville</surname>
            ,
            <given-names>A. J.</given-names>
          </string-name>
          ; Snodgrass,
          <string-name>
            <surname>S.</surname>
          </string-name>
          ; Mateas,
          <string-name>
            <surname>M.</surname>
          </string-name>
          ; and Ontan˜o´n,
          <string-name>
            <surname>S.</surname>
          </string-name>
          <year>2016</year>
          .
          <article-title>The VGLC: The video game level corpus</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          2018.
          <article-title>Procedural Content Generation via Machine Learning (PCGML)</article-title>
          .
          <source>IEEE Transactions on Games</source>
          <volume>10</volume>
          (
          <issue>3</issue>
          ):
          <fpage>257</fpage>
          -
          <lpage>270</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          <string-name>
            <surname>Summerville</surname>
            ,
            <given-names>A. J.</given-names>
          </string-name>
          ; Philip,
          <string-name>
            <surname>S.</surname>
          </string-name>
          ; and Mateas,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <year>2015</year>
          .
          <article-title>MCMCTS PCG 4 SMB: Monte Carlo tree search to guide platformer level generation</article-title>
          .
          <source>In Eleventh Artificial Intelligence and Interactive Digital Entertainment Conference.</source>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          <string-name>
            <surname>Togelius</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ; Yannakakis,
          <string-name>
            <given-names>G. N.</given-names>
            ;
            <surname>Stanley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. O.</given-names>
            ; and
            <surname>Browne</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          <year>2011</year>
          .
          <article-title>Search-based procedural content generation: A taxonomy and survey</article-title>
          .
          <source>Computational Intelligence and AI</source>
          in Games,
          <source>IEEE Transactions on 3(3)</source>
          :
          <fpage>172</fpage>
          -
          <lpage>186</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          <string-name>
            <surname>Togelius</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ; Karakovskiy,
          <string-name>
            <surname>S.</surname>
          </string-name>
          ; and Baumgarten,
          <string-name>
            <surname>R.</surname>
          </string-name>
          <year>2010</year>
          .
          <article-title>The 2009 Mario AI competition</article-title>
          .
          <source>In IEEE Congress on Evolutionary Computation</source>
          ,
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          . ISSN:
          <fpage>1941</fpage>
          -
          <lpage>0026</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          <string-name>
            <surname>Volz</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Schrum</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ; Liu,
          <string-name>
            <surname>J.</surname>
          </string-name>
          ; Lucas,
          <string-name>
            <given-names>S. M.</given-names>
            ;
            <surname>Smith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            ; and
            <surname>Risi</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          <year>2018</year>
          .
          <article-title>Evolving Mario levels in the latent space of a deep convolutional generative adversarial network</article-title>
          .
          <source>In Proceedings of the Genetic and Evolutionary Computation Conference</source>
          ,
          <volume>221</volume>
          -
          <fpage>228</fpage>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          <string-name>
            <surname>Withington</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          <year>2020</year>
          .
          <article-title>Illuminating Super Mario Bros: quality-diversity within platformer level generation</article-title>
          .
          <source>In Proceedings of the Genetic and Evolutionary Computation Conference Companion</source>
          ,
          <fpage>223</fpage>
          -
          <lpage>224</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>