Esempio n. 1
0
    def delta_time_to_collect_item(self):
        # Sabemos que metade dos bots coletam itens automaticamente sempre que estes aparecem no cenário
        some_bots = round(self.bot_players / 2)
        some_bots_delta_time = dist.positive(np.random.normal,
                                             (100, 25, some_bots)).round()

        # Enquanto a outra metade dos trapaceiros não utiliza o recurso
        other_bots = self.bot_players - some_bots
        other_bots_delta_time = dist.positive(np.random.normal,
                                              (2500, 800, other_bots)).round()

        # Assim como os jogadores justos
        players_delta_time = dist.positive(
            np.random.normal, (2500, 800, self.fair_players)).round()

        return (np.concatenate(
            (some_bots_delta_time, other_bots_delta_time)), players_delta_time)
Esempio n. 2
0
    def collected_items(self):
        # Sabemos que metade dos bots coletam itens automaticamente
        some_bots = round(self.bot_players / 2)
        some_bots_collected_items = dist.positive(np.random.normal,
                                                  (20, 4, some_bots)).round()

        # Enquanto a outra metade dos bots não utiliza este recurso
        other_bots = self.bot_players - some_bots
        other_bots_collected_items = dist.positive(np.random.normal,
                                                   (8, 4, other_bots)).round()

        # Assim como os jogadores justos
        players_collected_items = dist.positive(
            np.random.normal, (8, 4, self.fair_players)).round()

        return (np.concatenate(
            (some_bots_collected_items, other_bots_collected_items)),
                players_collected_items)
Esempio n. 3
0
    def killed_enemies(self):
        # Sabemos que metade dos bots matam muitos monstros
        some_bots = round(self.bot_players / 2)
        some_bots_killed_enemies = dist.positive(np.random.normal,
                                                 (20, 5, some_bots)).round()

        # Enquanto a outra metade não usa todo seu potencial
        other_bots = self.bot_players - some_bots
        other_bots_killed_enemies = dist.positive(np.random.normal,
                                                  (12, 4, other_bots)).round()

        # E existem jogadores justos desde os muito ruins até os muito bons
        players_killed_enemies = dist.positive(
            np.random.normal, (12, 8, self.fair_players)).round()

        return (np.concatenate(
            (some_bots_killed_enemies, other_bots_killed_enemies)),
                players_killed_enemies)
Esempio n. 4
0
    def heal_threshold(self):
        # Sabemos que metade dos bots possui um limiar alto para começar a cura
        some_bots = round(self.bot_players / 2)
        some_bots_heal_threshold = dist.positive(np.random.normal,
                                                 (60, 2, some_bots)).round()

        # Enquanto a outra metade utiliza um limiar baixo para começar a cura
        other_bots = self.bot_players - some_bots
        other_bots_heal_threshold = dist.positive(np.random.normal,
                                                  (20, 2, other_bots)).round()

        # Ao passo que os jogadores justos são imprevisíveis
        players_heal_threshold = np.random.uniform(10, 95,
                                                   self.fair_players).round()

        return (np.concatenate(
            (some_bots_heal_threshold, other_bots_heal_threshold)),
                players_heal_threshold)
Esempio n. 5
0
    def delta_time_to_start_healing(self):
        # Sabemos que metade dos bots sempre começam a se curar assim que sua vida chega a um limiar
        some_bots = round(self.bot_players / 2)
        some_bots_delta_time = dist.positive(np.random.normal,
                                             (1000, 100, some_bots)).round()

        # Enquanto a outra metade tem um comportamento errático
        other_bots = self.bot_players - some_bots
        other_bots_delta_time = np.random.uniform(500, 2000,
                                                  other_bots).round()

        bots_delta_time = np.random.permutation(
            np.concatenate((some_bots_delta_time, other_bots_delta_time)))

        # Ao passo que os jogadores justos são previsíveis apesar de variar bastante
        players_delta_time = dist.positive(
            np.random.normal, (1500, 300, self.fair_players)).round()

        return (bots_delta_time, players_delta_time)
Esempio n. 6
0
    def avg_time_to_start_healing(self):
        # Sabemos que metade dos bots começam a se curar assim que sua vida chega a um limiar
        some_bots = round(self.bot_players / 2)
        some_bots_avg_time = dist.positive(np.random.normal,
                                           (600, 50, some_bots)).round()

        # E metade desses bots utilizam algum atraso fixo para reagir
        other_bots = self.bot_players - some_bots
        other_bots_avg_time = dist.positive(np.random.normal,
                                            (600, 50, other_bots)).round()
        other_bots_avg_time += np.random.uniform(1, 10,
                                                 other_bots).round() * 100

        bots_avg_time = np.random.permutation(
            np.concatenate((some_bots_avg_time, other_bots_avg_time)))

        # Ao passo que os jogadores justos variam em torno de 2500 ms
        players_avg_time = dist.positive(
            np.random.normal, (2500, 450, self.fair_players)).round()

        return (bots_avg_time, players_avg_time)
Esempio n. 7
0
    def avg_time_to_collect_item(self):
        # Sabemos que metade dos bots coletam itens automaticamente assim que estes aparecem no cenário
        some_bots = round(self.bot_players / 2)
        some_bots_avg_time = dist.positive(np.random.normal,
                                           (600, 50, some_bots)).round()

        # E metade desses bots utilizam algum atraso fixo para reagir
        half_some_bots = round(some_bots / 2)
        some_bots_avg_time[half_some_bots:] += np.random.uniform(
            1, 10, half_some_bots).round() * 100

        # Enquanto a outra metade dos bots não utiliza o recurso
        other_bots = self.bot_players - some_bots
        other_bots_avg_time = dist.positive(np.random.normal,
                                            (1500, 250, other_bots)).round()

        # Assim como os jogadores justos
        players_avg_time = dist.positive(
            np.random.normal, (1500, 250, self.fair_players)).round()

        return (np.concatenate(
            (some_bots_avg_time, other_bots_avg_time)), players_avg_time)
Esempio n. 8
0
    def hungry_time(self):
        # Sabemos que metade dos bots alimenta o personagem frequentemente
        some_bots = round(self.bot_players / 2)
        some_bots_hungry_time = dist.positive(np.random.normal,
                                              (60, 10, some_bots)).round()

        # Enquanto a outra metade alimenta o personagem aleatoriamente
        other_bots = self.bot_players - some_bots
        other_bots_hungry_time = np.random.uniform(30, 300, other_bots).round()

        # Assim como os jogadores justos, que esquecem de realizar a tarefa
        players_hungry_time = np.random.uniform(30, 300,
                                                self.fair_players).round()

        return (np.concatenate((some_bots_hungry_time,
                                other_bots_hungry_time)), players_hungry_time)