Посібник

Вихідний код гри в більярд: що всередині пакета Velvet Pool

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

Арт Velvet Pool: кий вирівняний за білою кулею на зеленому столі, поруч із кулями 3, 8 і 4 біля кутової лузи.

Вихідний код гри в більярд варто купувати, коли три речі живуть в окремих, читабельних файлах: фізика куль, правила 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 поблажливішим, не торкаючись руху куль, або змінити правило фолу, не налаштовуючи борти заново. Це розділення — головне, на що варто дивитися в будь-якому коді більярду, який ви купуєте.

Що покупець змінює першим

Більшість проєктів ідуть тим самим порядком. Починайте з того, що бачать гравці, потім переходьте до того, що вони відчувають, а правила залишайте на останнє, бо саме в правилах найлегше внести помилку.

  1. Бренд: замініть файли логотипів у assets/logo/ і підправте відповідні розміри в CSS. Білий ярлик дозволено, тож ваша назва або назва вашого клієнта може замінити нашу.
  2. Вигляд столу: кольори і шрифти зберігаються в css/style.css. Визначення сукна і кіїв — у progress.js. Тримайте їхні ID незмінними, інакше гравці втратять косметику, яку вже відкрили.
  3. Тексти і мови: кожен рядок є в i18n.js. Редагуйте потрібне формулювання; список мов — у LANGS.
  4. Складність CPU: вибір удару — в ai.js. Налаштовуйте по одному рівню за раз і зіграйте з ним повний матч.
  5. Фізика: тертя, обертання і відбиття від бортів — у physics.js. Тут маленькі зміни дають великий ефект, тож після кожної запускайте тести.
  6. Правила: домашні варіанти належать до 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 збігається з тим, як ви плануєте працювати, решта — це кілька днів змін.

Спробуйте демо Velvet Pool і купіть ліцензію

Потрібні зміни або кілька ліцензій? Запитайте оцінку