This repository is the official implementation of the paper titled "Bilevel Entropy based Mechanism Design for Balancing Meta in Video Games".
Brief Description: Our paper formulates the game meta balance problem as mechanism design problem. We set the objective of the designer as maximizing the entropy of a (given) player's mixed strategy (over the strategy space) at nash equilibrium. Such a formulation, paired with state-of-the-art solvers leads to a scalable algorithm as shown in our paper. The repository provides an official implementation of our problem formulation. The respository also serves as a benchmark for game balance on three domains (source code adapted from respective gits)
- Rock Paper Scissor Fire Water (RPSFW)
 - Workshop Workfare (WW) (also referred as coolgame in code)
 - Pokemon Video Game Championship (VGC)
 
If you find our work useful in your research please consider citing our paper:
@inproceedings{game-balance-2023-bigmb,
  title     = {Bilevel Entropy based Mechanism Design for Balancing Meta in Video Games},
  author    = {Pendurkar, Sumedh and
               Chow, Chris and
               Jie, Luo and
               Sharon, Guni
               },
  booktitle = {The 22nd International Conference on Autonomous Agents and Multiagent Systems (AAMAS)},
  month = {May},
year = {2023}
}
poetry install
if you are in a pip-only environment, then
pip install -r requirements.txt
If elo and gym have difficulty installing. get into the virtualenv that poetry creates
and pip install the particular versions needed.
poetry run python src/metagame_balance/main.py
usage: main [-h] [--n_epochs N_EPOCHS] [--snapshot_gameplay_policy_epochs SNAPSHOT_GAMEPLAY_POLICY_EPOCHS] [--snapshot_game_state_epochs SNAPSHOT_GAME_STATE_EPOCHS] [--reg REG] [--baseline]
            {rpsfw,vgc,coolgame} ...
positional arguments:
  {rpsfw,vgc,coolgame}  domain
optional arguments:
  -h, --help            show this help message and exit
  --n_epochs N_EPOCHS
  --snapshot_gameplay_policy_epochs SNAPSHOT_GAMEPLAY_POLICY_EPOCHS
  --snapshot_game_state_epochs SNAPSHOT_GAME_STATE_EPOCHS
  --reg REG
  --baseline
usage: main coolgame [-h] [--cmaes_init_var CMAES_INIT_VAR] [--entropy_eval_epochs ENTROPY_EVAL_EPOCHS]
optional arguments:
  -h, --help            show this help message and exit
  --cmaes_init_var CMAES_INIT_VAR
  --entropy_eval_epochs ENTROPY_EVAL_EPOCHS
Using poetry:
poetry run main coolgame
or, using python directly
python ./src/metagame_balance/main.py coolgame
(keeping in mind you can use the commandline args above.)
Copyright © Niantic, Inc. 2023. Patent Pending. All rights reserved. Please see the license file for terms.