gan-aimbots icon indicating copy to clipboard operation
gan-aimbots copied to clipboard

Code for the experiments done in the paper "GAN-Aimbots: Using Machine Learning for Cheating in First Person Shooters"

Code and data used in the "GAN-Aimbots: Using Machine Learning for Cheating in First Person Shooters", to be published in IEEE Transactions on Games (early access version here).

Note: Code quality is best classified as "researchy", mixed with bad case of not following code styles.

For data, see this Zenodo record.

Contents and overview

  • data directory contains the data collected during the research (download from Zenodo).
  • scripts contains shell scripts that should be used to run experiments.
  • shared_parameters contains the group 1 and 2 GAN-Aimbots used in the paper. They are also used by the recording scripts (see below).
  • scenarios contains the Doom map/scenario files for setting up the game.
  • Remaining directories/files are Python files that contain all the code for the experiments.

Requirements

Playing with the aimbots in ViZDoom only works on Windows!

Experiments were ran on Python 3.6, but should work on any Python 3.x. For other requirements, see requirements.txt.

Note: To compare different classifiers, you also need to install auto-sklearn.

Running the experiments

To repeat the experiments in paper with shared data, run ./scripts/run_all.sh in the root directory. If all works out, this should train DNN classifiers in different setups and evaluate them, and results should match closely to what was reported in the paper. This will also train the GAN-Aimbots, but they are not used for the results, as that would require data collection.

The whole process should take well less than a hour. No GPU is needed.

All results will be printed out in the console window and figures are placed under figures directory.

Trying out the game

Run one of the data_collection_* scripts to try out the game and different aimbots. For a newcomer, we recommend playing data_collection_performance.py (takes 30min) which will let you play with and without all aimbots used in the work.

Data collection scripts

Scripts starting with data_collection_* are Python scripts that were used to gather the data, in their original form (including the messages to users). These were packed into single executable files (.exe) using PyInstaller.

Launching any of the following scripts prompts user to agree with a consent agreement, and after agreeing launches a Doom game with or without aimbots. Data is stored in the same directory where script was launched.

  • data_collection_original.py is data collection 1, collecting data for light and strong aimbots (and no aimbot).
  • data_collection_gan.py is data collection 2, collecting data for GAN group 1 and 2 aimbots (and no aimbot)
  • data_collection_performance.py is data collection 3, collecting data for light, strong and GAN group 1 aimbots (and no aimbot).
  • data_collection_recording.py is data collection 4, collecting video recordings of light, strong and GAN group 1 aimbots (and no aimbot).