Jogo Pac-Man controlado por uma rede neural treinada com imagens da sua webcam usando TensorFlow.js e React/Next.js.
Este projeto é uma migração do jogo Pac-Man controlado por webcam originalmente desenvolvido pelo Google para React/Next.js. Ele usa transfer learning com MobileNet para criar um classificador de imagens que permite controlar o Pac-Man com gestos capturados pela câmera.
- Captura de Exemplos: Usando sua webcam, você captura imagens para cada direção (cima, baixo, esquerda, direita)
- Treinamento: Uma rede neural é treinada usando transfer learning com MobileNet
- Jogo: A rede neural prevê a direção baseada na imagem da webcam em tempo real e controla o Pac-Man
- Node.js 18+ ou superior
- Webcam funcional
- Navegador moderno com suporte a WebGL
# Instalar dependências
yarn install
# ou com npm
npm install- Iniciar o servidor de desenvolvimento:
yarn dev
# ou com npm
npm run dev-
Abrir no navegador: Acesse
http://localhost:3000 -
Treinar o modelo:
- Posicione-se em frente à webcam
- Para cada direção (cima, baixo, esquerda, direita):
- Clique e segure o botão "Adicionar Amostra"
- Faça o gesto ou posição que deseja usar para aquela direção
- Adicione pelo menos 30-50 exemplos por direção
- Ajuste os hiperparâmetros se necessário:
- Learning Rate: Taxa de aprendizado (padrão: 0.0001)
- Batch Size: Fração do dataset por batch (padrão: 0.4)
- Epochs: Número de épocas de treinamento (padrão: 20)
- Hidden Units: Unidades na camada oculta (padrão: 100)
- Clique em "TREINAR MODELO"
-
Jogar:
- Após o treinamento, clique em "JOGAR"
- Faça os gestos que você treinou para controlar o Pac-Man!
pacman-react/
├── public/
│ └── pacman-google.js # Motor do jogo Pac-Man
├── src/
│ └── app/
│ ├── globals.css # Estilos globais + Pac-Man
│ ├── layout.js # Layout do Next.js
│ ├── page.js # Componente principal
│ └── page.module.css # Estilos do componente
└── package.json
- React 19: Biblioteca de UI
- Next.js 15: Framework React
- TensorFlow.js: Machine Learning no navegador
- TensorFlow.js Data: Captura de webcam
- MobileNet: Modelo pré-treinado para transfer learning
Os seguintes arquivos foram migrados do projeto original:
controller_dataset.js→ Integrado empage.jscomo classeindex.js→ Lógica integrada empage.jscom hooks Reactui.js→ Interface integrada empage.jscomo componente Reactindex.html→ Estrutura convertida para JSX empage.jspacman-google.js→ Copiado parapublic/pacman-google.js- Estilos → Migrados para
page.module.csseglobals.css
Você pode ajustar os hiperparâmetros através da interface:
- Learning Rate: Controla a velocidade de aprendizado
- Batch Size: Tamanho do lote de treinamento
- Epochs: Quantas vezes o modelo verá todo o dataset
- Hidden Units: Complexidade da camada oculta
Para melhorar a precisão do modelo:
- Adicione mais exemplos (50-100 por direção)
- Use gestos distintos para cada direção
- Mantenha iluminação consistente
- Evite fundos muito complexos
- Aumente o número de epochs (mas cuidado com overfitting)
- Verifique se sua webcam está conectada e funcionando
- Permita o acesso à webcam quando solicitado pelo navegador
- Teste em outro navegador se o problema persistir
- Adicione mais exemplos de treinamento
- Use gestos mais distintos entre as direções
- Retreine o modelo com diferentes hiperparâmetros
- Verifique se o arquivo
pacman-google.jsestá empublic/ - Verifique o console do navegador para erros
- Certifique-se de que todas as dependências foram instaladas
Este projeto é baseado no código original do Google (Apache License 2.0) e foi migrado para React/Next.js.
PAC-MAN™ © BANDAI NAMCO Entertainment Inc.
- Código original do jogo: Google LLC
- PAC-MAN: BANDAI NAMCO Entertainment Inc.
- Migração para React/Next.js: Este projeto
Sinta-se à vontade para abrir issues e pull requests com melhorias!