private boolean assignInstance(UnityInstance instance) {
    Player player = PlayerService.getInstance().assignUnityAgent();
    if (player == null) {
      logger.debug("Unable to assign player for unity instance " + instance.status.name);
      return false;
    }

    UnityInstanceStatus status = instance.status;

    status.playerId = player.id;
    status.requestedState = UnityInstanceStatus.State.Running;
    status.state = UnityInstanceStatus.State.None;
    status.zone = ZoneService.getZone(status.name);
    PlayerService.getInstance().setZone(status.playerId, status.zone);
    GridService.getInstance().createForZone(status.zone.number);

    zoneToName.put(status.zone.number, status.name);
    instance.assigned = true;
    return true;
  }