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.