public GameServer(Match match, List<String> hosts, List<Integer> ports) {
    this.match = match;

    this.hosts = hosts;
    this.ports = ports;

    playerGetsUnlimitedTime = new Boolean[hosts.size()];
    Arrays.fill(playerGetsUnlimitedTime, Boolean.FALSE);

    playerPlaysRandomly = new Boolean[hosts.size()];
    Arrays.fill(playerPlaysRandomly, Boolean.FALSE);

    stateMachine = new ProverStateMachine();
    stateMachine.initialize(match.getGame().getRules());
    currentState = stateMachine.getInitialState();
    previousMoves = null;

    mostRecentErrors = new HashMap<Role, String>();

    match.appendState(currentState.getContents());

    observers = new ArrayList<Observer>();

    spectatorServerURL = null;
    forceUsingEntireClock = false;
  }