1
0
Fork 0

minor readme improvements

This commit is contained in:
Lili (Tlapka) 2021-05-26 12:26:58 +02:00
parent b6ad1db967
commit 9d9f08df1d
1 changed files with 12 additions and 11 deletions

View File

@ -1,15 +1,16 @@
# Adaptive game assistant # Adaptive game assistant
The adaptive game assistant is a Python program allowing easy deployment and playing of adaptive cybersecurity games. The adaptive game assistant is a Python program allowing easy deployment and playing of adaptive cybersecurity games.
The assistant was made as a part of my [bachelor's thesis]() for the university's KYPO lab. The assistant was made as a part of my [bachelor's thesis]().
The version of the assistant included in the thesis appendix required
that the player get some help from an instructor while playing.
This improved version allows for the player to play through the game completely on their own. This improved version allows was made for the PA197 course.
The games the assistant can help with must be made with Vagrant and Ansible (as other games for Unlike the original, this version allows players to play through the game completely on their own.
(The original required some input and help from a course instructor).
The games the assistant can run must be made with Vagrant and Ansible (as other games for
the KYPO Cyber Range). The Ansible playbooks need to have all tasks tagged, and the KYPO Cyber Range). The Ansible playbooks need to have all tasks tagged, and
there need to be game-specific config files in the `resources` subfolder. there need to be game-specific config files in the `resources/` subfolder.
## Usage ## Usage
The adaptive game assistant is ran by running `./assistant.py` or `python assistant.py` in the project folder. The adaptive game assistant is ran by running `./assistant.py` or `python assistant.py` in the project folder.
@ -40,15 +41,15 @@ Virtualbox 6.0 or higher and Vagrant 2.2.5 or higher are recommended.
The main file, `assistant.py`, wraps around several classes the `adaptive_game_module` folder, The main file, `assistant.py`, wraps around several classes the `adaptive_game_module` folder,
and transforms the user's commands into method calls on the objects. and transforms the user's commands into method calls on the objects.
The adaptive game module contains: The adaptive game module contains:
- `adaptive_game.py`. The `Game` object from this file represents the game itself. - `adaptive_game.py`. The `Game` class represents the state of the game.
- `flag_checker.py`. The `FlagChecker` class checks if flags are correct. - `flag_checker.py`. The `FlagChecker` class checks if flags are correct.
- `hint_giver.py`. The `HintGiver` class keeps tracks of taken hints and gives new ones. - `hint_giver.py`. The `HintGiver` class keeps tracks of taken hints and gives new ones.
- `level_selector.py`. The `LevelSelector` class helps decide which level to go to next. - `level_selector.py`. The `LevelSelector` class helps decide which level to go to next.
### Game config files ### Game config files
The assistant is written with modularity in mind, so it should support other adaptive games, Besides tagged ansible playbooks, each adaptive game needs a few config files to work.
as long as config files for those are written. `assistant.py` looks for config files in the The config files are mostly YAML lists and dicts.
`resources/` folder. `assistant.py` looks for config files in the `resources/` folder.
The needed files are: The needed files are:
- `levels.yml` - `levels.yml`
@ -57,7 +58,7 @@ The needed files are:
- `level_requirements.yml` - `level_requirements.yml`
- `tools.yml` - `tools.yml`
All of the files should be in YAML. There are sample config files present in the `resources/` folder already. There are sample config files present in the `resources/` folder.
(These are the files I created for the game I used in my thesis.) (These are the files I created for the game I used in my thesis.)
#### levels.yml #### levels.yml
`levels.yml` tells the Game object what possible levels are in the game, what Ansible tags `levels.yml` tells the Game object what possible levels are in the game, what Ansible tags