Skip to content

Repository files navigation

Random Char Generator Dungeons and Dragons 5° edition


📋 Sumário


🔍 Visão Geral

O Gerador Aleatório de Personagens para D&D 5e automatiza a criação de fichas oficiais em PDF, integrando lógica de regras e uma vasta base de dados. O projeto passou por um pivot estratégico: migramos da extração via Web Scraping (Wikidot) para o processamento de bases estruturadas em XML, garantindo maior fidelidade bibliográfica e rastreabilidade.


🛠️ A Nova Era: Transição para FightClub5eXML

Estamos adaptando o núcleo do sistema para consumir a base FightClub5eXML, o que permite o mapeamento direto de livros oficiais e conteúdos de comunidade.

✅ Fase 1: Núcleo de Fontes e Citações (Concluído)

  • Mapeamento de 7.098 Entradas Únicas: Processamos mais de 30.000 citações brutas para gerar 7.098 referências bibliográficas limpas e organizadas por (Livro, Página).
  • Ordem Hierárquica: O banco de dados prioriza fontes na ordem: Wizards of the Coast ➡️ Third-Party ➡️ Unearthed Arcana ➡️ Homebrew.
  • **Schema core_book_sources**: Implementação de integridade referencial vinculando cada dado do jogo ao seu respectivo livro de origem.

✅ Fase 2: Backgrounds & Normalização de Dados (Concluído)

  • Extração inteligente de XML (FightClub5e format).
  • Fatiamento de Description em colunas técnicas (Skills, Tools, Languages, Equipment).
  • Sistema de tabelas de sorteio normalizadas (background_tables e background_table_rows).
  • Tratamento de duplicatas via Python (Diferenciação por fonte).
  • Script de inicialização automatizado (init_db.sh).

🏗️ Próximos Passos (Roadmap)

  • Fase 3: Raças (Races): Implementar extração de bônus de atributos e habilidades raciais.
  • Fase 4: Classes: Estruturar progressão de níveis e Hit Dice.
  • Fase 5: Lógica de Sorteio (Backend): Criar as rotas Flask para gerar o personagem aleatório.

🏗️ Estado Atual e Roadmap

A transição está sendo feita por domínios, movendo os dados consolidados do scraping para a nova estrutura XML.

  • Fase de Migração: Atualmente adaptando Schemas para Raças, Classes, Antecedentes e Magias de acordo com as diretrizes do SOURCES.md.
  • Integração de Lógica: Implementação de mecânicas de jogo (Proficiências, Saves, Progressão) baseadas nos nós <class>, <race> e <feat> dos arquivos XML.

📜 Legado v1.2.0: Implementações Consolidadas (Scraping)

Esta seção detalha os sistemas já funcionais e populados via Web Scraping que estão sendo portados para o novo formato.

Sistemas de Itens e Equipamentos

  • Magic Items (909 itens): 100% dos itens oficiais com descrições, raridades (Common a Artifact) e categorias.
  • Arsenal de Armas (42 itens): Inclui PHB, armas de suplementos (ToA, Eberron) e regras para armas improvisadas/ataques desarmados.
  • Ferramentas e Focos (36+ itens): Implementação completa de ferramentas de artesão, instrumentos musicais e focos de conjuração (Arcanos, Druídicos e Símbolos Sagrados).
  • Venenos e Munições: 14 tipos de venenos com mecânicas do DMG e sistemas de munição compatíveis com diversas armas.

Infraestrutura de Banco de Dados (v1.2.0)

  • Performance: Otimização de scripts de inicialização (23s ➡️ 7s).
  • Integridade: Validação completa de Foreign Keys em mais de 42 tabelas.
  • Modularidade: Divisão por domínios (Atributos, Skills, Equipamentos) para facilitar a manutenção.

🚀 Funcionalidades Principais

  • Geração Aleatória e Personalizada de atributos, classe, raça e equipamentos
  • Interface Web em Flask para configuração dinâmica do personagem
  • Web Scraping Automatizado de páginas do Wikidot para manter o banco sempre atualizado
  • Banco de Dados Relacional (SQLite) modular, dividido em .db por domínio (classes, atributos, skills etc.)
  • Preenchimento de PDF usando PyPDF2 e pdfrw, gerando a ficha oficial em CharacterSheet_DnD5e.pdf

🛠️ Tecnologias Utilizadas

Camada Ferramentas
Backend Python 3.10+, Flask, FastAPI (opcional)
Processamento xml.etree.ElementTree, pathlib (Novo)
Web Scraping requests, BeautifulSoup4 (Legado)
Banco de Dados SQLite via sqlite3 e SQLAlchemy (ORM opcional)
PDF PyPDF2, pdfrw
Frontend Jinja2, HTML, CSS, JavaScript
Testes pytest, unittest

🗂️ Estrutura do Repositório

Random-char-generator-DnD-5e/
├── app/
│   ├── models/               # Classes de domínio e ORM
│   ├── scraping/             # Parsers e scrapers HTML → dados
│   ├── pdf/                  # Manipulação e preenchimento de PDFs
│   └── services/             # Flask app, rotas e lógica de geração
├── data/
│   ├── raw_pages/            # HTML baixados do Wikidot
│   └── db/                   # Bancos SQLite (.db)
│   └── xml/                  # Arquivos xml
├── scripts/
│   ├── init_db/              # Schemas SQL e scripts de criação
│   ├── scraping/             # Scripts para baixar páginas HTML
│   └── utils/                # Utilitários e diagnósticos
├── templates/                # HTML Jinja2 para frontend
├── static/                   # CSS, JS, imagens
├── requirements.txt          # Dependências do projeto
├── README.md                 # Documentação do projeto
└── CharacterSheet_DnD5e.pdf  # Modelo de ficha PDF

⚙️ Pré-requisitos

Antes de começar, certifique-se de ter instalado em sua máquina:

  • Python 3.10 ou superior
  • Git (para clonar o repositório)
  • Node.js/npm (somente se forem usadas ferramentas de frontend adicionais)

💻 Instalação

# 1. Clone este repositório
git clone https://github.com/seu-usuario/Random-char-generator-DnD-5e.git
cd Random-char-generator-DnD-5e

# 2. Crie e ative o ambiente virtual
python -m venv .venv
source .venv/bin/activate    # macOS/Linux
.venv\Scripts\activate       # Windows

# 3. Instale as dependências
pip install -r requirements.txt

▶️ Execução da Aplicação

Inicie o servidor Flask:

python main.py

Acesse em: http://localhost:5000
Aqui você poderá configurar parâmetros e gerar sua ficha PDF.


About

Código em python feito para criação de personagens de Dungeons and Dragons 5 edição de maneira aleatória.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages