Вихідний код гри в більярд: що всередині пакета Velvet Pool
Фізика, правила і комп'ютерний суперник в окремих файлах: що містить вихідний код Velvet Pool і що покупець змінює першим.

Вихідний код гри в більярд варто купувати, коли три речі живуть в окремих, читабельних файлах: фізика куль, правила 8-ball і комп'ютерний суперник. Якщо вони переплетені, кожна зміна кольору сукна чи складності CPU перетворюється на сеанс налагодження. Velvet Pool, наш шаблон 8-ball, тримає їх окремо, і цей гайд проходить його пакет файл за файлом.
Ми розповідаємо, як організовано код, що покупець зазвичай змінює першим, як його розмістити або загорнути в застосунок, що дозволяє ліцензія і чого версія не містить. Кожна назва файлу нижче взята з посібника для покупця, що йде з грою.
Коротко: Velvet Pool — це звичайний JavaScript на WebGL2, без 3D-бібліотеки та без кроку збірки. Ви редагуєте файл, копіюєте його в папку гри і перезавантажуєте сторінку.
Що містить вихідний код гри в більярд
Velvet Pool — це готова гра 8-ball, а не рушій і не стартовий набір. Завантаження має чотири папки: game/ — готова до завантаження збірка, source/ — та сама гра у версії для розробника з README, package.json і тестами, documentation/ містить ілюстрований посібник англійською та португальською, а THIRD-PARTY-LICENSES/ зберігає тексти ліцензій шрифтів.
Сама гра ведеться за правилами 8-ball з фолами, куля в руці (ball-in-hand) і суцільними або смугастими кулями. Є три рівні CPU: Easy (легкий), Medium (середній) і Hard (складний), безкоштовний тренувальний стіл з undo (скасуванням), розстановкою куль і re-rack (перестановкою), а також матчі для двох гравців на одному пристрої. Гравці додають накат (follow), відкат (draw) або бічне обертання білій кулі, а локальні досягнення відкривають п'ять кольорів сукна і п'ять стилів кия. Інтерфейс доступний 14 мовами.
- Стек: чистий JavaScript, ES-модулі та WebGL2. Без Three.js та інших бібліотек коду.
- Код: звичайний, відформатований JavaScript у source/src і game/src. Нічого не мініфіковано і не зібрано в один пакет.
- Тести: необов'язкові, з Node.js 20 або новішим. Вони перевіряють фізику, правила 8-ball, матчі з CPU і ключі перекладу.
- Версія на момент написання: 1.1.0, оновлена 22 жовтня 2026 року.
Дивіться сторінку Velvet Pool, демо і посібник
Як організовано файли
game/ і source/ мають однакову структуру, тож шлях в одній папці вказує на той самий файл в іншій. Розподіл, який для гри в більярд важливіший за все, — між src/core/ (симуляція і правила) та src/game/ (усе, з чим взаємодіє гравець).
- src/core/physics.js: симуляція куль, обертання та відбиття від бортів.
- src/core/rules.js: правила 8-ball і рішення щодо фолів.
- src/core/ai.js: як CPU вибирає удар.
- src/game/controls.js: прицілювання, сила і введення обертання.
- src/game/progress.js: досягнення, сукна, кії та підрахунок матчів.
- src/game/i18n.js: тексти 14 мовами, перелічені в LANGS.
- src/game/localRecords.js: локальна історія результатів.
- src/game/audio.js: відтворення ефектів і музики.
- css/style.css і css/fonts.css: тема, адаптивна верстка і оголошення шрифтів.
- assets/: графіка, аудіо і шрифти, а файли логотипів — у assets/logo/.
Оскільки фізика, правила і CPU є окремими модулями, можна зробити CPU поблажливішим, не торкаючись руху куль, або змінити правило фолу, не налаштовуючи борти заново. Це розділення — головне, на що варто дивитися в будь-якому коді більярду, який ви купуєте.
Що покупець змінює першим
Більшість проєктів ідуть тим самим порядком. Починайте з того, що бачать гравці, потім переходьте до того, що вони відчувають, а правила залишайте на останнє, бо саме в правилах найлегше внести помилку.
- Бренд: замініть файли логотипів у assets/logo/ і підправте відповідні розміри в CSS. Білий ярлик дозволено, тож ваша назва або назва вашого клієнта може замінити нашу.
- Вигляд столу: кольори і шрифти зберігаються в css/style.css. Визначення сукна і кіїв — у progress.js. Тримайте їхні ID незмінними, інакше гравці втратять косметику, яку вже відкрили.
- Тексти і мови: кожен рядок є в i18n.js. Редагуйте потрібне формулювання; список мов — у LANGS.
- Складність CPU: вибір удару — в ai.js. Налаштовуйте по одному рівню за раз і зіграйте з ним повний матч.
- Фізика: тертя, обертання і відбиття від бортів — у physics.js. Тут маленькі зміни дають великий ефект, тож після кожної запускайте тести.
- Правила: домашні варіанти належать до rules.js. Перевіряйте фоли і кулю в руці вручну, а не тільки набором тестів.
Робочий процес однаковий для всіх пунктів: змініть файл у source/, скопіюйте його за тим самим шляхом у game/, віддайте папку через HTTP і перезавантажте сторінку. Посібник для покупця радить змінювати одну функцію за раз і після кожної зміни перевіряти меню, матч, паузу, екран результату та перезавантаження.
Хостинг, вбудовування або загортання в застосунок
Хостинг — найпростіша частина. Завантажте все з game/ у папку, наприклад public_html/velvet-pool/, збережіть підпапки і відкрийте адресу. На боці сервера не потрібні npm, термінал, PHP, база даних чи акаунт. Достатньо тарифу, який віддає статичні файли через HTTPS.
- Не відкривайте index.html подвійним клацанням: браузери блокують модулі гри на file://. Для локального тесту запустіть python -m http.server 8765 всередині game/.
- Якщо екран лишається порожнім, перевірте, що WebGL2 увімкнено і що регістр літер у назвах файлів збігається.
- Якщо браузер відмовляється завантажувати модуль, ваш сервер віддає .js з неправильним MIME-типом.
- Всередині iframe на порталі дозвольте повноекранний режим і автовідтворення.
Усе, що потрібно грі під час роботи, лежить у game/, тож нічого не завантажується з CDN чи іншого сайту. Під час кожного нового завантаження сторінки гра все одно звертається до вашого хосту, тому це не офлайн-застосунок для встановлення. Вона працює на сенсорних екранах: гравці цілять на столі та тягнуть елемент керування силою.
Проєкти нативних застосунків не входять до пакета. Якщо ви хочете гру в Google Play або App Store, один із поширених шляхів — обгортка на кшталт Capacitor, який його творці описують як кросплатформне нативне середовище для створення мобільних застосунків на вебкоді. Створення і підтримка проєкту для магазину — це ваша робота або послуга, яку ми оцінюємо окремо.
Чого не містить ця версія
Velvet Pool — це локальна браузерна версія. Немає онлайн-мультиплеєра чи приватних кімнат, онлайн-рейтингу, хмарних акаунтів і рекламного SDK. Двоє людей можуть грати на одному пристрої, а особисті результати з відповідних матчів із CPU зберігаються в браузері. Тренування і матчі на одному пристрої рахунок не зберігають.
Онлайн-гра потребує власного сервера і розробки. Це повноцінний проєкт, тож закладайте бюджет з самого початку, а не розраховуйте, що шаблон сам виросте до нього. Якщо вашому каталогу потрібно більше спортивних ігор, ці дві також продаються як готові до хостингу браузерні версії.
Puttide: 3D-мініголф на 30 лунок, також на чистому JavaScript
Golazo: настільний футбол із 50 національними командами
Ліцензія і ціна одним абзацом
Velvet Pool коштує $39 за ціною зі списку. До 30 листопада 2026 року акція Black Friday дає знижку 15% на кожен шаблон, тож він коштує $33,15, а замовлення з двох і більше шаблонів отримують ще від 5% до 20% знижки. Кожна покупка — це безстрокова невиключна ліцензія на один кінцевий продукт, ваш або одного клієнта. Ви можете змінювати код, графіку та аудіо всередині цього продукту і ставити на нього власний бренд. Гравці можуть грати безкоштовно або з рекламою. Перепродавати шаблон чи його код окремо не можна. Шість місяців підтримки входять у ціну, або 12 з розширенням при оформленні; індивідуальна робота, хостинг та інтеграція SDK або порталу оцінюються окремо.
Прочитайте повні умови ліцензії та підтримки
Поширені запитання
Вихідний код гри в більярд читабельний чи мініфікований?
Читабельний. JavaScript у source/src і game/src звичайний і відформатований, без мініфікованих або зібраних в один пакет файлів.
Чи потрібні Node.js або крок збірки?
Ні. Ви редагуєте файли в source/ і копіюєте їх у game/. Node.js 20 або новіший потрібен лише для запуску необов'язкових тестів.
Чи можна зробити CPU легшим або складнішим?
Так. Вибір удару для CPU міститься в src/core/ai.js, окремо від фізики, тож його можна налаштувати, не змінюючи рух куль.
Чи працює на телефонах?
Так. Підтримується сенсорне введення, а керування адаптується до екрана. Потрібен WebGL2, а продуктивність залежить від пристрою, тож перевірте телефони, якими користуються ваші гравці.
Чи збережуть гравці прогрес, якщо я перенесу гру на новий домен?
Ні. Збереження прив'язані до джерела браузера, тож зміна домену почне гру для гравців з нуля. Оберіть фінальну адресу до запуску.
Чи можна додати онлайн-мультиплеєр?
Не лише цією версією. Для цього потрібні власний сервер і розробка. Ми можемо оцінити це як індивідуальну роботу.
Кому підходить цей код для більярду
Він підійде порталу чи сайту, які хочуть мати гру 8-ball у каталозі, агенцію, що здає брендовану більярдну гру одному клієнту, і розробнику, який хоче прочитати, як написані фізика і правила пулу, без 3D-бібліотеки на шляху. Менше підходить, якщо ваш план залежить від онлайн-матчів або спільного рейтингу.
Перед покупкою пограйте в демо на телефоні і на ноутбуці та відкрийте карту файлів у посібнику. Якщо розподіл між фізикою, правилами та CPU збігається з тим, як ви плануєте працювати, решта — це кілька днів змін.
