Посібник

Вихідний код доміно: правила, суперники CPU і 58 тестів

Що входить до пакета Pip Club Dominoes, які правила він грає, де змінити тексти і плитки та чого в ньому немає.

Ілюстрація Pip Club Dominoes: єнот, лисиця і чорний кіт у толстовках усміхаються за круглим столом із трьома плитками доміно на заході сонця.

Вихідний код гри в доміно здається простим, поки не перевіриш крайні випадки. Хто ходить першим, коли ніхто не має дубля? Що відбувається, коли запас (boneyard) порожній і обидва гравці пасують? Як рахуються очки наприкінці заблокованого раунду? Шаблон, який відповідає на ці питання в коді і доводить це тестами, вартий більше, ніж той, де плитки гарніші. Pip Club Dominoes, наш шаблон «дубль-шість», містить 58 автоматичних тестів, які охоплюють правила, комп’ютерного суперника, розкладку столу, збереження і 14 перекладів.

Цей гід пояснює, які правила грає гра, як організовано пакет, що можна змінити текстовим редактором, а що потребує перезбірки, як її розмістити і що дозволяє ліцензія. Назви файлів узяті з ілюстрованого посібника для покупця, що йде з товаром.

Одне, що варто знати перед усім іншим: Pip Club грають проти комп’ютера. Онлайн-режиму і режиму для двох гравців на одному пристрої немає.

Правила, які грає цей вихідний код гри в доміно

Правила найбільше відрізняються між шаблонами доміно, тож звірте їх з очікуваннями ваших гравців. Pip Club грає класичну блокову гру «дубль-шість», один гравець проти одного комп’ютерного суперника.

  • 28 плиток від 0 до 6. Кожен гравець отримує по 7, інші 14 лишаються в запасі (boneyard).
  • Відкриває найвищий дубль. Якщо дублів немає, відкриває найвища сума, а при нічиїй найвища половинка.
  • У столі завжди два кінці, A і B. Плитка має збігатися з кінцем, а нуль збігається з нулем.
  • Дублі можна класти поперек, але вони не розгалужують стіл і не дають додаткового ходу.
  • Якщо немає збігу, тягніть по одній плитці, доки не зможете зіграти. Коли запас порожній і збігу немає, пасуйте.
  • Domino (домино): хто першим позбувся руки, отримує суму очок, що лишилась у суперника.
  • Lock (блокування): два паси поспіль при порожньому запасі блокують стіл. Перемагає менша сума, а при рівних сумах нічия.

Quick Round (швидкий раунд) завершується після одного раунду. Points Match (матч на очки) грає раунди, доки хтось не набере 50 або 100. Кампанія має 9 зустрічей у 3 розділах, по одному на кожне місце збору, і кожна перемога приносить печатку.

Що входить до пакета

Гравці зустрічаються з трьома комп’ютерними суперниками з власними характерами: Rico, єнот-діджей, Faísca, лисиця-скейтер, і Nix, кіт-художник, кожен на рівні Easy (легкий), Normal (звичайний) або Hard (складний). Плитки, які можна зіграти, світяться, стіл показує, куди ляже плитка, а підказка пропонує хід. Є три місця збору: Rooftop (дах), Skate Park (скейтпарк) і Midnight Arcade (опівнічна аркада), шість колекційних наборів плиток, печатки кампанії і статистика. Працюють миша, дотик і клавіатура.

  • game/: готова до хостингу збірка з index.html, pip.config.js, modules/, lib/, assets/ і licenses/.
  • game/lib/phaser.js: Phaser 3.90.0, читабельний, за ліцензією MIT.
  • source/: редагований TypeScript, графіка, музика, переклади і автоматичні тести.
  • documentation/index.html і DOCUMENTATION.html: посібник для покупця 14 мовами, який відкривається офлайн.
  • THIRD-PARTY-LICENSES/: повідомлення для Phaser і шрифта Barlow Condensed.

Графіка і музика це оригінальні активи продукту, ліцензовані покупцю разом з товаром. Інтерфейс має 14 мов і слідує за мовою браузера; запису голосу немає, тож кожна репліка суперника йде обраною мовою.

Дивіться Pip Club Dominoes: демо, посібник і ціну

Змініть без перезбірки: pip.config.js

Поруч з index.html лежить pip.config.js. Відкрийте його в будь-якому текстовому редакторі, змініть значення, завантажте файл і перезавантажте сторінку. Там три налаштування.

  • title: заголовок вкладки браузера.
  • saveKey: назва, під якою зберігаються збереження. За замовчуванням pip-club.
  • defaultLanguage: мова за замовчуванням. Якщо порожньо, гра слідує за браузером.

Не змінюйте saveKey на живому сайті. Інший ключ змушує гру ігнорувати наявний прогрес і починати нове збереження, що корисно для другої копії і болісно при оновленні.

Де в коді лежать тексти, графіка і плитки

  • Тексти і переклади: source/src/ui/i18n.ts і source/src/ui/locales/.
  • Арт персонажів, сцени і логотип: source/src/assets/club/.
  • Музика: source/src/assets/music/.
  • Кольори плиток: source/src/art/palette.ts і source/src/art/tileArt.ts.
  • Тести: source/tests/.

Типова робота з брендуванням іде в такому порядку: логотип і арт сцени в assets/club/, потім палітра плиток, потім формулювання в locales. White label дозволено, тож ваш бренд може замінити наш. Зміна ходів комп’ютера чи правила це глибша робота; запускайте тести до і після, бо вони охоплюють обидва.

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

Ludo Cats: Ludo з кошенятами, CPU на трьох рівнях або друзі на одному пристрої

Boba Club: пасьянс Klondike з кампанією з 12 розкладів

Перезбірка після редагування TypeScript

Папка game/ вже зібрана, тож для встановлення гри Node.js не потрібен. Він потрібен лише після зміни вихідного коду.

  1. Встановіть Node.js 22.12 або новіший (посібник перевірено на 22.23). npm іде разом з ним.
  2. Відкрийте термінал у source/, де лежать package.json і package-lock.json.
  3. Запустіть npm ci. Він встановлює точні зафіксовані версії Phaser, Vite, Vitest і TypeScript.
  4. Запустіть npm test (58 тестів) і npm run typecheck. Виправте помилки, перш ніж збирати.
  5. Запустіть npm run build. Результат лежить у source/dist-static/, з index.html, modules/, lib/, assets/ і licenses/.
  6. Зробіть резервну копію розміщеної гри, потім завантажте вміст dist-static/ точно так, як game/.

Посібник застерігає від npm audit fix і npm update, бо вони змінюють перевірені версії. Якщо з’явиться проблема з пакетом, поверніть поставлену пару package.json і package-lock.json.

Розміщення на вашому сайті

Завантажуйте лише вміст game/, щоб index.html опинився прямо в цільовій папці, наприклад public_html/games/pip-club/. Поруч тримайте assets/, lib/, modules/, licenses/ і pip.config.js і зберігайте регістр літер у кожній назві. Не завантажуйте source/, documentation/ чи ZIP.

  • Підходить будь-який статичний HTTP(S)-хостинг, у будь-якій підпапці будь-якого домену, бо гра використовує відносні шляхи.
  • Для гри не потрібні база даних, PHP чи сервіс Node.js.
  • Відкриття index.html з вашого комп’ютера (file://) не підтримується.
  • Хостинг має віддавати .js, .webp, .woff2 і .mp3 зі звичайними типами.
  • Гра не робить викликів аналітики, рейтингу, платежів чи реклами.

Збереження лишаються в браузері гравця, в IndexedDB або localStorage, і не синхронізуються між пристроями. Щоб оновити, завантажте новий game/ поверх старого, залиште pip.config.js і його saveKey, а якщо показується стара версія, очистьте кешовані файли, а не дані сайту.

Чого немає і ліцензія

Видання не має онлайн- чи локального режиму для двох гравців, хмарних збережень, онлайн-рейтингу, покупок за реальні гроші і рекламного SDK. Нативні застосунки, хостинг і індивідуальна розробка також поза пакетом. Додавання реклами, магазину чи синхронізації це робота розробника, яка потребує ваших акаунтів і погоджень.

Pip Club коштує $49, що з акцією «Чорна п’ятниця» до 30 листопада 2026 року стає $41.65; знижка за пакет від 5% до 20% діє, коли купуєте два чи більше шаблонів разом. Ліцензія безстрокова і невиняткова, на один кінцевий продукт, ваш або одного клієнта. Код, графіку й аудіо можна змінювати, ставити свій бренд і пускати гравців безкоштовно або з рекламою, але шаблон або його код окремо перепродавати не можна. Підтримка триває шість місяців, або дванадцять з розширенням; усе, що виходить за межі встановлення і виправлення дефектів, оцінюється окремо.

Читайте умови ліцензії та підтримки

Поширені запитання

Вихідний код гри в доміно написаний на TypeScript чи JavaScript?

Вихідний код це читабельний, немінімізований TypeScript. Готова до хостингу папка game/ містить зібраний JavaScript, тож інструменти TypeScript потрібні лише для зміни гри.

Чи можуть грати двоє людей один проти одного?

Ні. Гравці грають проти комп’ютерних суперників на одному пристрої. Режиму для двох гравців, ні онлайн, ні локального, немає.

Який варіант доміно вона грає?

Класичний «дубль-шість», один проти одного, з добором із запасу, пасами та правилом блокування. Domino (домино) рахує залишок суперника, а заблокований стіл іде до меншої суми.

Що можна змінити без перезбірки?

pip.config.js задає заголовок браузера, ключ збереження і мову за замовчуванням. Правила, графіка, тексти і музика змінюються у вихідному коді і потребують перезбірки.

Чи працює вона офлайн?

Вона не викликає зовнішніх сервісів, але це не застосунок, який можна встановити для офлайн-роботи. Гравцям потрібно зайти на вашу веб-адресу, щоб її завантажити.

Чи це потрібна вам основа для доміно?

Pip Club пасує сайту чи порталу, який хоче класичну настільну гру для всіх віків; студії, яка будує брендовану гру в доміно для одного клієнта; і розробнику, якому потрібен читабельний TypeScript з комп’ютерним суперником і справжніми модульними тестами. Він не пасує проєкту, якому потрібно, щоб люди грали один з одним, онлайн чи на одному екрані; такий проєкт з самого початку є індивідуальною роботою.

Зіграйте демо Pip Club і купіть ліцензію

Потрібен інший набір правил чи кілька ліцензій? Запросіть пропозицію