public GameApplication(
      Game game,
      boolean multiplayer,
      String joinAdress,
      String playerId,
      int playerNumber,
      String map) {
    this.game = game;
    this.map = map;

    setPauseOnLostFocus(false);
    setShowSettings(false);

    if (joinAdress.isEmpty()) {
      server = new GameServer();
      if (server.isStarted() == false) {
        System.out.println("Error cannot start server");
        System.exit(0);
      }

      joinAdress = "localhost";
    }

    if (multiplayer) {
      try {
        client = new GameClient(game, joinAdress, playerId, playerNumber);
      } catch (Exception e) {
        if (server != null) {
          server.close();
          System.out.println("Client error " + e.getMessage());
          System.exit(0);
        }
      }
    }

    try {
      FileInputStream fis = new FileInputStream(new File("settings.txt"));
      AppSettings settings = new AppSettings(true);
      settings.load(new BufferedInputStream(fis));
      setSettings(settings);
    } catch (Exception e) {
      AppSettings settings = new AppSettings(true);
      settings.setResolution(1024, 768);
      settings.setFrameRate(50);
      settings.setFullscreen(false);
      settings.setTitle("JPenguin");

      setSettings(settings);
    }
  }
  @Override
  public void destroy() {
    super.destroy();

    if (client != null) {
      client.close();
    }

    if (server != null) {
      server.close();
    }

    game.getFogOfWar().destroy();
  }