<!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>Visual Exploration of Tile Level Datasets</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Seth Cooper</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Faisal Abutarab</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Emily Halina</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nathan Sturtevant</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Northeastern University</institution>
          ,
          <country country="US">USA</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Alberta</institution>
          ,
          <country country="CA">Canada</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Datasets of game levels are increasingly used, for example as training data for PCGML algorithms, outputs from exhaustive PCG, or pre-computed parts of larger levels. However, tools for exploring these datasets are limited. In this work we describe an interactive tool for visual exploration of large tile level datasets. The level explorer currently supports level elements including both image- and text-based tile grids, path graph edges, and string tags. The level explorer visualizes the levels and allows the user to select elements that they would like to be present, and filters the dataset to find all levels consistent with the user's selection. We also describe an eficient encoding scheme used for level filtering, along with example cases of several games, demonstrating handling of datasets consisting of up to millions of levels.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;levels</kwd>
        <kwd>datasets</kwd>
        <kwd>visualization</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>1. Introduction
AIIDE Workshop on Experimental Artificial Intelligence in Games,
October 08, 2023, University of Utah, Utah, USA
$ se.cooper@northeastern.edu (S. Cooper); abutarab@ualberta.ca
(F. Abutarab); ehalina@ualberta.ca (E. Halina);
nathanst@ualberta.ca (N. Sturtevant)</p>
      <p>0000-0003-4504-0877 (S. Cooper); 0009-0004-3408-7092
(E. Halina); 0000-0003-4318-2791 (N. Sturtevant)</p>
      <p>© 2023 Copyright for this paper by its authors. Use permitted under Creative Commons License allows designers to manually place tiles, and a side panel
CPWrEooUrckReshdoinpgs IhStpN:/c1e6u1r3-w-0s.o7r3g ACttEribUutRion W4.0oInrtekrnsahtioonpal (PCCroBYce4.0e).dings (CEUR-WS.org) that shows the tiles possible for the cell the designer is
- - -
{ - - }
X X X X
- - - - block
{ - X }
X X X X
- -
{ - }
X X X
Levels
Encoding</p>
      <p>Visualization
hovered over. Our tool also allows users to see which process takes all the levels to be encoded as input, as
certiles are possible at each cell, but we present it in a difer- tain properties of the encoding need to know information
ent manner. The way we show what tiles are possible in about all levels (e.g. all the edges and tags used across
each cell is influenced by Oskar Stålberg, who visualized all levels). The encoding process outputs the bitstring
WFC by displaying all tiles available in each cell [18]. The encoding of each level, as well as metadata needed to
Anhinga level editor [19] uses exhaustive PCG to search decode the bitstrings back into levels. An example of the
though and evaluate all possible single-tile changes from encoding technique is shown in Figure 1, showing three
the current level. levels, parts of their encodings, and how they would be</p>
      <p>
        The level explorer also allows designers to filter levels visualized. The level representation is based on that used
by gameplay—that is, they can specify that levels must by the Sturgeon level generation system [
        <xref ref-type="bibr" rid="ref8">28</xref>
        ] but is
flexicontain (partial) paths as a solution. This allows design- ble enough to support a variety of tile-based games. Level
ers to work backwards from a path to a level design that elements are encoded into the bitstring as follows.
can be solved by the specified full or partial path. Existing Tile grids: Levels are defined by a 2D grid of tiles. Each
work has looked at generating levels from gameplay spec- tile can be associated with an image and/or text “function”
ifications (such as beat structure [ 20], streamlines that (e.g. start, goal, solid, passable, etc). During encoding,
represent player traces [
        <xref ref-type="bibr" rid="ref1">21</xref>
        ], or taking path constraints each location in the grid gets its own bit substring. In a
as input to a generator [
        <xref ref-type="bibr" rid="ref2">22</xref>
        ]) and evolving gameplay spec- location’s substring, each bit can represent an image, text,
ifications to create levels [
        <xref ref-type="bibr" rid="ref3">23</xref>
        ]. or both. The encoding is done such that any tiles that
have a unique image-text pair get both encoded in single
bit, but tiles that share their image or text with another
3. Description tile have each encoded as a separate bit. In the example,
the sky image and - text only ever occur together, and
Here we give a general description of the level explorer, thus are encoded together as a single bit. However, the
including level encoding, filtering, and visualization. X text can occur with either the ground or block
Level Encoding — For eficient filtering by level ele- images, and so each of these text or image possibilities
ments, levels are encoded as bitstrings. The encoding gets its own bit (3 in all). Thus, when present in a level,
      </p>
    </sec>
    <sec id="sec-2">
      <title>Initial view.</title>
      <p>boxoban
witness</p>
    </sec>
    <sec id="sec-3">
      <title>User selects a tile (pipe top-right ) and the “No gap” tag; mouses over path edge (pink).</title>
    </sec>
    <sec id="sec-4">
      <title>User selects edge, remaining edges appear.</title>
      <p>Paths are directed sequences of edges through the level
grid (although they do not have to use integer
coordiUser selects more tiles (Mario , flag , and ? block ). nates), typically used to represent a possible solution to
the level. During the encoding, unique edges across all
Figure 2: Sample mario interaction. levels are tracked. Each edge gets its own bit, set to 1 if
present in the level.</p>
      <p>Tags: Levels can also be tagged with strings. In the
tiles encoded as a single bit will have that bit set to 1, and example, the second level was tagged with “block” since
those that have their text and image in diferent bits will there is a block in it. Similar to edges, during encoding
have both corresponding bits set to 1. Variable level sizes each unique tag gets its own bit, set to 1 if present in the
are handled by padding the grid with a special void tile, level.
which gets its own bit. Level Filtering — Once levels have been encoded into</p>
      <p>
        Path edges: Levels can also be associated with paths. bitstrings, the level explorer can filter them to select levels
that contain certain elements. An eficient implementa- Algorithm 1 Filtering level bit strings
tion is built in Python using numpy [
        <xref ref-type="bibr" rid="ref10">30</xref>
        ]. In: : bitstring of selected elements
      </p>
      <p>The core of the filtering algorithm is shown in Algo- : array of level bitstrings
rithm 1. It takes as input a bitstring-encoded selection Out: : array of remaining levels
() of elements to be present in the levels, along with : bit string of remaining elements
the level bitstrings themselves (). First, all level bit-  ← ( (, ), )
strings are bitwise AND-ed with, and compared to, the  ← ( × )
selection. This results in a Boolean array with True
corresponding to levels that pass the filter ( ). This
array is then multiplied with the level bitstrings and the text), or selected by finishing the level. The number of
result is bitwise OR-ed together. This results in a bitstring remaining levels is also shown.
with 1s set for elements that exist in any remaining level
().</p>
      <p>
        Level Visualization — The visualization displays the 4. Datasets
bitstring representing all the possible elements that
remain. For example, a single location can have multiple Here we describe some sample datasets we have used
tiles remaining. The level explorer visualization is interac- with the level explorer. A video of interactions with the
tive, and the basic form of interaction is using the mouse datasets is available at https://osf.io/fcyjt/.
to select or de-select level elements, which launches a mario: Super Mario Bros. [
        <xref ref-type="bibr" rid="ref5">25</xref>
        ] levels generated by
ifltering based on the new selection and an update of enumerating all possible via a 3-gram [
        <xref ref-type="bibr" rid="ref11">31</xref>
        ] based on level
the display. As filtering is not instantaneous for larger 1-1 from the VGLC [7], resulting in around 8 million
levdatasets, the computation happens in a thread, and re- els. Paths through levels were added using A*
pathfindcent selections are cached. Here we describe the basic ing [
        <xref ref-type="bibr" rid="ref12">32</xref>
        ], and tags were added for the presence and
abapproach to visualization. sence of some tiles and level and path features.
      </p>
      <p>
        Tile grids: At each location in the grid, all the possible boxoban: The boxoban [8] dataset of around 1.5
miltiles at that location are shown as a subgrid. Separate lion Sokoban [
        <xref ref-type="bibr" rid="ref6">26</xref>
        ] levels; image tiles from Kenney [
        <xref ref-type="bibr" rid="ref4">24</xref>
        ].
grids are displayed for image and text grids; however, if witness: Black and white square puzzles based on
all the tiles are unique image-text pairs, only the image The Witness [
        <xref ref-type="bibr" rid="ref7">27</xref>
        ]. Levels 4 × 4 and smaller, going from
grid is shown by default. If there are too many tiles in bottom-left to top-right, with exactly one solution were
one location, they are shown as an abstracted tile. If an enumerated [4], resulting in around 750 thousand levels.
abstracted location is moused over, all the tiles at that In this dataset, path edges go along the borders between
location are shown again so they can be selected. tiles. To make it look more like puzzles in the game, a
      </p>
      <p>
        Path edges: Directed edges are shown as arrows over border of “padding” tiles was added around each level.
the grid. If there are too many edges in the entire visual- cave: A custom cave exploration game. Levels were
ization to show at once, all edges are abstracted by only generated by Sturgeon [
        <xref ref-type="bibr" rid="ref8">28</xref>
        ], generating a thousand levels
showing edge “source” positions as dots. If the mouse each with rows and columns ranging from 10–15,
resultgets close to a dot, the edges coming out of that dot are ing in 36 thousand levels. Generated levels also provide
shown. a solution path, though not necessarily the shortest. The
      </p>
      <p>
        Tags: Tags are shown as checkboxes in the interface. solid text tile X has a several image tiles depending on
Checkboxes that do not correspond to remaining bits in its location relative to other solid tiles. Image tiles from
the filtered levels are greyed out. Kenney [
        <xref ref-type="bibr" rid="ref4">24</xref>
        ].
      </p>
      <p>
        Additionally, the interface contains buttons to clear the lode: As a smaller dataset, the VGLC [7] Lode
Runselection, undo/redo, make a random selection, or finish ner [
        <xref ref-type="bibr" rid="ref9">29</xref>
        ] dataset, consisting of 150 levels.
the level by selecting a remaining level at random. The A sample interaction with the mario dataset is shown
user can also change modes and displays, which impacts in Figure 2. Initial views for the other games are shown
how tiles and edges are shown and selected. The filtered in Figure 3. A summary of the datasets, including time
levels can also be exported. to encode and filter them during interaction, is provided
      </p>
      <p>As the user mouses over the level visualization, ele- in Table 1.
ments that would be selected are highlighted. The user’s
tile and edge selection is shown as dotted lines at the 5. Discussion and Conclusion
location of the tile or edge. For tiles, the lines are
diferent depending on if it was directly selected by the user,
indirectly selected by selecting a tile of another type (e.g.
an image that is indirectly selected by the selection of
Thus far we have implemented the level explorer, worked
out some technical aspects of the user interface, and
supported datasets into the millions of levels. When
interacting with the level explorer, we found that it can [8] A. Guez, M. Mirza, K. Gregor, R. Kabra, S. Racaniere,
be useful for a quick visual summary of datasets; for T. Weber, D. Raposo, A. Santoro, L. Orseau, T.
Ecexample, what areas are reachable by paths, available cles, G. Wayne, D. Silver, T. Lillicrap, V. Valdes, An
pipe heights in mario, and the fact that there are never investigation of model-free planning: boxoban
levboxes in corners in boxoban. We found that in smaller els, https://github.com/deepmind/boxoban-levels/,
datasets (i.e. lode) it is possible to very quickly end up 2018.
with only one level remaining, e.g. when selecting player [9] thefifthmatt, The Windmill, https://windmill.
location. Thus a tool like this may be more useful when thefifthmatt.com/, 2023.
datasets are larger, or benefit from indicating how many [10] A. Zafar, S. Hassan, Q. S. uddin, Corpus for Angry
remaining levels contain each element. In the current Birds Level Generation, in: 2019 2nd International
setup, the level explorer only determines which elements Conference on Computing, Mathematics and
Engiremain, but not how many remaining levels each element neering Technologies, 2019, pp. 1–4.
is in; though possible, we we found counting remaining [11] I. Karth, A. M. Smith, Addressing the fundamental
levels for each element to be notably slower. We are also tension of PCGML with discriminative learning, in:
interested in support for more complex filters, such as Proceedings of the 14th International Conference
the absence of elements. In the future, we are interested on the Foundations of Digital Games, 2019, pp. 1–9.
in a user study to understand the usefulness of the level [12] G. N. Yannakakis, A. Liapis, C. Alexopoulos,
Mixedexplorer and how it compares to other tools. initiative co-creativity, in: M. Mateas, T. Barnes,
I. Bogost (Eds.), Proceedings of the 9th International
Conference on the Foundations of Digital Games,
Acknowledgements 2014.
[13] G. Lai, F. F. Leymarie, W. Latham, On
mixedWe would like to thank Matthew Guzdial and Eugene initiative content creation for video games, IEEE
Chen for their discussions and feedback on the project. Transactions on Games 14 (2022) 543–557.
[14] D. Carpenter, J. T. Bacher, H. Crain, C. Martens,
CaReferences sual creation of tile maps via authorable
constraintbased generators, in: 1st Workshop on
Program[1] A. Summerville, S. Snodgrass, M. Guzdial, ming Languages and Interactive Entertainment,
C. Holmgård, A. K. Hoover, A. Isaksen, A. Nealen, 2021.</p>
      <p>J. Togelius, Procedural Content Generation via [15] H. Crain, D. Carpenter, C. Martens, Evaluating a
Machine Learning (PCGML), IEEE Transactions on casual procedural generation tool for tabletop
roleGames 10 (2018) 257–270. playing game maps, in: 2022 IEEE Symposium on
[2] M. C. Green, L. Mugrai, A. Khalifa, J. Togelius, Visual Languages and Human-Centric Computing
Mario level generation from mechanics using scene (VL/HCC), IEEE, 2022, pp. 1–6.</p>
      <p>stitching, arXiv:2002.02992 [cs] (2020). [16] T. S. L. Langendam, R. Bidarra, miWFC - designer
[3] C. F. Biemer, S. Cooper, On linking level segments, empowerment through mixed-initiative wave
funcin: 2022 IEEE Conference on Games (CoG), 2022, tion collapse, in: Proceedings of the 17th
Internapp. 199–205. tional Conference on the Foundations of Digital
[4] N. R. Sturtevant, M. J. Ota, Exhaustive and semi- Games, 2022, pp. 1–8.</p>
      <p>exhaustive procedural content generation, AAAI [17] I. Karth, A. M. Smith, WaveFunctionCollapse is
conConference on Artificial Intelligence and Interac- straint solving in the wild, in: Proceedings of the
tive Digital Entertainment; Fourteenth Artificial 12th International Conference on the Foundations
Intelligence and Interactive Digital Entertainment of Digital Games, 2017, pp. 1–10.</p>
      <p>Conference (2018). [18] O. Stålberg, Wave Function Collapse in Bad
[5] G. Smith, J. Whitehead, Analyzing the expressive North, url: https://www.youtube.com/watch?v=
range of a level generator, in: Proceedings of the 0bcZb-SsnrA, 2018.
2010 Workshop on Procedural Content Generation [19] N. R. Sturtevant, N. Decroocq, A. Tripodi, C. Yang,
in Games, PCGames ’10, 2010, pp. 1–7. M. Guzdial, A demonstration of Anhinga: A
mixed[6] D. Gravina, A. Khalifa, A. Liapis, J. Togelius, initiative epcg tool for snakebird, in: Artificial
G. N. Yannakakis, Procedural Content Generation Intelligence and Interactive Digital Entertainment,
through Quality Diversity, in: 2019 IEEE Confer- 2020, pp. 328–330.</p>
      <p>ence on Games (CoG), 2019, pp. 1–8. [20] G. Smith, J. Whitehead, M. Mateas, Tanagra: A
[7] A. J. Summerville, S. Snodgrass, M. Mateas, S. On- mixed-initiative level design tool, in: Proceedings
tañón, The VGLC: The Video Game Level Corpus, of the Fifth International Conference on the
FounarXiv:1606.07487 [cs] (2016). dations of Digital Games, 2010, pp. 209–216.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>L. N.</given-names>
            <surname>Ferreira</surname>
          </string-name>
          ,
          <article-title>Streamlevels: Using visualization to generate platform levels</article-title>
          , ACM Computers in Entertainment (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>S.</given-names>
            <surname>Cooper</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Guzdial</surname>
          </string-name>
          , path2level:
          <article-title>Constraint-based level generation from paths</article-title>
          ,
          <source>in: 2023 IEEE Conference on Games (CoG)</source>
          ,
          <year>2023</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>D.</given-names>
            <surname>Karavolos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Liapis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. N.</given-names>
            <surname>Yannakakis</surname>
          </string-name>
          ,
          <article-title>Evolving missions to create game spaces</article-title>
          ,
          <source>in: 2016 IEEE Conference on Computational Intelligence and Games</source>
          , IEEE,
          <year>2016</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Kenney</surname>
          </string-name>
          , Free game assets, https://www.kenney.nl/ assets,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Nintendo</surname>
          </string-name>
          , Super Mario Bros.,
          <year>1985</year>
          . Game [NES].
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Thinking</surname>
            <given-names>Rabbit</given-names>
          </string-name>
          , Sokoban,
          <year>1928</year>
          . Game.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [27]
          <string-name>
            <surname>Thekla</surname>
            ,
            <given-names>Inc.</given-names>
          </string-name>
          ,
          <source>The Witness</source>
          ,
          <year>2016</year>
          . Game.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>S.</given-names>
            <surname>Cooper</surname>
          </string-name>
          , Sturgeon:
          <article-title>Tile-based procedural level generation via learned and designed constraints</article-title>
          ,
          <source>Proceedings of the AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment</source>
          <volume>18</volume>
          (
          <year>2022</year>
          )
          <fpage>26</fpage>
          -
          <lpage>36</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>D.</given-names>
            <surname>Smith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Lode</given-names>
            <surname>Runner</surname>
          </string-name>
          ,
          <year>1983</year>
          . Game.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>C. R.</given-names>
            <surname>Harris</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K. J.</given-names>
            <surname>Millman</surname>
          </string-name>
          ,
          <string-name>
            <surname>S. J. van der Walt</surname>
          </string-name>
          , R. Gommers,
          <string-name>
            <given-names>P.</given-names>
            <surname>Virtanen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Cournapeau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Wieser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Taylor</surname>
          </string-name>
          , S. Berg,
          <string-name>
            <given-names>N. J.</given-names>
            <surname>Smith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Kern</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Picus</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Hoyer</surname>
          </string-name>
          ,
          <string-name>
            <surname>M. H. van Kerkwijk</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Brett</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Haldane</surname>
            ,
            <given-names>J. F.</given-names>
          </string-name>
          <string-name>
            <surname>del Río</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Wiebe</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Peterson</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Gérard-Marchant</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Sheppard</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          <string-name>
            <surname>Reddy</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          <string-name>
            <surname>Weckesser</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Abbasi</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Gohlke</surname>
            ,
            <given-names>T. E.</given-names>
          </string-name>
          <string-name>
            <surname>Oliphant</surname>
          </string-name>
          ,
          <article-title>Array programming with NumPy</article-title>
          ,
          <source>Nature</source>
          <volume>585</volume>
          (
          <year>2020</year>
          )
          <fpage>357</fpage>
          -
          <lpage>362</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>S.</given-names>
            <surname>Dahlskog</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Togelius</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Nelson</surname>
          </string-name>
          ,
          <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>
          ,
          <year>2014</year>
          , pp.
          <fpage>200</fpage>
          -
          <lpage>206</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Summerville</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Philip</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <article-title>Mateas, MCMCTS PCG 4 SMB: Monte Carlo tree search to guide platformer level generation</article-title>
          ,
          <source>Proceedings of the AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment</source>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>