public GameStat(RecentGame game, Player p){
        gameId = game.gameId;
        gameDate = game.createDate;
        gameLength = game.stats.getTimePlayed();
        ranked = (subType = game.getSubType()).contains("RANKED_");
        Logger.loudLog("    Building game "+ gameId + " (" + Time.setDate(gameDate).dateTime() + ")");
        try{
        	playedAs = p.getMini();
        	playedAs.championId = game.getChampionId();
        	playedAs.teamId = game.getTeamId();
        	playedAsSummoner = new Summoner(p, game, blueTeam, purpleTeam);
        	if(game.teamId==100)
                blueTeam.activePlayers.add(playedAsSummoner);
            else
                purpleTeam.activePlayers.add(playedAsSummoner);
            try{
                for(PlayerMini pm: game.fellowPlayers){
                    //TODO this can be optimized - add an arraylist of active players, add functionality in RiotAPI to get multiple Summoners
                    if(pm.teamId==100)
                        blueTeam.activePlayers.add(new Summoner(Player.findPlayerById(pm.summonerId), blueTeam, gameId));
                    else
                        purpleTeam.activePlayers.add(new Summoner(Player.findPlayerById(pm.summonerId), purpleTeam, gameId));
                    Logger.loudLog(".");
                }
            }
            catch(Exception e){
                Logger.log(e);
                incomplete = true;
            }
        }
        catch(Exception e){
            Logger.log(e);
            Logger.loudLog("\n  Error:" + e.getMessage() + "\n  in gameId: " + gameId);
        }
	    Logger.loudLogLine(incomplete ? " created incompletely" : " created!");
        blueTeam.init();
        purpleTeam.init();
    }