Joguinho Pac Man - Jogo que marcou gerações, Pac-Man completa 40 anos
Jogo que marcou gerações, Pac-Man completa 40 anos

Como rodar o joguinho pac man no navegador hoje

A gente já tentou de tudo pra rodar esse jogo antigo sem depender de emulador pesado. O problema é que a maioria dos tutoriais que você encontra na internet simplesmente copia e cola código desatualizado que não funciona no Chrome moderno. Eu passei dois dias quebrando a cabeça com isso antes de encontrar um caminho que realmente funciona.

O que é o joguinho pac man

Não preciso explicar pra quem tá lendo isso. É aquele labirinto com quatro fantasmas e um cara amarelo comendo pastilhas. A versão original de 1980 da Namco, depois copiada por milhares de dev iniciante nos anos 2000 como projeto prático de JavaScript. O que muita gente não sabe é que o código-fonte original nunca foi oficialmente publicado pela Namco. Tudo que você vê na internet é recriação, não o binário real. A parte boa: essas recriações são tão fiéis que a diferença practically não existe pra jogabilidade. A parte ruim: a qualidade do código varia de "feio mas funcional" até "código limpo que eu usaria em produção". Vou te mostrar o que funciona.

O método que eu uso

O caminho mais direto hoje em dia é usar a versão hospedada no GitHub da comunidade open source. O repositório mais estável que eu testei é o do usuário 'msikora' com cerca de 12 mil estrelas. O setup leva uns três minutos se você tiver o Node instalado. Clonando o repo e rodando npm install, você consegue subir o servidor local num minuto. A versão de produção precisa de um build step que compila o TypeScript pro JavaScript que o navegador entende. Sem esse passo, o Chrome mostra erro de módulo e você fica olhando pra tela preta por meia hora sem entender o que aconteceu. Eu aprendi isso na marra.

Se você não quer instalar nada, tem a opção de rodar direto pelo CDN. O jsdelivr ou unpkg servem os arquivos compilados. Basta abrir um index.html básico apontando pros scripts. Funciona, mas tem uma limitação chata: algumas versões mais novas do Chrome bloqueiam requisições cross-origin se você tentar abrir o arquivo localmente direto, sem servidor. Aí o jogo não carrega os sprites. A solução é usar uma extensão como Live Server do VS Code ou rodar python3 -m http.server na pasta do projeto.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Problema específico que eu encontrei

Numa das máquinas onde eu ia usar isso, o tabuleiro aparecia correto mas os fantasmas ficavam teletransportando pra posição aleatória a cada 30 segundos. O log do console mostrava um erro de setInterval sendo cancelado silenciosamente. O problema era conflito com o modo de economia de energia do navegador. O Chrome, quando a aba sai do foco ou quando a bateria tá baixa, reduz a frequência de timers pros 1Hz ou pior. A workaround que funcionou foi adicionar requestAnimationFrame no loop principal dos fantasmas, em vez de setInterval puro. O navegador garante que o RAF roda na taxa de refresh nativa da tela, independente do modo econômico. Não é bala de prata em todos os casos, mas resolveu 99% das vezes que eu precisei.

Limitações que ninguém comenta

Essas recriações web têm um problema real: colisão baseada em grid. O Pac-Man original de arcade usava coordenadas pixel a pixel com movimento contínuo. A versão web típica funciona em tiles de 20x20 pixels. Isso significa que em situações específicas de perseguição, o timing é diferente do original. Os fantasmas parecem mais lentos ou mais rápidos dependendo da resolução da sua tela. Não é bug, é escolha de arquitetura. Outra coisa: a versão HTML5 quase nunca implementa o padrão de comportamento dos fantasmas com estados (scatter, chase, frightened, dead). A maioria usa uma IA simplificada que só persegue o jogador na direção do tile mais próximo. Dá pra jogar tranquilo, mas quem conhece o jogo original percebe na hora que os fantasmas agem de forma menos inteligente que o esperado.

Se você quer fidelidade extrema, o caminho ainda é o emulador MAME rodando o ROM original. Mas isso exige configuração, BIOS e uma janela separada. Dependendo do que você precisa, o jogo web simplificado pode ser suficiente e economiza bastante tempo de setup.

Pegando o código

O link direto pros arquivos está no GitHub mesmo. Você pode baixar o ZIP direto da página do repositório ou clonar com git clone. Se não quiser instalar Node, baixa o build pronto na pasta dist que já vem compilado. Descompacta e abre o index.html. Pronto. Se quiser personalizar algo, aí sim precisa do ambiente de desenvolvimento completo com as dependências. Isso funciona no Chrome, Firefox, Edge e Safari modernos. Testei nos três primeiros sem problema. No Safari teve um bug isolado com cores no mobile, mas só afetava a versão mais antiga, a 14. Nas versões mais recentes do Safari, roda normal.