diff --git a/ProjectBoss/Config/DefaultGame.ini b/ProjectBoss/Config/DefaultGame.ini index 8703b45..51a65a4 100644 --- a/ProjectBoss/Config/DefaultGame.ini +++ b/ProjectBoss/Config/DefaultGame.ini @@ -1,7 +1,7 @@ [/Script/EngineSettings.GeneralProjectSettings] ProjectID=131FDFCC472EFA91268E9E97C4358371 ProjectName=Project Boss -ProjectVersion=0.0.1 +ProjectVersion=1.0.0 CompanyName=JoshLmao Homepage="https://joshlmao.com" ProjectDisplayedTitle=NSLOCTEXT("[/Script/EngineSettings]", "A84CCA474F27B6FDD8E11C989ADC110C", "Project Boss") diff --git a/ProjectBoss/Content/ProjectBoss/Maps/MainMenu.umap b/ProjectBoss/Content/ProjectBoss/Maps/MainMenu.umap index 75ddb84..0c7e7f9 100644 Binary files a/ProjectBoss/Content/ProjectBoss/Maps/MainMenu.umap and b/ProjectBoss/Content/ProjectBoss/Maps/MainMenu.umap differ diff --git a/ProjectBoss/Source/ProjectBoss/ML/README.md b/ProjectBoss/Source/ProjectBoss/ML/README.md new file mode 100644 index 0000000..d644454 --- /dev/null +++ b/ProjectBoss/Source/ProjectBoss/ML/README.md @@ -0,0 +1,16 @@ +# Machine Learning + +In the project, I used linear regression on the training dataset to be able to create the best theta. Below is an overview of the architecture of the implemented machine learning model. + +![ml-architecture-overview]() + +The system takes 4 inputs while creating one output, the final (additional) cost. The inputs are tied to one action which allows for the data to be taken from the action after executing. + +## Training Data + +The application is able to track and store the relevant data needed to create an model, based off of multiple session of training. The data is stored in the ```/ProjectBoss/project-boss-ml-data.csv``` file. + +Inside ```Source/ProjectBoss/Boss/GOAP/GOAPAIController.cpp```, the GOAP sequences are tracked and stored until end of play, where the data is then parsed from the sequences and then saved to the file. + +### User Participation +If the user has not enabled participation on the main menu, to track and store their data, then no new training data will be appended after a play session. If participation is enabled, then the enemy should learn and train to the player's style. diff --git a/README.md b/README.md index 14c1673..57fa943 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,23 @@ # Project Boss (6CS007) + +[![releases](https://img.shields.io/badge/download-/releases/-green.svg?style=flat-square)](https://github.com/JoshLmao/6CS007-ProjectBoss/releases) +[![contact-twitter](https://img.shields.io/badge/twitter-JoshLmao-blue.svg?style=flat-square&logo=twitter)](https://twitter.com/joshlmao) +[![contact-website](https://img.shields.io/badge/website-joshlmao.com-lightgrey.svg?style=flat-square)](http://joshlmao.com) + 6CS007 year-long project artefact for implementing goal-oriented action planning (GOAP) inside UE4, where the agent is able to adapt to the enemy player's skill level. Created using Unreal Engine 4.25.4 +## Project Aim + +The aim of my project and this artefact is to see if I can use goal oriented action planning (GOAP) and machine learning to create an enemy that is able to adapt itself to the player, adjusting it's play style to match and create a challenging, but defeatable enemy. + +## GOAP/ML Implementations + +For more information on the implementations of GOAP and ML, please read the specific ```README.md``` files for each. + +* [GOAP](./ProjectBoss/Source/ProjectBoss/Boss/GOAP/README.md) +* [Machine Learning](./ProjectBoss/Source/ProjectBoss/ML/README.md) + ## Plugins This project was made using the follow plugins: