Сорс код на билярд: отвътре на HTML5 пакет за 8-ball
Физика, правила и компютърен противник в отделни файлове: какво съдържа сорс кодът на Velvet Pool и какво купувачът променя първо.

Сорс кодът на билярд си струва покупката, когато три неща живеят в отделни, четливи файлове: физиката на топките, правилата на 8-ball и компютърният противник. Ако те са оплетени, всяка промяна на цвета на сукното или на трудността на CPU се превръща в сесия по отстраняване на грешки. Velvet Pool, нашият шаблон за 8-ball, ги държи разделени, а това ръководство минава през пакета файл по файл.
Разглеждаме как е организиран кодът, какво купувачът обикновено променя първо, как да го хоствате или опаковате като приложение, какво позволява лицензът и какво изданието не включва. Всяко име на файл по-долу идва от ръководството за купувача, което е включено в играта.
Накратко: Velvet Pool е обикновен JavaScript върху WebGL2, без 3D библиотека и без стъпка за компилиране. Редактирате файл, копирате го в папката на играта и презареждате страницата.
Какво съдържа сорс кодът на билярда
Velvet Pool е готова игра за 8-ball, а не двигател или стартов комплект. Изтеглянето има четири папки: game/ е готовият build за качване, source/ е същата игра като издание за разработчици с README, package.json и тестове, documentation/ съдържа илюстрираното ръководство на английски и португалски, а THIRD-PARTY-LICENSES/ пази текстовете на лицензите за шрифтовете.
Самата игра е 8-ball с фаулове, ball-in-hand (топката в ръка) и пълни или раирани топки. Има три нива на компютърния противник – Easy, Medium и Hard (лесно, средно и трудно), безплатна маса за тренировка с отмяна, поставяне на топки и повторно подреждане, и мачове за двама играчи на едно устройство. Играчите добавят follow, draw или странично въртене към бялата топка, а локалните постижения отключват пет цвята на сукното и пет стила на щеки. Интерфейсът е на 14 езика.
- Технологии: обикновен JavaScript, ES модули и WebGL2. Няма Three.js или друга библиотека с код.
- Код: чист, форматиран JavaScript в source/src и game/src. Нищо не е минифицирано или пакетирано.
- Тестове: по желание, с Node.js 20 или по-нов. Проверяват физиката, правилата на 8-ball, мачовете с компютъра и ключовете за превод.
- Версия към момента на писането: 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: как компютърът избира удара си.
- 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/.
Тъй като физиката, правилата и компютърът са отделни модули, можете да направите компютъра по-снизходителен, без да докосвате начина, по който се движат топките, или да промените правило за фаул, без да настройвате отново борда. Това разделение е основното, което трябва да търсите във всеки билярден код, който купувате.
Какво купувачът променя първо
Повечето проекти следват един и същ ред. Започнете с това, което виждат играчите, после минете на това, което усещат, и оставете правилата за накрая, защото правилата са най-лесното място за въвеждане на грешка.
- Брандиране: заменете логата в assets/logo/ и съгласувайте размерите в CSS. Бялата етикетировка е разрешена, така че вашето име или името на клиента ви може да замени нашето.
- Вид на масата: цветовете и шрифтовете са в css/style.css. Дефинициите за сукното и щеките са в progress.js. Пазете идентификаторите им стабилни, иначе играчите губят козметиката, която вече са отключили.
- Текстове и езици: всеки текст е в i18n.js. Редактирайте формулировката, която ви трябва; списъкът с езици е в LANGS.
- Трудност на компютъра: изборът на удар е в ai.js. Настройвайте по едно ниво наведнъж и изиграйте цял мач срещу него.
- Физика: триенето, въртенето и отскокът от борда са в physics.js. Малките промени тук имат голям ефект, затова пускайте тестовете след всяка от тях.
- Правила: домашните вариации се слагат в rules.js. Проверявайте фаулите и ball-in-hand ръчно, а не само с пакета тестове.
Работният процес е един и същ за всички: редактирате файла в 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. Двама души могат да играят на едно устройство, а личните резултати от допустимите мачове с компютъра се записват в браузъра. Тренировката и мачовете на едно устройство не записват резултат.
Онлайн игрите изискват ваш сървър и разработка. Това е истински проект, затова го планирайте от самото начало, вместо да очаквате, че шаблонът ще прерасне в него. Ако каталогът ви има нужда от още спортни игри, тези две също се продават като готови издания за браузър.
Puttide: мини голф в 3D с 30 дупки, също на обикновен JavaScript
Golazo: футбол на маса с 50 национални отбора
Лиценз и цена в един абзац
Velvet Pool е на каталожна цена 39 USD. До 30 ноември 2026 г. промоция за Black Friday намалява всеки шаблон с 15%, така че струва 33,15 USD, а поръчките от два или повече шаблона получават допълнителна отстъпка от 5% до 20%. Всяка покупка е вечен, неексклузивен лиценз за един краен продукт – ваш или на един ваш клиент. Можете да променяте кода, изкуството и звука в този продукт и да поставите собствената си марка. Играчите могат да я ползват безплатно или с реклами. Не можете да препродавате шаблона или кода му самостоятелно. Поддръжка за 6 месеца е включена, или 12 с разширението при плащане; работата по поръчка, хостингът и интеграцията със SDK или портал се оценяват отделно.
Прочетете пълните лицензни условия и условията за поддръжка
Често задавани въпроси
Сорс кодът на билярда четлив ли е, или е минифициран?
Четлив е. JavaScript в source/src и game/src е обикновен и форматиран, без минифицирани или пакетирани файлове.
Нужен ли ми е Node.js или стъпка за компилиране?
Не. Редактирате файловете в source/ и ги копирате в game/. Node.js 20 или по-нов е нужен само ако искате да пуснете по желание тестовете.
Мога ли да направя компютъра по-лесен или по-труден?
Да. Изборът на удар на компютъра е в src/core/ai.js, отделно от физиката, така че можете да го настройвате, без да променяте начина, по който се движат топките.
Работи ли на телефони?
Да. Поддържа се сензорно управление и контролите се адаптират към екрана. Изисква се WebGL2, а производителността зависи от устройството, затова тествайте телефоните, които ползват вашите играчи.
Ще запазят ли играчите напредъка си, ако преместя играта на нов домейн?
Не. Записите принадлежат на произхода на браузъра, така че смяната на домейна започва играчите от нулата. Изберете крайния адрес преди старта.
Мога ли да добавя онлайн мултиплейър?
Не само с това издание. Той изисква ваш сървър и разработка. Можем да го оценим като работа по поръчка.
За кой билярден код е подходящ
Подхожда на портал или сайт, който иска игра за 8-ball в каталога си, на агенция, която доставя брандирана билярдна игра на един клиент, и на разработчик, който иска да прочете как са написани физиката и правилата на билярда, без 3D библиотека по пътя. По-слабо подхожда, ако планът ви зависи от онлайн мачове или общата класация.
Изиграйте демото на телефон и на лаптоп, преди да купите, и отворете картата на файловете в ръководството. Ако разделението между физика, правила и компютър съвпада с начина, по който планирате работата си, останалото са няколко следобеда с промени.
