Code base for adaptive difficulty AI demo built with Unity. Created in partial fulfillment of ECS289G Fall 2020 course requirements.
This project is a basic game demo that highlights a genetic algorithm being used to guide generation of content based on the skill of the player. This game takes the shape of a 2D arena game where the difficulty of each enemy is dynamically adjusted through procedural content generation according to the state of the player character or token, which we use as a proxy for player skill.
In regards to expressive intelligence, if we accept the premise that intelligent game design incorporates elements of fun to keep the player engaged and in a state of flow, then it follows that dynamic difficulty adjustment is a form of expressive intelligence. Much like an educator that helps struggling or bored students out of a duty of care, we feel that game designers and developers should also introduce systems that “care” about meeting the player where they are before dropping them into situations that outpace or fail to keep pace with their skill.
At the heart of this project is the goal to reduce the amount of frustration or boredom that arises when a player finds a game too difficult or too easy, or more simply, when it stops being fun.
We were fascinated by the concept of Dynamic Game Difficulty Balancing and wanted to try it out implementing our own novel version of it for a simple game. The game difficulty balancing is decided by our natively implemented genetic algorithm
You can get a copy of this project up and running in the following ways, depending on how you wish to use it:
If you only wish to play the final game, please download/clone this repository and find the executable file in the Build folder at the root of this repository. There will be executables for Windows and MacOS.
-
If you wish to build this project from source, it is recommended you have Unity 2019.4.12f1 installed on your machine.
-
Clone this repository:
git clone https://github.com/kdavidmitchell/rubber-band-game.git
After cloning/downloading this repository, open a new project in Unity with this repository's folder as the project folder.