Código-fonte de jogo de sinuca: o que vem num pacote de bola 8
Física, regras, CPU e saves em arquivos separados: o que tem no código do Velvet Pool e o que se muda primeiro.

Um código-fonte de jogo de sinuca vale a compra quando três coisas ficam em arquivos separados e legíveis: a física das bolas, as regras da bola 8 e o adversário do computador. Se estiver tudo misturado, trocar a cor do pano ou a dificuldade da CPU vira uma tarde caçando bug. O Velvet Pool, nosso template de bola 8, mantém essas partes separadas, e este guia abre o pacote arquivo por arquivo.
Mostramos como o código está organizado, o que o comprador costuma mudar primeiro, como hospedar ou empacotar como app, o que a licença permite e o que a edição não inclui. Todos os nomes de arquivo abaixo vêm do manual que acompanha o jogo.
Resumindo: o Velvet Pool é JavaScript puro com WebGL2, sem biblioteca 3D e sem etapa de build. Você edita o arquivo, copia para a pasta do jogo e recarrega a página.
O que tem neste código-fonte de jogo de sinuca
O Velvet Pool é um jogo de bola 8 pronto, não um motor nem um kit inicial. O download tem quatro pastas: game/ é a versão pronta para enviar ao servidor, source/ é o mesmo jogo como edição de desenvolvimento, com README, package.json e testes, documentation/ traz o manual ilustrado em inglês e português, e THIRD-PARTY-LICENSES/ guarda as licenças das fontes.
O jogo segue a bola 8 com faltas, bola na mão e lisas ou listradas. Tem CPU em três níveis (Fácil, Médio e Difícil), mesa de treino livre com desfazer, mover bolas e remontar o triângulo, e partidas de dois jogadores no mesmo aparelho. Dá para colocar efeito na branca (puxada, seguida e lateral), e conquistas locais liberam cinco cores de pano e cinco tacos. A interface vem em 14 idiomas.
- Tecnologia: JavaScript puro, módulos ES e WebGL2. Sem Three.js nem outra biblioteca de código.
- Código: JavaScript simples e formatado em source/src e game/src. Nada minificado ou empacotado.
- Testes: opcionais, com Node.js 20 ou mais novo. Conferem física, regras da bola 8, partidas da CPU e chaves de tradução.
- Versão quando escrevemos: 1.1.0, atualizada em 22 de outubro de 2026.
Ver a página do Velvet Pool, com demo e manual
Como os arquivos estão organizados
game/ e source/ têm a mesma estrutura, então um caminho numa pasta aponta para o mesmo arquivo na outra. A divisão que mais importa num jogo de sinuca é entre src/core/ (simulação e regras) e src/game/ (tudo o que o jogador toca).
- src/core/physics.js: simulação das bolas, efeito e resposta das tabelas.
- src/core/rules.js: regras da bola 8 e decisões de falta.
- src/core/ai.js: como a CPU escolhe a tacada.
- src/game/controls.js: mira, força e efeito.
- src/game/progress.js: conquistas, panos, tacos e pontuação da partida.
- src/game/i18n.js: os textos nos 14 idiomas, listados em LANGS.
- src/game/localRecords.js: o histórico local de pontuação.
- src/game/audio.js: reprodução de efeitos e música.
- css/style.css e css/fonts.css: tema, layout responsivo e declaração das fontes.
- assets/: arte, áudio e fontes, com o logotipo em assets/logo/.
Como física, regras e CPU são módulos separados, dá para deixar a CPU mais boazinha sem mexer no movimento das bolas, ou mudar uma regra de falta sem recalibrar as tabelas. Essa separação é o principal a procurar em qualquer código de sinuca que você for comprar.
O que o comprador muda primeiro
A maioria dos projetos segue a mesma ordem. Comece pelo que o jogador vê, passe para o que ele sente e deixe as regras por último, porque é nelas que um bug entra com mais facilidade.
- Marca: troque os arquivos de assets/logo/ e ajuste os tamanhos correspondentes no CSS. White label é permitido, então o seu nome ou o do seu cliente pode substituir o nosso.
- Visual da mesa: cores e fontes ficam em css/style.css. Panos e tacos ficam em progress.js. Mantenha os IDs, senão o jogador perde o que já tinha liberado.
- Textos e idiomas: todas as frases estão em i18n.js. Ajuste o que precisar; a lista de idiomas fica em LANGS.
- Dificuldade da CPU: a escolha de tacadas está em ai.js. Ajuste um nível por vez e jogue uma partida inteira contra ele.
- Física: atrito, efeito e tabelas estão em physics.js. Mudanças pequenas já fazem diferença, então rode os testes depois de cada uma.
- Regras: variações da casa vão em rules.js. Teste faltas e bola na mão jogando, além dos testes automáticos.
O fluxo é o mesmo para tudo: edite o arquivo em source/, copie para o mesmo caminho em game/, sirva a pasta por HTTP e recarregue. O manual recomenda mudar um recurso por vez e testar menu, partida, pausa, tela de resultado e recarregamento depois de cada mudança.
Hospedar, incorporar ou transformar em app
Hospedar é a parte mais simples. Envie tudo o que está dentro de game/ para uma pasta como public_html/velvet-pool/, mantenha as subpastas e abra o endereço. No servidor não há npm, terminal, PHP, banco de dados nem conta. Uma hospedagem que sirva arquivos estáticos por HTTPS basta.
- Não abra o index.html com duplo clique: o navegador bloqueia os módulos em file://. Para testar no computador, rode python -m http.server 8765 dentro de game/.
- Se a tela ficar vazia, confira se o WebGL2 está ativo e se os nomes dos arquivos mantêm maiúsculas e minúsculas.
- Se o navegador recusar um módulo, o servidor está enviando .js com o tipo MIME errado.
- Dentro de um iframe num portal, permita tela cheia e autoplay.
Tudo o que o jogo precisa para rodar está dentro de game/, então nada é baixado de CDN ou de outro site. Cada carregamento da página ainda acessa o seu servidor, então não é um app offline instalável. Funciona em tela de toque: o jogador mira na mesa e puxa o controle de força.
Projetos de app nativo não vêm no pacote. Se você quer o jogo na Google Play ou na App Store, um empacotador como o Capacitor, que os criadores descrevem como um runtime nativo multiplataforma para criar apps móveis com código web, é um caminho comum. Montar e manter o projeto da loja é trabalho seu, ou um serviço que orçamos à parte.
O que a edição não inclui
O Velvet Pool é a edição local para navegador. Não tem multiplayer online nem salas privadas, ranking online, contas na nuvem ou SDK de anúncios. Duas pessoas jogam no mesmo aparelho, e a pontuação pessoal das partidas válidas contra a CPU fica salva no navegador. Treino e partidas no mesmo aparelho não salvam pontuação.
Jogo online exige servidor e desenvolvimento próprios. É um projeto de verdade, então coloque no orçamento desde o início em vez de esperar que o template cresça até lá. Se o seu catálogo precisa de mais jogos de esporte, estes dois também são vendidos como edições prontas para hospedar no navegador.
Puttide: minigolfe 3D com 30 buracos, também em JavaScript puro
Golazo: futebol de mesa com 50 seleções
Licença e preço em um parágrafo
O Velvet Pool tem preço de tabela de US$ 39. Até 30 de novembro de 2026, uma promoção de Black Friday tira 15% de todos os templates, então ele sai por US$ 33,15, e pedidos com dois ou mais templates ganham de 5% a 20% a mais de desconto. Cada compra é uma licença perpétua e não exclusiva para um produto final, seu ou de um cliente. Você pode mudar código, arte e áudio dentro desse produto e colocar a sua marca. O jogador pode acessar de graça ou com anúncios. Não é permitido revender o template ou o código sozinhos. São 6 meses de suporte, ou 12 com a extensão escolhida no checkout; personalização, hospedagem e integração de SDK ou portal são orçadas à parte.
Ler os termos completos de licença e suporte
Perguntas frequentes sobre o código do Velvet Pool
O código-fonte do jogo de sinuca é legível ou minificado?
Legível. O JavaScript em source/src e game/src é simples e formatado, sem arquivos minificados ou empacotados.
Preciso de Node.js ou de build?
Não. Você edita em source/ e copia para game/. O Node.js 20 ou mais novo só é necessário para rodar os testes opcionais.
Dá para deixar a CPU mais fácil ou mais difícil?
Dá. A escolha de tacadas da CPU fica em src/core/ai.js, separada da física, então você ajusta sem mudar o movimento das bolas.
Funciona no celular?
Funciona. O toque é suportado e os controles se adaptam à tela. Precisa de WebGL2, e o desempenho depende do aparelho, então teste nos celulares do seu público.
O jogador perde o progresso se eu mudar o jogo de domínio?
Perde. O save pertence à origem do navegador, então outro domínio começa do zero. Defina o endereço final antes de lançar.
Posso colocar multiplayer online?
Não só com esta edição. Precisa de servidor e desenvolvimento próprios. Podemos orçar como trabalho personalizado.
Para quem este código de sinuca serve
Serve para portal ou site que quer um jogo de bola 8 no catálogo, para agência que entrega um jogo de sinuca com a marca de um cliente e para quem quer estudar como física e regras de sinuca são escritas sem uma biblioteca 3D no meio. Serve menos se o seu plano depende de partidas online ou de um ranking compartilhado.
Jogue a demo no celular e no notebook antes de comprar e abra o mapa de arquivos do manual. Se a separação entre física, regras e CPU combina com o seu jeito de trabalhar, o resto são algumas tardes de ajustes.
Jogar a demo do Velvet Pool e comprar a licença
Precisa de mudanças ou de várias licenças? Peça um orçamento
