尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗O jogo de luta 2D estilo Street Fighter II estrelado pelos memes do Italian brainrot. Tralalero, Tung Tung Sahur, Bombardiro e companhia contra uma vaca cósmica que quer controlar todos os memes do mundo.
🎮 Jogar · 🌴 Abertura · 🧬 Elenco · ✨ Recursos · 🛠️ Desenvolvimento · 📚 Documentação
Uma vinheta de estúdio no estilo dos arcades dos anos 90: a arte da Tupinicode na selva acende como um CRT enquanto o jogo carrega de verdade ("PREPARANDO O CAOS", com porcentagem), o logo original é revelado ao som do jingle e o crédito do desenvolvedor aparece antes da tela de aviso e do título. A tela de título toca Quarter In The Slot; ao apertar Start, o menu passa para Last Token Remaining.
Muito além da internet existe Brainrotália: a terra paralela onde moram os memes mais absurdos já criados.
Durante séculos, bastava um tralalá, um tung tung, um bananini… e o mundo sorria. Até que La Vacca Saturno Saturnita surgiu nos anéis de Saturno com O ALGORITMO, um sinal que hipnotiza qualquer meme. Os olhos ficaram roxos. As vozes, ocas.
Apenas um coração resistiu. Atravesse Brainrotália, liberte sete rivais hipnotizados, recupere os 7 fragmentos do sinal e enfrente a vaca cósmica no fim do universo.
| Lutador | VEL | FOR | DEF | ALC | Casa |
|---|---|---|---|---|---|
| Tralalero | 1,7 | 1,0 | 1,0 | 1,0 | Spiaggia |
| Tung Sahur | 1,5 | 1,15 | 0,95 | 1,25 | Villaggio |
| Bombardiro | 1,3 | 1,2 | 1,1 | 1,1 | Cielo |
| Ballerina | 2,0 | 0,85 | 0,9 | 1,0 | Teatro |
| Patapim | 1,4 | 1,1 | 1,05 | 1,15 | Giungla |
| Chimpanzini | 1,9 | 0,9 | 0,95 | 0,9 | Piantagione |
| Assassino | 1,9 | 1,0 | 0,9 | 1,15 | Caffè |
| Lirilì | 1,2 | 1,2 | 1,2 | 1,1 | Deserto |
| Saturnita | 1,35 | 1,3 | 1,45 | 1,3 | Saturno |
Fichas completas, falas e rivalidades em docs/jogo/05-personagens.md.
Dash com dois toques para frente ou para trás
Golpes direcionais: soco/chute ascendente, agachado e especial normal / ascendente / baixo
Correntes, cancelamento em especial, uppercut com comando → ↓ ↘, agarrão
EX (meia barra) e Super com tela de corte
Juggle, escalonamento de dano, hit-stop e tremor de tela
Hitboxes medidas dos pixels dos próprios sprites (aperte Tab para ver)
IA em 3 níveis que defende alto/baixo, faz anti-aéreo e gasta barra
Prólogo do mundo + prólogo e final próprios de cada lutador
Cena antes e depois de cada rival, com rivalidades especiais
Mapa animado de Brainrotália entre as lutas, com arte renovada e emblema de Saturno na viagem final
Chefe em duas fases: Saturnita, ascensão do Mega Brain e batalha final
Cutscene global com Bri Bri jogável e desbloqueável, novas vozes e duas trilhas FM originais
Ataque coletivo dos brainrots, salvação do planeta e epílogos separados de cada herói
Bri Bri desbloqueável após vencer a segunda forma, com 16 poses e especial próprio
Narração Chatterbox pré-gerada em 🇧🇷 🇮🇹 🇬🇧
19 faixas gravadas no estilo Neo Geo: título, menu, fases, bônus, chefe, final, epílogos, vitória e continue, normalizadas para ~−20 LUFS e com emenda para loop
As demais fases usam arranjos FM renderizados em OGG; as 21 partituras do sintetizador FM de 2 operadores (família YM2151) continuam como reserva
Mixer de áudio (MÚSICA · EFEITOS · VOZES) em Opções e na Pausa, salvo no navegador
Página OUVIR TRILHA com todos os players
25 efeitos sonoros sintetizados ao vivo, com reverb e delay
13 cenários pintados em código e convertidos em pixel art moderna: faixas de luz sem granulado, contorno nas silhuetas e perspectiva atmosférica
Destrua a Macchina del Nonno, o Cybercaminhão de "vidro blindado" e o Bi-ai-di (com papagaio do milk shake 🦜, que agora toca o meme completo num poleiro redesenhado)
XP e níveis 1–10 por personagem, salvos no navegador
Versus contra a CPU ou local, Treino com leitura de dano e modo celular: tela cheia na horizontal com D-pad de 8 direções e botões sobre o jogo
npm install
npm run dev # http://localhost:3000
Aperte Enter (ou toque na tela) para começar: o navegador só libera o som depois da primeira interação. Escolha HISTÓRIA para a campanha ou TREINO para praticar combos. Os volumes de música, efeitos e vozes ficam em OPÇÕES → ÁUDIO ou em PAUSA → ÁUDIO (↑↓ seleciona, ←→ ajusta).
| Jogador 1 | Jogador 2 (versus) | |
|---|---|---|
| Mover / pular / agachar | A D W S | ← → ↑ ↓ |
| Soco · Chute · Especial | J · K · L | B · N · M |
| Start / pausa | Enter | |
| Voltar / pular cutscene | Esc | |
| Ver hitboxes | Tab |
| Golpe | Comando |
|---|---|
| Avanço / recuo rápido | Dois toques para frente / para trás |
| Ascendente (soco / chute) | ↑ + Soco / Chute, juntos |
| Soco agachado / rasteira | ↓ + Soco / Chute |
| Especial normal / ascendente / baixo | Especial / ↑ + Especial / ↓ + Especial |
| Soco forte (alto) | → + Soco |
| Rasteira (baixo) | ↓ + Chute |
| Uppercut (lança para juggle) | → ↓ ↘ + Soco |
| Agarrão | Perto + → + Chute |
| Especial EX (½ barra) | ↓ ↘ → + Especial |
| Super (barra cheia) | Especial |
| Corrente | Soco → soco / chute / forte · acerto → especial cancela |
| Defesa | Segure para trás (agachado contra golpes baixos) |
Mais detalhes em docs/jogo/03-controles-e-comandos.md e docs/jogo/04-sistema-de-combate.md.
Requer Node.js 20.9+. Os testes de áudio usam FFmpeg e ffprobe; renderizar a trilha exige também Chromium e FFmpeg com
libvorbis. O pipeline atual de sprites usa Node.js; somente o pipeline legado requer Python compillow,numpyescipy.
| Comando | O que faz |
|---|---|
npm run dev | Servidor de desenvolvimento (Turbopack) |
npm run build · npm start | Build de produção (página estática) e servidor |
npm run lint · npm run typecheck | ESLint e TypeScript |
npm run format · npm run format:check | Prettier |
npm test | Campanha completa, lutas CPU × CPU, combate direcional, final, sprites, resolução, textos, vozes, música e snapshots visuais, tudo headless |
npm run test:combat · test:music · test:finale · test:local · test:voices | Só uma parte da suíte |
npm run test:snapshot:update | Aceita uma mudança visual intencional |
npm run readme:art | Regera as imagens deste README com o próprio motor |
npm run sprites | 19 poses por personagem → atlas em public/atlases/ |
npm run sprites:projectiles | Empacota os oito artefatos com três fases cada |
npm run sprites:bonus | Empacota os estados de dano dos carros e as expressões do papagaio e do Elon |
npm run sprites:finale · stages:art | Processa a arte do final e dos cenários/mapa |
npm run music:render · music:check | Renderiza a trilha FM em OGG e confere os arquivos |
npm run render:ui · render:map · render:projectiles · render:finale | Galerias de conferência visual em output/ |
npm run voices:catalog · voices:generate | Catálogo e geração das vozes Chatterbox |
As faixas gravadas ficam em public/audio/music/ e são mapeadas em src/game/audio/imported-music.js; elas têm prioridade sobre os arranjos FM. Faixas longas tocam por streaming (HTMLAudioElement ligado ao bus de música), sem decodificar tudo na memória. Se um arquivo falhar, o sintetizador assume a música da fase.
python3 tools/import-music.py converte os MP3 de origem em OGG com ganho constante (~−20 LUFS, teto −3 dBTP) e emenda de um segundo para o loop; --only title select reprocessa só as faixas escolhidas. As medições ficam em public/audio/music/import-report.json. Depois, node tools/music-playlist.js atualiza a página OUVIR TRILHA (/audio/music/index.html). Os prompts usados para gerar a trilha estão em docs/audio/prompts-trilha-neo-geo.md.
Os volumes do mixer ficam salvos em localStorage.brb_audio. O áudio completo do meme do papagaio é processado por tools/process-parrot-audio.js (−18 LUFS, sem cortes nem mudança de velocidade). Detalhes em docs/tecnico/05-audio-e-narracao.md.
Todas as falas usam arquivos MP3 locais em public/audio/voices/, gerados com Chatterbox Multilingual. Não é necessária chave de API para jogar. As chamadas de confronto reutilizam os nomes dos lutadores. O navegador só sintetiza uma fala caso o arquivo não possa ser reproduzido.
O Elon usa cinco sprites cartunescos gerados por imagem, do sorriso ao choro, no mesmo formato de atlas do papagaio. Para reempacotar os originais locais: npm run sprites:bonus -- --only=elon.
Para regenerar as vozes, veja tools/voices/README.md. O catálogo inclui narrador, menus, nomes, golpes, história completa, papagaio e Elon. Os áudios usam a voz sintética incluída no modelo, com ajustes por personagem, sem gravações de pessoas reais. A procedência e os parâmetros de cada clipe ficam em public/audio/voices/generation.json.
A intro, os menus, as seleções, a pausa, o HUD e os resultados compartilham a paleta e os componentes de src/game/ui/theme.js: azul escuro, dourado, branco quente, vermelho para 1P e azul para 2P. Títulos usam Press Start 2P; os textos menores usam a fonte bitmap 5×7 de src/game/core/pixel-font.js, com acentos em português e italiano.
O desenho usa a resolução lógica 320×180 e escala mantendo 16:9. O canvas acompanha a densidade real da tela (até 4K no desktop e 1280 px em telas de toque), com suavização de alta qualidade acima de 640 px; sprites e projéteis mantêm proporções e alinhamento ao pixel (tests/display-resolution.js, tests/projectile-scale.js). Cabeçalhos, rodapés, margens, foco e painéis seguem o mesmo padrão. npm run render:ui gera uma galeria dos estados da interface em output/ui/after/; para reproduzir, coloque a fonte TTF Press Start 2P em output/ui/PressStart2P-Regular.ttf. O teste manual node tools/review-ui-browser.js usa Chromium e uma instância de produção em localhost:3011 para capturar desktop, tablet e celular.
Em localhost, clique em TESTES (F2) ou pressione F2. O primeiro item abre a última luta como Bri Bri, com God Mode, especial infinito e relógio parado. O painel também acessa cutscenes, bônus, personagens, cenários, músicas e vozes, com XP isolado do progresso salvo. Guia do painel local.
src/
├── app/ Next.js App Router: layout, página, fonte, ícones
├── components/game/ Casca React: gabinete, barra de botões, toque, legenda
└── game/ Motor do jogo em módulos ES (sem React)
├── core/ canvas, entrada, cenas e loop de 60 Hz
├── audio/ trilha OGG, sintetizador FM, mixer, narrador, locutor
├── sprites/ atlas HD, cache, hitboxes medidas dos pixels
├── characters/ um arquivo por lutador + carros
├── combat/ Fighter, Fight, IA, especiais, Treino, Bônus
├── story/ textos da campanha e montagem das cutscenes
├── stages/ kit de pintura + um arquivo por cenário
├── scenes/ todas as telas e o fluxo da história
└── index.js createGame(): a API que a página usa
A página e o motor conversam por uma API pequena e tipada (createGame, setMusic, setNarrator, pressButton, on('voice')). O motor é carregado só no cliente, com import() dinâmico. Veja docs/tecnico/01-arquitetura.md.
O jogo nasceu como um único index.html de 2,7 MB (guardado em legacy/). A migração recortou o código em módulos sem reescrever a lógica e foi comparada com a versão original usando a mesma semente aleatória:
Essa rede de segurança continua no projeto como tests/visual-snapshot.js.
🎮 O jogo
🛠️ Técnico
🎨 Arte e áudio