Source code for Quality Diversity Through Surprise

This is a public implementation of the surprise-based QD algorithms used in “Quality Diversity Through Surprise” (PDF).

Source Code


Agent Based Level Generator

A Unity implementation of a procedural level generator based on one or more agents moving in a grid. If there are one or more agents creating the level, a simple Depth-First Search is performed to check whether the level is connected and a simple corridor is generated between the agents if necessary. The size of the map, the sizes and probabilities of the rooms and whether or not rooms can overlap are all changeable parameters of the algorithm. The generator also automatically builds a navmesh of the generated map. New maps can be generated (with different parameters if you wish) while the scene is running.

A version of this generator that runs in the browser was submitted to ProcJam (a game jam for procedural content generation) and can be found here. A step-by-step guide to make your own generator can be found here.

Source Code


A Computational Game Designer that sees

As part of the research into vision-based automated game design, a one-versus-one FPS environment was created in which artificial agents perform self-play (see Game Simulator below). During the data collection phase, the levels and the weapons of the players are generated randomly and the outcome of the game is recorded. This data is used to train a model that can visually inspect a level and predict metrics such as game balance. This evaluation can then be used to generate new maps and weapons, which can again be tested in this FPS environment (see Match Tester below).

Daniel Karavolos, Antonios Liapis and Georgios N. Yannakakis: “Learning the Patterns of Balance in a Multi-Player Shooter Game” in Proceedings of Foundations of Digital Games (FDG). ACM, 2017. PDF

Game Simulator (Control the camera with WASD or the arrow keys)
Match Tester (Control the camera with the mouse and WASD or the arrow keys)
Level Generator (Press ‘m’ for a new level)



RankTrace is a continuous real-time affect annotation tool that is built on the principles of single-dimension annotation. Once a video or audio file is loaded into the tool, the user can annotate in real-time by manipulating the controllable reference. RankTrace does not constrain the user within a specific bounded interval. Instead it allows the user to increase or decrease the emotional intensity as desired. RankTrace is open source and currently available in C#.

RankTrace works best when it interfaces with a wheel-like input device such as the Griffin PowerMate.
Elizabeth Camilleri, Georgios N. Yannakakis and Antonios Liapis, “Towards General Models of Player Affect”, in Proceedings of the Affective Computing and Intelligent Interaction (ACII) Conference, 2017.

Phil Lopes, Georgios N. Yannakakis and Antonios Liapis, “RankTrace: Relative and Unbounded Affect Annotation”, in Proceedings of the Affective Computing and Intelligent Interaction (ACII) Conference, 2017.

Download Binaries (Requires VLC Player to run)


Surprise Search C++ 1.0

This is a public implementation of the surprise search algorithm in C++11, used in “Surprise Search: Beyond Objectives and Novelty” (PDF), based on the novelty search source code provided by Joel Lehman and Kenneth O. Stanley.

A python version based on the DEAP framework ( will be released soon.

Source Code


Sonancia Demo


Sonancia is a system built for generating multiple facets of horror games, with the intention of creating tense and frightful experiences. Sonancia generates the architecture of a haunted mansion (with rooms and doors which may contain monsters or quest items) as well as the level’s soundscape by allocating audio assets within the rooms and mixing them as the player traverses the level. Level generation and soundscape generation are orchestrated by notions of tension and suspense; the level generator attempts to match a designer-specified progression of tension while the sound generator attempts to prompt the player’s suspense in rooms where tension is low.


Download (This demo was optimized for the highest quality settings of Unity, please use this setting when running this demo).

Controls: WASD Keys (Movement); Left Shift Key (Run); F Key (Turn On/Off Flashlight).

eu flagfp7-peo-rgbThis project has received funding from IDG
the European Union's Seventh Framework 
for research, technological development
and demonstration under grant agreement