Final Project (CS 7632): MOBA Map Generation

Procedural Content Generation is the use of algorithm (procedures) to create novel, and sometimes customized, game content from scratch. Examples of PCG include generation of levels, maps, tree, cityscapes, weapons, monsters, and quests. PCG is often used as a design-time tool to roughly sketch out level content to be refined by human designers. PCG can also be done at run-time to incorporate individual player differences such as skills or preferences.

In this project, you will look at run-time PCG to create MOBA maps, using the Python game engine from earlier assignments. You must design a system that uses AI optimization to design maps for different players. The map that is generated should be customized to an individual's skill level. That is, players who are more skilled at the game should receive a map that is more challenging, and players that are less skilled should receive a map that is less challenging.

There are two aspects of the project. First, you must determine how to measure individual players' skill levels and build a model of a player. A model is a simple substitution for the player that can be used to predict player behavior. Examples of modeling techniques include regression, principle component analysis, matrix factorization, neural networks, etc.

Second, you must use the model to guide an optimiztion function that configures elements in the 2D map. Map elements include obstacles, bases, towers, minions, heroes, and gates. Since the project is map generation, your solution should consider the placement of obstacles, towers, and bases. You may also consider the configuration of hitpoints and weapon damage, but this must be in addition to base, tower, and obstacle positioning.

For this assignment, a human player will be controlling one of the heroes in the game.


What you need to know

You will be using the code base from the prior MOBA assignments. You are able to change any file necessary.


Instructions

You must implement a means of learning a player model and an optimization algorithm that tunes the difficulty of the MOBA map to create an appropriately challenging experience for the player based.

Issues you will likely have to address:


Suggestions

Consider a simplified version of a MOBA called a Tower Defense Game. In a Tower Defense Game, the hero and minions must get to the base as normal, but there can be many more towers and they can be positioned anywhere in the map. The enemy base does not spawn minions or heroes in turn, and the difficulty of the game entirely dependent on the number and position of towers in the map. One of the benefits of a Tower Defense game is that the terrain (obstacles) could remain fixed.

Unlike earlier assignments, the player-controlled hero is set by default to be a member of team 1.

The player's character cannot die (actually, it can die in the sense that it's isAlive variable becomes false, but it is never deleted from the game). You can leave the player's hero immortal and consider damage taken. You may want to modify the game so that the player's hero is teleported back to the base upon death.

Certain player modeling techniques require a large amount of player data traces. This data is hard to acquire. You may want to use "synthetic players" that take the place of the human player and generate a large amount of data. A synthetic player is an AI-controlled surrogate for a human player that should play similarly to an individual player. That is, if the human is a skilled player, the synthetic player should be skilled in the same way. This is a good way to test modeling and PCG algorithms.


Grading

Teams will demo their systems during the final exam period. Teams should come prepared to discuss how they model the human player and how they optimize the maps, plus any additional modifications to the game engine.

Teams should figure out the best way to demonstrate their system generating different maps for different types of players. You will not have time to collect a large amount of data during the presentation, so consider coming with some pre-built models. If you do not require a large amount of player data, have a player play the game live.

The grade will reflect the sophistication and appropriateness of the algorithmic techniques chosen to solve the map generation problem.


Submission

No submission necessary.