← Voltar para conteúdos

Estudo / projeto

TibiaTracker: Assistente de Análise de Progresso no Tibia

Um projeto de portfólio que rastreia automaticamente o progresso do personagem no Tibia, utilizando Google Apps Script para coleta de dados, Google Sheets para armazenamento e Looker Studio para visualização.

Publicado em Jan 3, 2026

TibiaTracker - Monitor de Progresso para o jogo Tibia

PythonDashRender

📊 Visão Geral do Projeto

Dashboard interativo e de alta performance para acompanhar a jornada rumo ao Level 1000 no Tibia.

Automatiza a coleta diária de dados via Google Apps Script e armazena tudo em Google Sheets, oferecendo análises detalhadas e visualizações ricas através de um dashboard construído com Dash (Plotly).

📂 Estrutura de Arquivos

TIBIATRACKER-PY/
├── 📁 .venv/                # Ambiente virtual (isolamento de bibliotecas)
├── 📁 assets/               # CSS, imagens e identidade visual (Cyborg)
├── 📄 app.py                # Core do Dashboard (Dash/Plotly) 
├── 📄 tibiatracker.js       # Script de automação (Google Apps Script) 
├── 📄 requirements.txt      # Dependências do projeto (pip install)
├── 📄 README.md             # Documentação técnica e guia de uso
├── 📄 .env                  # Variáveis de ambiente (Segredo)
├── 📄 .gitignore            # Proteção contra upload de arquivos sensíveis
└── 📄 credenciais.json      # Chave de acesso à API do Google

🔄 Fluxo Lógico (Simplificado)

  1. EXTRAGEM: tibiatracker.jsTibiaData API
  2. DEPÓSITO: Google Sheets (Banco de dados)
  3. ANÁLISE: app.pyPandas/Plotly (Processamento)
  4. DEPLOY: Render ➔ Usuário final

Deseja ver o resultado final?

🔗 Repositório no GitHub:
👉 https://github.com/peixotojeff/tibiatracker.py

🔗 Acesse o dashboard online (exemplo):
👉 https://tibia-tracker.onrender.com


🎯 Principais Funcionalidades e Visualizações

  • Roadmap de Progresso (Milestones): Evolução do level ao longo do tempo
  • Heatmap de Intensidade de Hunts: Ganho diário e semanal de experience (identifica dias/horários mais produtivos)
  • Análise de Cenários ETA: Previsões de tempo restante para o level 1000 (cenários: ritmo atual, melhor caso, pior caso, média dos últimos 30 dias)
  • Aderência à Meta Diária (SLA): Você está "pagando o boleto" de XP todo dia?
  • Curva de Entrega vs. Plano Acumulado: Desvio acumulado em relação à meta
  • Indicadores de Tendência e Performance: Taxa média diária/semanal, impacto de mortes, hunts recorde
  • Esforço Residual: Quanto XP falta para o próximo level / milestone

Exemplos de insights que o dashboard entrega

  • Quantos dias faltam (projeção realista, otimista e pessimista)
  • Taxa média de XP/hora e XP/dia nos últimos 7/30/90 dias
  • Períodos de maior produtividade (fim de semana vs. dias úteis)
  • Impacto real das mortes e paradas no progresso geral
  • Comparativo: ritmo atual vs. ritmo necessário para chegar em 1000 até [data desejada]

Arquitetura e Stack Tecnológica

Nesta seção, detalhamos as camadas do projeto, desde a extração dos dados até a disponibilização do dashboard final.

📡 Coleta de Dados

Tecnologia: TibiaData API
Finalidade: Fonte oficial e gratuita para obtenção dos dados brutos dos personagens.

⚙️ Automação

Tecnologia: Google Apps Script
Finalidade: Execução de rotinas diárias automáticas para coleta e inserção de dados no ecossistema Google.

🗄️ Armazenamento

Tecnologia: Google Sheets
Finalidade: Utilizado como um banco de dados temporal simples, facilitando o acesso e a edição rápida.

🧠 Processamento e Análise

Tecnologia: Python 3.8+ (pandas, gspread)
Finalidade: Realiza a leitura da planilha, limpeza dos dados e todos os cálculos estatísticos necessários.

📊 Dashboard e Interface

Tecnologia: Dash (Plotly) & Dash Bootstrap Components
Finalidade: Criação da interface web interativa, com gráficos responsivos e filtros dinâmicos.

🎨 Design Visual

Tecnologia: Tema Cyborg (Bootstrap)
Finalidade: Implementação de uma interface dark mode moderna, otimizada para visualização de dados.

🚀 Hospedagem e Deploy

Tecnologia: Render (Plano Gratuito)
Finalidade: Hospedagem da aplicação com deploy contínuo integrado ao repositório.

🔐 Segurança

Tecnologia: python-dotenv
Finalidade: Gerenciamento de credenciais e tokens sensíveis através de variáveis de ambiente.


🚀 Como Funciona (Fluxo Completo)

  1. Google Apps Script roda diariamente (trigger às 8h ou horário configurado)
    → consulta TibiaData API
    → salva level, experience, vocação, data, etc. no Google Sheets

  2. Dashboard Dash lê a planilha
    → processa séries temporais
    → calcula taxas, projeções lineares/exponenciais, heatmaps, ETAs
    → gera gráficos interativos

  3. Usuário acessa o dashboard via navegador


⚙️ Configuração e Uso

Opção 1 – Rodar localmente (recomendado para desenvolvimento)

  1. Clone o repositório

    • git clone https://github.com/peixotojeff/tibiatracker.py.git
    • cd tibiatracker.py
  2. Crie e ative ambiente virtual

    • python -m venv .venv
    • source .venv/bin/activate # Linux / macOS ou
    • ..venv\Scripts\activate # Windows
  3. Instale dependências

    • pip install -r requirements.txt
  4. Crie o arquivo .env na raiz do projeto

    - GOOGLE_CREDENTIALS='{"type":"service_account", ...}'   # todo o JSON
    - GOOGLE_SPREADSHEET_ID='abc123xyz...'
    - GOOGLE_WORKSHEET_NAME='EXP/DIA'                         # ou o nome da aba
  1. Rode o dashboard
    • python app.py

Acesse: http://127.0.0.1:8050

Opção 2 – Deploy no Render (gratuito)

Siga o passo a passo detalhado já presente no seu README atual (está muito bom).
Resumo rápido:

  • .gitignore deve conter .env, credenciais.json, .venv/
  • No Render → New Web Service → conecte o repositório
  • Build Command: pip install -r requirements.txt
  • Start Command: gunicorn app:server
  • Variáveis de ambiente:
    • GOOGLE_CREDENTIALS → cole o JSON inteiro
    • GOOGLE_SPREADSHEET_ID
    • GOOGLE_WORKSHEET_NAME

Como obter o arquivo de credenciais do Google (Service Account)

Para o dashboard acessar o Google Sheets de forma segura e automática, você precisa criar uma Service Account no Google Cloud e baixar o arquivo JSON de credenciais. Siga os passos abaixo:

  1. Acesse o Google Cloud Console
  2. Crie ou selecione um projeto existente (recomendado: crie um novo só para este projeto, ex: "TibiaTracker")
  3. No menu lateral, vá em APIs & ServicesCredentials
  4. Clique em + CREATE CREDENTIALSService account
  5. Preencha:
    • Service account name: algo como "tibiatracker-service"
    • Service account ID: gerado automaticamente
    • Description (opcional): "Acesso ao Google Sheets para TibiaTracker" Clique em CREATE AND CONTINUE
  6. Step 2 – Grant this service account access to project
    Pode pular (deixe sem roles por enquanto) → CONTINUE
  7. Step 3 – Grant users access to this service account
    Pode pular → DONE
  8. Na lista de Service Accounts, clique no e-mail da conta recém-criada
  9. Vá na aba KeysADD KEYCreate new key
  10. Escolha JSONCREATE
  11. O arquivo seu-projeto-123456789.json será baixado automaticamente

Próximo passo importante:
Compartilhe sua planilha do Google Sheets com o e-mail da Service Account (o e-mail termina em @seu-projeto.iam.gserviceaccount.com).

  • Abra a planilha → Compartilhar → cole o e-mail da service account → dê permissão de Editor.

Pronto! Agora você tem o arquivo JSON que será usado como GOOGLE_CREDENTIALS (localmente via .env ou no Render como variável de ambiente).


Configuração do Google Apps Script (automação diária)

O script trackertibia.js deve ser colado no Google Apps Script do seu projeto.
Principais parâmetros a editar:

// Configuration - EDITE AQUI
const WORLD = "SeuMundo";          // Ex: "Antica", "Calmera"
const CATEGORY = "experience";     // Geralmente "experience"
const VOCATION = "druid";          // "knight", "paladin", "sorcerer", "druid" ou "all"
const CHARACTER_NAME = "Nome Do Personagem";  // Exato como aparece no jogo
const START_PAGE = 1;
const END_PAGE = 4;                // Ajuste conforme necessário para encontrar o personagem
const SPREADSHEET_ID = "ID_DA_SUA_PLANILHA";  // Encontrado na URL do Google Sheets
const SHEET_NAME = "Dados";        // Nome da aba onde os dados serão salvos
const TIMEZONE = "GMT-3";          // Ajuste para seu fuso (ex: "GMT-3" para Brasil)

Trigger: diário → 8h (ou horário que preferir).


🛡️ Segurança

  • Nenhuma credencial fica no repositório (Push Protection do GitHub ativado)
  • Uso exclusivo de Service Account do Google
  • Variáveis de ambiente no Render (nunca commitadas)

Próximos Passos / Ideias

  • Adicionar login simples (para múltiplos personagens)
  • Integração com deaths / kills da API
  • Alertas via Telegram/Discord quando meta diária é atingida
  • Cálculo de XP/hora por hunt (se registrar manualmente)
  • Exportar relatório PDF mensal

Se você quiser, posso ajudar a implementar alguma dessas ideias ou melhorar algum gráfico específico.
Boa caçada e boa sorte rumo ao level 1000! ⚔️🧙‍♂️


Publicado por Jefferson Peixoto em 03 de janeiro de 2026

Jefferson Peixoto | Data & AI Analyst