Uma versão moderna e robusta do sistema de ranking ARAM, desenvolvida em TypeScript com um sistema de MMR avançado e balanceamento inteligente de times.
- Sistema MMR Robusto: Algoritmo Elo adaptado para ARAM com fatores dinâmicos
- Balanceamento Inteligente: Formação automática de times balanceados por MMR e roles
- Bot Discord: Interface completa via Discord com comandos intuitivos
- Banco de Dados SQLite: Armazenamento persistente com histórico completo
- TypeScript: Código tipado e moderno para maior confiabilidade
- Arquitetura Modular: Serviços e controladores bem estruturados
src/
├── controllers/ # Controladores da aplicação
│ ├── DiscordController.ts
│ ├── PlayerController.ts
│ └── QueueController.ts
├── models/ # Modelos de dados
│ ├── Player.ts
│ ├── Queue.ts
│ └── Match.ts
├── services/ # Serviços de negócio
│ ├── MMRService.ts
│ ├── TeamBalancerService.ts
│ └── DatabaseService.ts
├── types/ # Definições de tipos TypeScript
│ └── index.ts
└── index.ts # Arquivo principal
O sistema utiliza um algoritmo Elo adaptado especificamente para partidas ARAM:
- Fator K Dinâmico: Ajusta baseado no número de jogos e MMR atual
- Bônus de Streak: Recompensa sequências de vitórias
- Performance Individual: Considera KDA e outros fatores
- Balanceamento de Times: Penaliza times desbalanceados
- Confiança MMR: Indica a confiabilidade do rating
- Distribuição por MMR: Jogadores distribuídos alternadamente para manter equilíbrio
- Otimização Automática: Troca jogadores entre times para melhorar balanceamento
- Distribuição de Roles: Considera roles preferidas dos jogadores
- Score de Balanceamento: Métrica numérica para qualidade do balanceamento
-
!join- Entra na fila ARAM -
!leave- Sai da fila atual -
!status- Mostra status da fila ativa -
!profile [@user]- Mostra perfil de um jogador -
!top [número]- Mostra top jogadores -
!stats- Mostra estatísticas globais -
!help- Mostra ajuda
-
Clone o repositório
git clone <url-do-repositorio> cd aramhouse
-
Instale as dependências
npm install
-
Configure as variáveis de ambiente Crie um arquivo
.envbaseado no.env.example:DISCORD_TOKEN=seu_token_aqui DISCORD_CLIENT_ID=seu_client_id_aqui DISCORD_GUILD_ID=seu_guild_id_aqui DISCORD_CHANNEL_ID=seu_channel_id_aqui NODE_ENV=development
-
Compile o projeto
npm run build
-
Execute a aplicação
npm start
npm run build- Compila o projeto TypeScriptnpm start- Executa a versão compiladanpm run dev- Executa em modo desenvolvimentonpm run watch- Compila automaticamente em mudançasnpm run clean- Limpa arquivos compilados
- Criação automática de filas
- Balanceamento inteligente de times
- Remoção de jogadores inativos
- Estatísticas em tempo real
- Histórico completo de partidas
- Estatísticas por jogador
- Rankings atualizados
- Análise de performance
- Serviços em background
- Limpeza automática de dados antigos
- Logs detalhados de operações
- Tratamento robusto de erros
O sistema é altamente configurável através do arquivo de configuração:
const config: AppConfig = {
queue: {
minPlayers: 8,
maxPlayers: 10,
teamSize: 5,
maxMmrDifference: 200,
roleDistribution: [
{ name: "ADC", priority: 1, required: true },
{ name: "Support", priority: 2, required: true },
// ... mais roles
],
},
};- Validação de entrada em todos os comandos
- Sanitização de dados do Discord
- Transações de banco de dados para operações críticas
- Tratamento robusto de erros
Este projeto está sob a licença ISC.
Contribuições são bem-vindas! Por favor, abra uma issue ou pull request para sugestões e melhorias.
Para suporte ou dúvidas, abra uma issue no repositório ou entre em contato com a equipe de desenvolvimento.