Guia

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.

Arte do Velvet Pool: o taco alinhado atrás da bola branca numa mesa verde, com as bolas 3, 8 e 4 perto da caçapa do canto.

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.

  1. 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.
  2. 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.
  3. Textos e idiomas: todas as frases estão em i18n.js. Ajuste o que precisar; a lista de idiomas fica em LANGS.
  4. Dificuldade da CPU: a escolha de tacadas está em ai.js. Ajuste um nível por vez e jogue uma partida inteira contra ele.
  5. 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.
  6. 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