Corrida arcade 3D · Em desenvolvimento

Super Pinguin GP
Um pinguim pilota um snowmobile de corrida em pistas cobertas de neve. O jogo combina interface inspirada nos fliperamas de 16 bits com um renderizador WebGL próprio e regras de campeonato exigentes: quem não acompanha o ritmo é eliminado no meio da prova.
- Situação
- Em desenvolvimento. Ainda não foi enviado ao Google Play e não há data de publicação definida. A jogabilidade ainda está sendo validada; o desempenho em aparelho físico Android ainda precisa ser confirmado.
- Versão atual
- 1.0.46 (código interno 47)
- Plataforma
- Android (paisagem, tela cheia) e navegador para testes
- Tecnologia
- Flutter + WebView; JavaScript sem bibliotecas externas; WebGL com alternativa em Canvas 2D; Web Audio
- Anúncios
- Nenhum até a versão 1.0.46 documentada no changelog: o jogo só registra os momentos em que um anúncio poderia aparecer (entre etapas e após uma derrota, nunca no treino). Em 22/10/2026 o código em desenvolvimento passou a incluir a integração com o AdMob e o consentimento do Google, ainda não validada nem documentada.
- Dados salvos
- Nenhum. O campeonato não é gravado ao fechar o aplicativo.
Modos de jogo
- Campeonato Mundial: as 16 etapas em sequência, sempre começando pelo Brasil. Cada etapa tem uma volta classificatória e a corrida. A pontuação segue a escala 10-8-6-5-4-3-2-1. Ao final da 16ª etapa há uma cerimônia de premiação com os três líderes reais da tabela, que não incluem necessariamente o jogador.
- Corrida avulsa: escolha um circuito, faça a classificação e enfrente 15 rivais, sem somar pontos.
- GP Curto · Seco + Chuva: uma volta de classificação, duas voltas no seco e mais duas na chuva no mesmo circuito. A chegada da primeira prova define o grid da segunda.
- Treino livre: três voltas sem rivais e sem classificação, útil para decorar o traçado.
Como jogar e regras
A câmera fica na cabine: o jogador vê as mãos do pinguim, o volante, um retrovisor no alto da tela e um minimapa com a posição de todos os competidores. As corridas do campeonato têm três voltas em pista de duas faixas.
Classificação
Antes de cada corrida, o jogador faz uma volta sozinho. O tempo é comparado com os de 15 rivais fictícios, separados entre si por diferenças de 30 a 220 milésimos, para formar o grid de 16 carros. Empate no milésimo favorece o rival. Existe um tempo-limite (a referência do circuito mais 15 segundos); ultrapassá-lo significa largar em último.
Corte por posição
A regra mais característica do jogo é o corte progressivo. Em dois pontos de cada volta, a um terço e a dois terços do percurso, o jogo exige uma posição mínima, que vai de 15º até 3º ao longo da prova. Quem estiver abaixo do limite tem oito segundos para recuperar; depois disso, é eliminado. Na prática, terminar a corrida exige chegar entre os três primeiros.
Batidas
Pneus, guard-rails, paredes de túnel e apoios de passarelas são sólidos. Um impacto acima de 200 km/h quebra o carro. A velocidade considerada é a do instante do contato, interpolada entre quadros; exatamente 200 km/h não quebra. Encostar em um rival acima de 40 km/h faz perder cerca de um terço da velocidade, e sair da pista reduz o ritmo e levanta neve.
Dicas práticas
- Use o treino livre para aprender onde frear: na maioria das pistas, a perda de tempo de uma freada antecipada é menor que a de uma batida.
- Na largada, o primeiro corte ainda permite estar em 15º. Ultrapasse com calma nas retas, em vez de arriscar contato nas curvas.
- No modo manual, a troca de marcha fica com a barra de espaço ou o botão central. O câmbio automático é a opção padrão mais segura em tela de toque.
- A chuva e a noite mudam apenas o visual e o som. A aderência é a mesma do seco, então não há motivo para mudar os pontos de freada.
Controles
No teclado: setas ou WASD para pilotar, acelerar e frear; espaço para trocar de marcha no modo manual; P pausa; M liga ou desliga o som. Não há suporte a controle (gamepad) nesta versão.
Na tela de toque, o lado esquerdo tem dois botões grandes de direção e o direito tem os pedais de freio (vermelho) e acelerador (verde). Os botões usam Pointer Events com captura do ponteiro, o que permite segurar direção e acelerador ao mesmo tempo com os dois polegares. As decisões de projeto desses controles estão detalhadas no artigo Controles de toque para um jogo de corrida em WebView.
Os 16 circuitos
Os traçados são adaptações dos circuitos da temporada de 1989, obtidos do projeto aberto F1DB (licença CC BY 4.0, desenhos de Jules Roy, mantido por Marcel Overdijk e colaboradores). Cada traçado foi reamostrado em 512 pontos, suavizado e ganhou um nome fictício de cidade brasileira. O jogo não tem vínculo oficial com a Fórmula 1, com os autódromos ou com qualquer fabricante de jogos; os créditos completos ficam em Opções › Créditos dos circuitos.
| # | Traçado de referência | Nome no jogo |
|---|---|---|
| 1 | Jacarepaguá | Guapimirim/RJ |
| 2 | Ímola | Aterro do Flamengo/RJ |
| 3 | Mônaco | Rio de Janeiro/RJ – Zona Sul (com túnel) |
| 4 | Hermanos Rodríguez | Fortaleza/CE |
| 5 | Phoenix | Parauapebas/PA |
| 6 | Gilles Villeneuve | Nova Iguaçu/RJ |
| 7 | Paul Ricard | Duque de Caxias/RJ |
| 8 | Silverstone | Sumidouro/RJ |
| 9 | Hockenheim | Chapecó West/SC |
| 10 | Hungaroring | Penedo/RJ |
| 11 | Spa-Francorchamps | Xique-Xique/BA |
| 12 | Monza | Santo Antônio dos Lopes/MA |
| 13 | Estoril | Friburgo/RJ |
| 14 | Jerez | Brasília/DF |
| 15 | Suzuka | São Paulo/SP (cruzamento em dois níveis) |
| 16 | Adelaide | Aracaju/SE |
O cenário tem seis condições visuais (dia, entardecer, noite, chuva, tempestade com relâmpagos e chuva noturna), placas de nove patrocinadores fictícios e humorísticos, zebras, barreiras de pneus e passarelas.
Tecnologia
O renderizador principal é WebGL escrito à mão: matrizes de perspectiva próprias, malhas geradas por código, teste de profundidade, iluminação direcional e neblina, em uma cena de 960×540. O painel retrô é um Canvas 2D sobreposto em 480×270, sem suavização, com uma fonte bitmap 5×7 desenhada no código. Se o WebGL não estiver disponível ou perder o contexto, o jogo cai para um “modo compatível” em Canvas 2D pseudo-3D e tenta restaurar o contexto depois.
O laço de jogo usa tempo decorrido entre quadros, limitado a 50 ms, e suavização exponencial nas respostas de direção. Isso mantém comportamento semelhante a 30 e a 120 quadros por segundo, o que é verificado em teste automatizado. O raciocínio e as limitações dessa abordagem estão no artigo Física independente da taxa de quadros.
Todo o som é sintetizado em tempo real com a Web Audio API: motor por síntese FM com tom proporcional à rotação calculada, vento, chuva, trovão, derrapagem dos pneus e uma trilha chiptune original. Não há arquivo de áudio no projeto. Veja Áudio procedural com Web Audio.
Os 15 rivais seguem uma IA determinística por piloto: cada um tem um nível de agressividade fixo e decide entre ultrapassar, defender, contra-atacar ou dar espaço, com mudanças de faixa suaves de cerca de 1,1 segundo e intervalo mínimo entre manobras.
Acessibilidade
- Com “reduzir movimento” ativado no sistema, a abertura fica estática, a premiação não tem confetes e os clarões de relâmpago são desligados.
- Menus navegáveis por teclado com foco visível; contagem regressiva e status dos boxes anunciados por leitores de tela (
aria-live). - Pausa automática quando o aplicativo perde o foco, além do botão e da tecla P.
- Textos das placas com contraste mínimo de 7:1 na arte original.
- Limitação conhecida: não há ajuste de tamanho de fonte nem modo de alto contraste.
Como testamos
O projeto tem uma bateria de testes em Node (node --test) que cobre regras de corrida, controles de toque, IA de tráfego, colisão no túnel, clima, premiação, WebGL e licenças dos traçados. Exemplos de verificações: o toque com dois polegares funciona com captura de ponteiro; o freio tem prioridade sobre o acelerador; a regra de quebra é estritamente acima de 200 km/h; o prazo de eliminação é igual a 30 e a 120 quadros por segundo. Páginas de teste manuais (túnel, clima, classificação, tráfego) ficam fora do APK.
Histórico de versões
O número de versão sobe a cada entrega interna testada. Marcos registrados no changelog do projeto:
| Versão | Mudança principal |
|---|---|
| 1.0.5 | Volta classificatória antes das corridas |
| 1.0.8 | Renderizador WebGL |
| 1.0.9 | Eliminação por limite de posição |
| 1.0.12 | Clima e horários do dia |
| 1.0.14 | Controles de toque |
| 1.0.18 | Quebra ao bater em pneus |
| 1.0.21 | Traçados históricos do F1DB |
| 1.0.24 a 1.0.39 | Nomes brasileiros e ajustes de cenário |
| 1.0.40 | Zebras, placas de curva e barreiras de pneus |
| 1.0.41 | Modo GP Curto e premiação mundial |
| 1.0.42 | Colisão e câmera dentro do túnel |
| 1.0.43 | Grid em milésimos, som de derrapagem, regra de 200 km/h |
| 1.0.44 | Cor oficial do W na abertura (conferida em 21/10/2026) |
| 1.0.45 | Chuva mais visível no GP Curto |
| 1.0.46 | Rivais disputando posição: ultrapassagem, defesa e contra-ataque |
Próximos passos registrados no projeto: validar o controle com dois polegares e o áudio em aparelho Android físico antes de qualquer publicação. Segundo o changelog, a ativação de anúncios só deve ocorrer depois da aprovação da jogabilidade.