Super Mario Bros no Google: como funciona na prática
Se você digitou "google super mario bros" em algum momento, provavelmente acabou caindo em uma pagina de resultados cheia de links mal formulados e vídeos que prometem algo que nunca aparece. O que realmente existe gira em torno de duas coisas distintas. A primeira é o easter egg do Google quando você pesquisa por Super Mario Bros, que exibe um carrossel de imagens temáticas com a logo modificada. A segunda, e mais interessante, são as versões jogáveis que alguns desenvolvedores independentes hospedaram usando JavaScript puro, muitas delas acessíveis via Google Search Labs ou projetos como o Google Doodle do 30º aniversário.
google super mario bros: o que exatamente você encontra
O termo busca por "google super mario bros" não leva a um produto oficial da Nintendo ou do Google. Não há uma versão licenciada rodando nos servidores do Google. O que existe são reimplementações open-source do jogo original de 1985, construídas em HTML5 e JavaScript, que os usuários compartilham em fóruns e repositórios. Essas versões funcionam diretamente no Chrome sem precisar de emulador externo. O Google Doodle de 2015, criado para comemorar os 30 anos da franquia, era uma versão oficial jogável hospedada no próprio domínido Google. Ele ainda pode ser acessado navegando até o archive do Doodle, mas não aparece mais como resultado padrão de busca. Quando eu comecei a brincar com essas versões em 2016, minha intenção era apenas testar se o emulador JavaScript rodava bem no Chrome da época. Rodou, mas com um problema que ninguém mencionava nos tutoriais: o áudio travava completamente se você abrisse mais de uma aba com outras abas de mídia rodando. O navegador simplesmente não gerencia múltiplos contextos de áudio simultâneos de forma elegante. Minha solução foi simples — fechei todas as outras abas, deixei só a do jogo, e usei o modo escuro do Chrome para reduzir o uso de GPU. O framerate ficou estável em 60fps numa máquina com processador i5 de quarta geração e 8GB de RAM.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Um detalhe que poucos desenvolvedores explicam sobre essas reimplementações é que a colisão entre sprites não segue exatamente a lógica original do NES. O motor JavaScript usa AABB (Axis-Aligned Bounding Box) para detectar baterias, o que significa que em situações específicas, como pular exatamente na borda de um cano, o Mario pode parecer atravessar o objeto ou cair por um frame antes de a colisão ser reconhecida. Isso não acontece no jogo original, que usa um grid de detecção mais rigoroso. Se você está tentando speedrun ou quer comportamento idêntico ao original, esse desvio é relevante. A versão do Doodle de 2015 corrigiu parte disso, mas ainda não é perfeita. Aqui vai uma nuance que ninguém costuma destacar: a maioria dessas versões web não implementa o buffer de input do NES original. No jogo real, se você pressionar um botão poucos milissegundos antes do Mario tocar o chão, o jogo reconhece o pulo mesmo que o toque ocorra durante a animação de queda. Nas versões JavaScript, esse buffer muitas vezes é ignorado, o que quebra mecânicas avançadas como o wavy jump e certos glitches de timing. Se você já tentou fazer um wall jump ou um precise jump e sentiu que o controle estava "macio" demais, esse é provavelmente o motivo.
Quanto à disponibilidade, não recomendo baixar emuladores de sites aleatórios. Já vi versões com adware embutido e até scripts de mineração de criptomoeda escondidos em bundles maliciosos. O caminho mais seguro é usar o Doodle Archive do Google (google.com/doodles) para a versão oficial de 2015, ou procurar repositórios GitHub com histórico público e issues abertas. Procure por projetos como o "Super Mario Bros JavaScript" do desenvolvedor TheOX ou o "nes.js" que roda ROMs diretamente no navegador. Ambos são mantidos há anos e têm tracking de bugs. Se o seu objetivo é mesmo jogar com fidelidade, vale a pena considerar que a versão web tem limitações reais de performance em dispositivos móveis. Em telas menores que 7 pol, o touch control muitas vezes entra em conflito com o scroll da página, especialmente em Android com Chrome. O workaround que encontrei foi adicionar um bloco CSS de prevenção de scroll no container do canvas. Em iOS, o problema é diferente: o Safari corta o áudio se a tela bloquear, então o jogo fica mudo após alguns minutos. Nada disso aparece nas descrições dos vídeos no YouTube, então é bom saber antes de perder tempo testando.