Um sistema completo de autopatcher para Ragnarok Online
Builder visual moderno + Patcher nativo leve com configuração embutida no EXE
- 🎨 Builder Visual Moderno - Interface drag-and-drop para criar patchers customizados
- 📦 Configuração Embutida - Tudo no EXE, sem arquivos externos (INI/JSON)
- 🖼️ UI Customizável - Imagem de fundo, botões, labels, WebViews e mais
- 🎬 Vídeo de Fundo - Suporte a vídeo MP4 como background animado
- 🔄 Formatos de Patch - Suporte a GRF, THOR, GPF e RGZ
- 🚀 Executável Leve - ~700KB, sem dependências de DLL
- 🪟 Bordas Arredondadas - Suporte a window border radius
- 🌐 WebView Integrado - Exiba notícias/páginas web dentro do patcher
O projeto usa uma arquitetura moderna:
| Componente | Tecnologia | Descrição |
|---|---|---|
| Builder | Electron + Vue 3 + TypeScript | Interface visual para criar patchers |
| Patcher | C++ Win32/GDI+ | Executável nativo para usuários finais |
| Embedder | C++ | Embute configuração/recursos no EXE |
autopatch-community/
├── electron-builder/ # 🎨 Builder Visual (Electron + Vue 3)
│ ├── src/
│ │ ├── main/ # Processo principal Electron
│ │ ├── preload/ # Bridge IPC
│ │ └── renderer/ # Interface Vue 3
│ │ ├── components/
│ │ │ └── editor/ # DesignCanvas, PropertyPanel, etc.
│ │ ├── stores/ # Pinia stores (project, ui)
│ │ └── types/ # TypeScript definitions
│ ├── native/ # Embedder nativo
│ └── resources/ # Executáveis compilados
│
├── cpp/ # ⚡ Patcher Nativo (C++)
│ ├── src/
│ │ ├── core/ # Biblioteca compartilhada
│ │ │ ├── config.cpp/h # Parser de configuração JSON
│ │ │ ├── grf.cpp/h # Parser GRF
│ │ │ ├── thor.cpp/h # Parser THOR
│ │ │ ├── http.cpp/h # Download HTTP (WinInet)
│ │ │ ├── patcher.cpp/h # Lógica de patching
│ │ │ └── resources.cpp/h # Extração de recursos RC
│ │ ├── client/ # AutoPatcher.exe
│ │ │ ├── window.cpp/h # Janela principal Win32
│ │ │ ├── ui.cpp/h # Renderização GDI+
│ │ │ └── embedded_browser.cpp/h # WebView MSHTML
│ │ └── builder/ # AutoPatchBuilder.exe
│ │ └── embedder.cpp/h # Embute recursos no EXE
│ └── CMakeLists.txt
│
├── samples/ # 📋 Arquivos de exemplo
│ ├── patcher.json # Config de exemplo
│ └── webview_test.html # Teste de WebView
│
└── doc/ # 📚 Documentação
├── GUIA_DE_USO.md
└── IMPLEMENTATION_PLAN.md
- Node.js 18+ (para o Builder)
- Visual Studio 2022 com "Desktop development with C++"
- CMake 3.20+
cd electron-builder
npm install
npm run dev # Modo desenvolvimento
npm run build:win # Build para Windowscd cpp
mkdir build && cd build
cmake ..
cmake --build . --config ReleaseOs executáveis serão gerados em cpp/build/bin/Release/:
AutoPatcher.exe- Template do patcherAutoPatchBuilder.exe- Ferramenta de buildembedder.exe- Embute recursos
- Execute o Builder:
npm run dev(ou o instalador) - Configure as Configurações Gerais:
- URLs do servidor de patches
- Executável do jogo
- Dimensões da janela
- Adicione elementos no canvas:
- 🖼️ Imagem de fundo
- 🎬 Vídeo de fundo (MP4) com botão play/pause customizável
- 🔘 Botões (com estados hover/pressed)
- 📝 Labels (texto dinâmico)
- 📊 Barra de progresso
- 🌐 WebView (páginas web)
- Clique em "Gerar Patcher"
- O EXE gerado contém tudo embutido!
servidor/
├── patchlist.txt # Lista de patches
├── version.json # Versão atual (opcional)
├── patch001.thor
├── patch002.thor
└── ...
# Comentários começam com #
# ID FILENAME
1 patch001.thor
2 patch002.thor
3 patch003.thor
{
"version": 3,
"message": "Atualização disponível!"
}O AutoPatch suporta vídeo MP4 como plano de fundo animado, com botão play/pause totalmente customizável.
pasta_do_cliente/
├── MeuPatcher.exe # Executável do patcher
├── background.bmp # Imagem de fundo (fallback)
└── resources/
└── video_fundo.mp4 # Vídeo de fundo
- No painel de Propriedades, ative "Vídeo de Fundo"
- Selecione o arquivo MP4
- Configure as opções:
- Mostrar controles: Exibe botão play/pause
- Auto Play: Inicia automaticamente
- Loop: Repete o vídeo
- Customize o botão play/pause:
- Posição (arraste no canvas ou defina X/Y)
- Tamanho
- Cores (fundo, ícone, borda)
- Opacidade
Para atualizar o vídeo sem gerar novo patcher:
- Substitua o arquivo na pasta
resources/ - Mantenha o mesmo nome do arquivo original
- O patcher carregará automaticamente o novo vídeo
- MP4 (H.264/AAC) - Recomendado
- WMV (Windows Media Video)
- AVI (com codecs compatíveis)
| Action | Descrição |
|---|---|
start_game |
Inicia o executável do jogo |
check_files |
Verifica e baixa patches |
close |
Fecha o patcher |
minimize |
Minimiza a janela |
url:https://... |
Abre URL no navegador |
- Versões: 1.02, 1.03, 2.00, 3.00
- Compressão: ZLIB
- Criptografia: DES (v1.x)
- Formato otimizado para patches incrementais
- Suporta remoção de arquivos
- Compressão ZLIB
- Mesmo formato do GRF
- Usado para patches que modificam GRF existente
- Arquivo GZIP com estrutura de diretórios
- Extrai arquivos para pasta
Em breve...
Contribuições são bem-vindas! Por favor:
- Faça um Fork do projeto
- Crie sua branch (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Add MinhaFeature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
Este projeto está sob a licença MIT - veja o arquivo LICENSE para detalhes.
- Cremané (saadrcaa@gmail.com) - Desenvolvedor e mantenedor
- Documentação GRF baseada em GRF Editor Internals
- Inspirado em Eluair, Thor Patcher e rPatchur
Feito com ❤️ para a comunidade de Ragnarok Online