Skip to content

Directory Structure

Tyler Yep edited this page Dec 26, 2021 · 3 revisions

Files

Game Simulation

  • const.py (Stores all constants, along with their use cases)
  • main.py (Driver for game simulations)
  • one_night.py (Plays one game of One Night Ultimate Werewolf)
  • stats.py (Used to aggregate many GameResults into fixed statistics)
  • replay.py (python main.py -r will replay the most recently run game)
  • encoder.py (Used to encode all custom WolfBot class objects)

Algorithms and Solvers

  • algorithms.py (Includes all solvers and consistency checks for groups of statements)
  • generate.py (Used to generate data for many game iterations)
  • predictions.py (Makes predictions given a SolverSolution)
  • train.py (Used for Reinforcement Learning Wolf)
  • voting.py (Used to aggregate prediction results)

Game Components

  • roles/
    • village (Stores all good player roles and their associated methods)
    • werewolf (Stores all evil player roles and their associated methods)
  • statements.py (Statement class with associated methods)
  • util.py (Some basic util functions)

Roles

Village Team: (Stores all Good player roles and their associated methods)

  • Villager
  • Mason
  • Seer
  • Robber
  • Troublemaker
  • Drunk
  • Insomniac

Werewolf Team: (Stores all Evil player roles and their associated methods)

  • Wolf
  • Minion

Tanner Team: (Wildcard player)

  • Tanner

Wolf Theory: Choose statements that do a good job, not necessarily the absolute best ones.

File Dependency Tree

Simplified version (some cycles exist)

src/

main.py         (const, one_night, replay)
enums.py
const.py        (enums)
|-- statements.py   (const)
|-- util.py         (const)
|   |-- algorithms.py   (const, statements)
|   |-- roles/          (const, statements, util)
|   |   |-- stats.py          (const, roles, statements)
|   |   |   |-- solvers/        (const)
|   |   |   |-- predictions/    (const, algorithms)
|   |   |   |-- generate.py       (const, algorithms, one_night, encoder)
|   |   |   |-- encoder.py        (const, roles, statements, stats)
|   |   |   |   |-- one_night.py        (const, util, roles, encoder, voting)
|   |   |   |   |-- replay.py           (const, algorithms, encoder, prediction, stats, voting)
|   |   |   |   |-- train.py            (encoder, main)
|   |   |   |   |-- voting.py           (const, roles, statements, stats)

roles/

player.py

roles/villager/ (player)

|-- drunk.py
|-- insmoniac.py (imports wolf in get_statements)
|-- mason.py
|-- robber.py (imports wolf in get_statements)
|-- seer.py
|-- troublemaker.py
|-- villager.py

roles/werewolf/ (player, villager)

|-- minion.py
|-- wolf.py (imports wolf in get_statements)
|   |-- center_wolf.py
|   |-- expectimax_wolf.py
|   |-- random_wolf.py
|   |-- reg_wolf.py
|   |-- rl_wolf.py