Código fuente de juego de billar: qué trae un paquete de bola 8
Física, reglas, CPU y partidas guardadas en archivos separados: qué contiene el código de Velvet Pool y qué se cambia primero.

Un código fuente de juego de billar vale la pena cuando tres cosas viven en archivos separados y legibles: la física de las bolas, las reglas de la bola 8 y el rival de la computadora. Si todo está revuelto, cambiar el color del paño o la dificultad de la CPU se convierte en una tarde persiguiendo errores. Velvet Pool, nuestra plantilla de bola 8, mantiene esas partes separadas, y esta guía abre el paquete archivo por archivo.
Explicamos cómo está organizado el código, qué suele cambiar primero quien lo compra, cómo publicarlo o empaquetarlo como app, qué permite la licencia y qué no incluye la edición. Todos los nombres de archivo vienen del manual que acompaña al juego.
En corto: Velvet Pool es JavaScript puro con WebGL2, sin biblioteca 3D y sin paso de compilación. Editas el archivo, lo copias a la carpeta del juego y recargas la página.
Qué contiene este código fuente de juego de billar
Velvet Pool es un juego de bola 8 terminado, no un motor ni un kit para empezar. La descarga trae cuatro carpetas: game/ es la versión lista para subir, source/ es el mismo juego como edición para desarrollo, con README, package.json y pruebas, documentation/ contiene el manual ilustrado en inglés y portugués, y THIRD-PARTY-LICENSES/ guarda las licencias de las fuentes.
El juego sigue la bola 8 con faltas, bola en mano y lisas o rayadas. Tiene CPU en tres niveles (Fácil, Medio y Difícil), una mesa de práctica libre con deshacer, colocar bolas y volver a armar el triángulo, y partidas de dos jugadores en el mismo dispositivo. Se le puede dar efecto a la blanca (de arrastre, de seguimiento y lateral), y los logros locales desbloquean cinco colores de paño y cinco tacos. La interfaz viene en 14 idiomas.
- Tecnología: JavaScript puro, módulos ES y WebGL2. Sin Three.js ni otra biblioteca de código.
- Código: JavaScript simple y formateado en source/src y game/src. Nada minificado ni empaquetado.
- Pruebas: opcionales, con Node.js 20 o más reciente. Revisan física, reglas de bola 8, partidas de la CPU y claves de traducción.
- Versión al momento de escribir: 1.1.0, actualizada el 22 de octubre de 2026.
Ver la ficha de Velvet Pool, con demo y manual
Cómo están organizados los archivos
game/ y source/ tienen la misma estructura, así que una ruta en una carpeta apunta al mismo archivo en la otra. La división que más importa en un juego de billar es entre src/core/ (simulación y reglas) y src/game/ (todo lo que toca el jugador).
- src/core/physics.js: simulación de las bolas, efecto y rebote en las bandas.
- src/core/rules.js: reglas de bola 8 y decisiones de falta.
- src/core/ai.js: cómo elige su tiro la CPU.
- src/game/controls.js: puntería, fuerza y efecto.
- src/game/progress.js: logros, paños, tacos y puntuación de la partida.
- src/game/i18n.js: los textos en 14 idiomas, listados en LANGS.
- src/game/localRecords.js: el historial local de puntuaciones.
- src/game/audio.js: reproducción de efectos y música.
- css/style.css y css/fonts.css: tema, diseño adaptable y declaración de fuentes.
- assets/: arte, audio y fuentes, con el logotipo en assets/logo/.
Como física, reglas y CPU son módulos separados, puedes hacer más amable a la CPU sin tocar cómo se mueven las bolas, o cambiar una regla de falta sin volver a calibrar las bandas. Esa separación es lo primero que conviene buscar en cualquier código de billar que compres.
Qué cambia primero quien lo compra
Casi todos los proyectos siguen el mismo orden. Empieza por lo que el jugador ve, sigue con lo que siente y deja las reglas para el final, porque ahí es donde un error se cuela con más facilidad.
- Marca: reemplaza los archivos de assets/logo/ y ajusta los tamaños correspondientes en el CSS. Se permite marca blanca, así que tu nombre o el de tu cliente puede ir en lugar del nuestro.
- Aspecto de la mesa: colores y fuentes están en css/style.css. Paños y tacos están en progress.js. Conserva sus IDs o los jugadores pierden lo que ya habían desbloqueado.
- Textos e idiomas: todas las frases están en i18n.js. Ajusta lo que necesites; la lista de idiomas está en LANGS.
- Dificultad de la CPU: la elección de tiros está en ai.js. Ajusta un nivel a la vez y juega una partida completa contra él.
- Física: fricción, efecto y bandas están en physics.js. Un cambio pequeño ya se nota, así que corre las pruebas después de cada uno.
- Reglas: las variantes de la casa van en rules.js. Prueba faltas y bola en mano jugando, además de con las pruebas automáticas.
El flujo es igual para todo: edita el archivo en source/, cópialo a la misma ruta en game/, sirve la carpeta por HTTP y recarga. El manual recomienda cambiar una cosa a la vez y probar menú, partida, pausa, pantalla de resultado y recarga después de cada cambio.
Publicarlo, incrustarlo o convertirlo en app
Publicarlo es lo más sencillo. Sube todo lo que está dentro de game/ a una carpeta como public_html/velvet-pool/, conserva las subcarpetas y abre la dirección. En el servidor no hay npm, terminal, PHP, base de datos ni cuenta. Basta un hosting que sirva archivos estáticos por HTTPS.
- No abras index.html con doble clic: el navegador bloquea los módulos en file://. Para probar en tu computadora, ejecuta python -m http.server 8765 dentro de game/.
- Si la pantalla queda en blanco, revisa que WebGL2 esté activo y que los nombres de archivo respeten mayúsculas y minúsculas.
- Si el navegador rechaza un módulo, el servidor está enviando .js con el tipo MIME equivocado.
- Dentro de un iframe en un portal, permite pantalla completa y reproducción automática.
Todo lo que el juego necesita para correr está dentro de game/, así que nada se descarga de un CDN ni de otro sitio. Cada carga de la página sigue llegando a tu servidor, por lo que no es una app instalable sin conexión. Funciona en pantallas táctiles: el jugador apunta en la mesa y jala el control de fuerza.
Los proyectos de app nativa no vienen en el paquete. Si quieres el juego en Google Play o en la App Store, un empaquetador como Capacitor, que sus creadores describen como un runtime nativo multiplataforma para crear apps móviles con código web, es una ruta común. Armar y mantener el proyecto de la tienda es trabajo tuyo, o un servicio que cotizamos aparte.
Lo que la edición no incluye
Velvet Pool es la edición local para navegador. No tiene multijugador en línea ni salas privadas, ranking en línea, cuentas en la nube ni SDK de anuncios. Dos personas pueden jugar en el mismo dispositivo, y la puntuación personal de las partidas válidas contra la CPU se guarda en el navegador. La práctica y las partidas en el mismo dispositivo no guardan puntuación.
El juego en línea requiere tu propio servidor y desarrollo. Es un proyecto aparte, así que inclúyelo en el presupuesto desde el inicio en lugar de esperar que la plantilla crezca hasta ahí. Si tu catálogo necesita más juegos de deportes, estas dos también se venden como ediciones listas para publicar en el navegador.
Puttide: minigolf 3D con 30 hoyos, también en JavaScript puro
Golazo: futbolito de mesa con 50 selecciones
Licencia y precio en un párrafo
Velvet Pool tiene un precio de lista de 39 USD. Hasta el 30 de noviembre de 2026, una promoción de Black Friday descuenta 15% en todas las plantillas, así que cuesta 33.15 USD, y los pedidos de dos o más plantillas reciben además entre 5% y 20% de descuento. Cada compra es una licencia perpetua y no exclusiva para un producto final, tuyo o de un cliente. Puedes cambiar código, arte y audio dentro de ese producto y ponerle tu marca. Los jugadores pueden entrar gratis o con anuncios. No puedes revender la plantilla ni su código por separado. Incluye 6 meses de soporte, o 12 con la extensión en el checkout; personalización, hosting e integración de SDK o portal se cotizan aparte.
Leer los términos completos de licencia y soporte
Preguntas frecuentes sobre el código de Velvet Pool
¿El código fuente del juego de billar es legible o está minificado?
Es legible. El JavaScript en source/src y game/src es simple y formateado, sin archivos minificados ni empaquetados.
¿Necesito Node.js o compilar?
No. Editas en source/ y copias a game/. Node.js 20 o más reciente solo hace falta para correr las pruebas opcionales.
¿Puedo hacer la CPU más fácil o más difícil?
Sí. La elección de tiros de la CPU está en src/core/ai.js, separada de la física, así que la ajustas sin cambiar cómo se mueven las bolas.
¿Funciona en celulares?
Sí. Admite controles táctiles y se adapta a la pantalla. Requiere WebGL2, y el rendimiento depende del equipo, así que prueba en los celulares de tu público.
¿Los jugadores conservan su progreso si cambio de dominio?
No. Las partidas guardadas pertenecen al origen del navegador, así que otro dominio empieza desde cero. Define la dirección final antes del lanzamiento.
¿Puedo agregar multijugador en línea?
No solo con esta edición. Requiere servidor y desarrollo propios. Podemos cotizarlo como trabajo a medida.
Para quién sirve este código de billar
Sirve para un portal o sitio que quiere un juego de bola 8 en su catálogo, para una agencia que entrega un juego de billar con la marca de un cliente y para quien quiere estudiar cómo se escriben la física y las reglas del billar sin una biblioteca 3D de por medio. Sirve menos si tu plan depende de partidas en línea o de un ranking compartido.
Juega la demo en el celular y en la laptop antes de comprar y abre el mapa de archivos del manual. Si la separación entre física, reglas y CPU encaja con tu forma de trabajar, lo demás son unas cuantas tardes de cambios.
