ARQUITETURA v0.4b
Documentacao tecnica do CapRush Overdrive! — Fase 1 (Prototipo Jogavel).
ESTRUTURA DE ARQUIVOS
caprush/ (raiz do projeto)
index.html Landing page com logo + botoes orbitais
personagens.html Galeria de pilotos (SVG + atributos)
manual.html Manual do jogador (multilingual)
arquitetura.html Esta pagina
ranking.html Ranking global
caprush-game.html Wrapper iframe -> client/game.html
i18n.js Internacionalizacao PT/EN/ES
Whisk_2.png Logo oficial
client/
game.html Modo Solo (1 jogador)
game-multi.html Menu de modos multiplayer
game-multi-local.html 1v1 Local (mesma maquina, turnos)
game-multi-online.html 1v1 Online (PeerJS WebRTC - Beta)
src/
core/
Vector2D.js Vetores 2D imutaveis
Physics.js Motor de fisica (drag, bounce)
SoundEngine.js Audio procedural + BGM (v4b: session-ID)
CapSprite.js Renderizador da tampinha
GameLoop.js Loop de jogo solo
scenes/
TrackV3.js Pista, checkpoints, superficies (v4b)
MUDANCAS v0.4b HOTFIX
TrackV3.js — Start/Finish
O startRect era um quadrado TW x TW que bloqueava toda a borda esquerda da pista. Corrigido para uma faixa fina de 14px de altura, sem colisao fisica. Tampinhas passam livremente.
TrackV3.js — Pocas de Agua
As duas pocas foram reposicionadas para dentro da faixa da pista: Poca 1 no cotovelo do chicane (V-apex, proximo ao CP1) e Poca 2 na reta direita (ao lado do CP2).
TrackV3.js — Spawn da Tampinha
getStartPos() agora retorna {x: m, y: CH*0.54}, colocando a tampinha dentro da pista, abaixo da linha de largada, pronta para cruzar no sentido correto.
SoundEngine.js — BGM Session-ID
Cada chamada a startBGM() ou stopBGM() incrementa um _session counter. O callback do loop de audio verifica se a sessao ainda e valida antes de agendar o proximo beat — eliminando o overlap ao fazer toggle rapido.
Painel Lateral no Multiplayer
game-multi-local.html agora inclui o mesmo painel lateral do modo Solo: barra de forca, placar por jogador, legenda de superficies, log de eventos e botoes de audio.
BGM Auto-Start
Em todos os modos, SoundEngine.startBGM() e chamado automaticamente quando o jogador clica para comecar. Nao e mais necessario pressionar o botao de musica manualmente.
i18n.js — Flags
O injetor de bandeiras agora verifica se #flag-container ja possui filhos antes de injetar. Elimina a duplicacao de botoes de idioma.
TECNOLOGIAS
Canvas 2D API, Web Audio API, PeerJS (WebRTC), Vercel para deploy. Sem dependencias externas de runtime — JavaScript puro.
MULTIPLAYER ONLINE
Usa PeerJS como camada de sinalizacao WebRTC. Com o jogo publicado em URL publica (Vercel), qualquer jogador no mundo pode entrar com o link e jogar diretamente no navegador. Nao e necessario servidor proprio.