Unity Game inspired by Overcooked and PlateUp! with Bots AI using ASP
This game builds upon this fantastic free youtube course by Code Monkey
It is my thesis project for my bachelor's degree, which focuses on creating a Bot AI using Answer Set Programming (ASP) to play this game.
More specifically, I'm using the ThinkEngine Framework to facilitate the communication between Unity and the ASP solvers it supports (DLV and clingo)
You can download the latest game relase from the releases page and run it.
Or you can build the game yourself (see How to build) to get the latest version.
The goal of the game is to cook and serve as many dishes requests as possible in the given time.
You play as a chef in a restaurant kitchen, throughout the game you will have to cook recipes for your customers.
To prepare a dish, you will have to pick up the required ingredients, cut or cook them if necessary, and place them on a plate.
Be careful not to burn the ingredients, or you will have to throw them away and start over.
Once you have all the ingredients on the plate, you can deliver it to the customer by placing it on the delivery counter (the counter with the moving arrow).
Requests have a time limit, so you will have to be quick to deliver them before they expire.
See what score can you get before the time runs out!
On the keyboard:
- WASD or Arrow Keys to move
- Space or E or P to interact with objects
- F or L to cut ingredients
- ESC to pause the game
On a xbox controller (most other controllers should work as well):
- Left Stick to move
- A button to interact with objects
- X button to cut ingredients
- Select button to pause the game
- Unity 2022.3 or newer (tested with 2022.3.8 on Windows 10 and Linux)
- Clone this repository (github docs)
- Open the project in Unity through Unity Hub
- Open the scene
Assets/Scenes/GameScene.unity
- Build the project (File -> Build Settings -> Build) and select a folder to build to
- Play the game by running the executable in the build folder
optionally, you can also run the game directly from Unity by pressing the play button in the top center of the screen
The Bot AI is implemented as a finite state machine, with the following states:
- Pick up Plate
- Place Plate
- Get Ingredients
- Ingredient Burning
- Ingredient Left on CuttingCounter
- Drop Ingredient
- Pick up completed Plate
- Deliver
- Recipe failed
simplified version of the Bot AI logic