Dev

Elvenarchy: as estatísticas de Elvenar que faltavam

Porque criei o Elvenarchy, um site de estatísticas de Elvenar (Elvenar stats) com rankings, torneios, irmandades e histórico de 50 mundos — o que se pode encontrar lá e como funciona por dentro.

Quem joga Elvenar há algum tempo acaba sempre a fazer as mesmas perguntas: quem da minha irmandade está mesmo ativo? Quantos pontos preciso de fazer no torneio desta semana? Em que Maravilha Antiga compensa investir os meus KP? Que irmandade tem vagas e joga ao meu ritmo?

O jogo não responde a quase nenhuma destas perguntas — mostra o ranking do momento e pouco mais. Foi daí que nasceu o Elvenarchy: um site de estatísticas de Elvenar (Elvenar stats) que recolhe os dados públicos de dezenas de mundos do jogo, guarda o histórico e transforma-o em rankings, gráficos e ferramentas.


Porque criei o Elvenarchy

Durante anos, a referência para estatísticas de Elvenar foi o ElvenStats. Só que o ElvenStats deixou de ser desenvolvido, e as atualizações recentes do jogo começaram a deixá-lo para trás: há dados que deixaram de aparecer ou de bater certo, e funcionalidades que deixaram de funcionar. Para quem gere uma irmandade e depende destes números todas as semanas, ficar sem uma ferramenta mantida era um problema real.

Ao mesmo tempo, mesmo quando funcionava, faltavam-me coisas: as listas cortavam no top-100, guardava-se pouco histórico e a informação não se cruzava — o torneio de um jogador não aparecia ao lado da evolução da cidade, e a saída de um membro não aparecia ao lado da quebra de pontos da irmandade.

Por isso decidi construir uma alternativa que guardasse tudo, desde sempre, para o maior número possível de mundos, que acompanhasse as mudanças do jogo e que respondesse às perguntas que eu e a minha irmandade fazíamos todas as semanas. Como é também um bom projeto para experimentar recolha de dados em grande escala, SQLite com dezenas de milhões de registos e um backend em Node.js a correr 24/7, juntei o útil ao agradável.


O Elvenarchy em números

Valores aproximados, em outubro de 2026.

O quêQuantidade
Mundos acompanhados50 (PT, BR, EN, US, DE, FR, ES, PL, NL, IT e mais)
Jogadorescerca de 1 milhão
Irmandades com membroscerca de 75 mil
Resultados de torneio guardadoscerca de 33 milhões, desde 2016
Registos de pontuação (histórico)cerca de 81 milhões

Os dados são atualizados ao longo de todo o dia, em ciclos contínuos que passam por todos os mundos acompanhados. A cobertura continua a crescer: ainda há alguns mundos por acompanhar.


O que podes encontrar no Elvenarchy

Tudo o que está nesta secção é público e não precisa de conta.

Dashboard — o resumo do mundo: eventos a decorrer, o que mudou esta semana e este mês, recordes, e as notícias oficiais do jogo (anúncios, beta e notas de versão) reunidas num sítio só.

Jogadores — o ranking completo de cada mundo, sem corte no top-100, com filtros por raça e capítulo. Cada jogador tem a sua página, com uma linha do tempo que junta num só gráfico a evolução da pontuação, os resultados de torneio semana a semana, as subidas de nível das Maravilhas e as mudanças de irmandade.

Irmandades — ranking por pontuação, membros e desempenho em torneio. A página de cada irmandade mostra:

  • a linha do tempo da irmandade: pontuação, pontos de torneio (as semanas ganhas a dourado) e as entradas e saídas de membros no mesmo eixo, para se perceber de onde vêm os saltos;
  • a saúde da irmandade: quem está ativo, quem só dá sinais de vida na cidade e quem parou;
  • a lista de membros, com a média de torneio de cada um nas últimas 4 semanas, e as vagas livres.

Torneios — os resultados semanais por jogador e por irmandade, com o histórico completo, e rankings globais que comparam as melhores pontuações entre os mundos acompanhados.

Planeador de Torneio — marca as províncias e os encontros que fizeste (ou planeias) e vê quantos pontos dão, já com os bónus das Maravilhas e as arcas da irmandade. Também faz o caminho inverso: a partir de uma pontuação, diz quantas províncias completas lhe correspondem. Os valores vêm de uma tabela medida no próprio jogo, não de estimativas.

Pináculo da Eternidade e Aventuras de Irmandade — classificações e histórico, ronda a ronda.

Momentum e Transferências — que jogadores e irmandades estão a subir ou a descer, e a que ritmo; quem entrou, saiu ou mudou de irmandade, e quando.

Com conta registada

Para quem cria conta há ferramentas extra, pensadas para quem gere uma irmandade ou quer otimizar a cidade:

  • AW Farmer — encontra as Maravilhas Antigas onde compensa investir KP: quase fechadas e com lugares de prémio ainda baratos. Calcula o lucro de cada vaga e avisa quando aparece uma vaga lucrativa numa maravilha que segues.
  • Scout — ajuda a recrutar: procura candidatos para a tua irmandade pelos resultados de torneio das últimas semanas (elite, em crescimento ou consistentes), pode mostrar só quem está sem irmandade e prepara a mensagem de convite pronta a colar no jogo.
  • Comparar — jogadores e irmandades lado a lado.
  • Alertas — um sino no site avisa quando alguém entra ou sai de uma irmandade que segues, quando um membro deixa de jogar, e outras mudanças.
  • Extensão de browser (opcional) — envia ao Elvenarchy os dados que tu próprio vês no jogo. Com ela, o teu perfil passa a mostrar os bónus reais das tuas Maravilhas, o dano e a vida reais das tuas unidades e o mapa do mundo centrado na tua cidade.

Como funciona por dentro

De onde vêm os dados. Há duas fontes atuais e uma herança do passado:

  1. a GameAPI da InnoGames: com contas de jogo registadas nos vários mundos, um processo entra no jogo só para ler rankings, torneios, irmandades e cidades (níveis exatos de Maravilhas, edifícios, cultura, áreas desbloqueadas) — nunca faz nenhuma ação no jogo. É daqui que vêm os rankings e os torneios atualizados ao longo do dia, e é o que permite acompanhar as atualizações do jogo sem depender de terceiros;
  2. a API pública do ElvenStats, que trouxe o histórico antigo (os resultados de torneio desde 2016) e que já deixei de usar na recolha corrente: os boosts das cidades, que só ela fornecia, passaram a ser calculados a partir da grelha do mapa do jogo;
  3. a extensão, para os dados que só o próprio jogador vê.

A arquitetura. O backend é Node.js com Express, a base de dados é SQLite (via better-sqlite3) e as atualizações em tempo real chegam ao browser por WebSocket. À frente está o Apache, e à frente deste a Cloudflare — o servidor só aceita ligações vindas dela.

O better-sqlite3 é síncrono: enquanto uma consulta corre, o processo não faz mais nada. Com dezenas de milhões de linhas, uma consulta lenta no processo do site deixava-o parado para toda a gente. Por isso a recolha e os cálculos pesados correm num processo filho separado (o worker), e tudo o que é agregado (médias de torneio, rankings, crescimento) é calculado em segundo plano para tabelas de cache. As páginas leem dessas tabelas, nunca da tabela de dez milhões de linhas.

Algumas armadilhas que aprendi pelo caminho:

  • Os ids repetem-se entre mundos. A irmandade nº 9 do mundo PT1 e a nº 9 do DE1 são irmandades diferentes. Parece óbvio, mas qualquer consulta que se esqueça do mundo mistura dados de dois servidores — e durante algum tempo isso acontecia em vários sítios.
  • Não confiar no rank que vem de fora. Fontes diferentes numeram a sua lista (o top-100 de uma, a página devolvida pela outra), e nenhuma sabe a posição real no mundo. As posições de torneio passaram a ser calculadas pelo próprio Elvenarchy a partir dos pontos, com regras de empate iguais em todo o site.
  • Séries que mudam de fonte. O histórico de pontuação tem duas eras, com escalas diferentes. Comparar um valor de uma era com um da outra dá crescimentos de milhões que nunca aconteceram — por isso as comparações só usam valores da mesma era.
  • Uma aplicação de página única não é uma página para o Google. Sem JavaScript, o Google via o menu do site em vez dos dados. Os jogadores e irmandades têm agora páginas próprias geradas no servidor, que abrem sem JavaScript e entram no sitemap.

Como podes ajudar

  • Partilha o site com a tua irmandade, no Discord ou nos fóruns do Elvenar.
  • Reporta erros ou sugere funcionalidades — muitas das ferramentas que lá estão nasceram de pedidos de jogadores.
  • Empresta uma conta de jogo num mundo sem cobertura GameAPI: a password é guardada cifrada e usada só para leitura. O administrador do site consegue vê-la, por isso não uses uma password que uses noutros serviços.

Experimenta em elvenarchy.fuzzalab.pt — escolhe o teu mundo no topo e procura o teu nome.

Partilhar

Comentários 0

Ainda sem comentários — sê o primeiro.