The first programming course week at the ENJMIN consisted in an update about C++. We were asked to create a little game in C++ using the Windows console as graphical interface in pair working. I wanted to benefit from this project by learning more about procedural content generation (PCG), machine learning (ML) and dynamic difficulty adjustment (DDA). Vincent, who worked with me on this project was more interested in graphical programming and in the optimization of the path-finding algorithm, which will be called many times. That is how we shared the amount of work to do and how The Wetness project was born.
The Wetness was inspired by the game The Witness designed by Jonathan Blow. The game consists in a series of mazes where the player has to go through a set of different points before arriving at the exit. Mazes are procedurally generated with a genetic algorithm. A lot of optimization has been made on path-finding algorithm to allow real time generation of possible and interesting mazes. An ML algorithm, based on linear regression, study how many time takes a player to complete a maze for a given difficulty. This one is then used by the DDA algorithm, which will increase or decrease the difficulty of next mazes relative to the player’s performance.
Of course, we had to work on other school projects at the same time, so I couldn’t work on it as much as I would have liked. For example, features like the algorithm that measures a maze difficulty could be a lot better. But it works and I’ve achieved my goals.