가이드

도미노 게임 소스코드: 규칙, CPU 상대, 테스트 58개

Pip Club Dominoes 패키지에 무엇이 들어 있는지, 어떤 규칙으로 진행되는지, 텍스트와 타일은 어디서 바꾸는지, 무엇이 빠져 있는지 정리했습니다.

Pip Club Dominoes 아트워크: 후드티를 입은 너구리, 여우, 검은 고양이가 해 질 녘 도미노 타일 세 개가 놓인 둥근 테이블에 둘러앉아 웃고 있습니다.

도미노 게임 소스코드는 예외 상황을 확인하기 전까지는 단순해 보입니다. 아무도 더블을 갖고 있지 않으면 누가 먼저 둘까요? 더미가 비었고 두 사람 모두 패스하면 어떻게 될까요? 막힌 판이 끝나면 점수는 어떻게 계산할까요? 이런 질문에 코드로 답하고 테스트로 증명하는 템플릿은 타일이 더 예쁜 템플릿보다 가치가 있습니다. 저희 더블식스 템플릿 Pip Club Dominoes에는 규칙, 컴퓨터 상대, 테이블 배치, 저장, 14개 번역을 검증하는 자동 테스트 58개가 들어 있습니다.

이 가이드는 게임이 어떤 규칙으로 진행되는지, 패키지가 어떻게 구성되어 있는지, 텍스트 에디터로 바꿀 수 있는 것과 리빌드가 필요한 것, 호스팅 방법, 라이선스 범위를 설명합니다. 파일 이름은 상품에 포함된 그림 구매자 가이드를 따릅니다.

무엇보다 먼저 알아 둘 점: Pip Club은 컴퓨터를 상대로 하는 게임입니다. 온라인 모드도, 한 기기에서 둘이 하는 모드도 없습니다.

이 도미노 게임 소스코드의 규칙

도미노 템플릿은 규칙에서 가장 크게 갈리므로, 여러분의 플레이어가 기대하는 규칙과 비교해 보세요. Pip Club은 플레이어 한 명과 컴퓨터 상대 한 명이 하는 클래식 더블식스 블록 게임입니다.

  • 0부터 6까지 28개 타일. 각자 7개를 받고 나머지 14개는 더미에 남습니다.
  • 가장 높은 더블이 먼저 둡니다. 더블이 없으면 합이 가장 큰 타일, 같으면 더 큰 쪽 숫자가 먼저입니다.
  • 테이블에는 항상 A와 B 두 끝이 있습니다. 타일은 한쪽 끝과 숫자가 맞아야 하며, 0은 0과 맞습니다.
  • 더블은 가로로 놓을 수 있지만 가지를 치지 않고 추가 턴도 주지 않습니다.
  • 맞는 타일이 없으면 둘 수 있을 때까지 한 장씩 뽑습니다. 더미가 비었는데 맞는 타일이 없으면 패스합니다.
  • 도미노: 손패를 먼저 비운 사람이 상대 손에 남은 숫자 합을 점수로 얻습니다.
  • 잠김: 더미가 빈 상태에서 연속 두 번 패스하면 테이블이 잠깁니다. 합이 낮은 쪽이 차이만큼 이기고, 같으면 무승부입니다.

Quick Round는 한 판으로 끝납니다. Points Match는 누군가 50점이나 100점에 도달할 때까지 판을 이어 갑니다. 캠페인은 3개 챕터(장소마다 하나)에 9번의 대결로 구성되며, 이길 때마다 인장을 받습니다.

패키지 구성

플레이어는 개성이 다른 컴퓨터 상대 셋과 겨룹니다. DJ 너구리 Rico, 스케이터 여우 Faísca, 아티스트 고양이 Nix이며, 각각 Easy, Normal, Hard 난이도가 있습니다. 둘 수 있는 타일은 빛나고, 테이블은 타일이 놓일 자리를 미리 보여 주며, 힌트가 수를 추천합니다. 세 장소(Rooftop, Skate Park, Midnight Arcade), 수집용 타일 세트 6종, 캠페인 인장, 통계가 있습니다. 마우스, 터치, 키보드 모두 지원합니다.

  • 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의 문구입니다. 화이트 라벨이 허용되므로 저희 브랜드 대신 여러분의 브랜드를 넣을 수 있습니다. 컴퓨터의 플레이 방식이나 규칙을 바꾸는 것은 더 깊은 작업입니다. 테스트가 둘 다 다루므로 수정 전후로 실행하세요.

보드게임 카탈로그를 작게 꾸리고 있다면, 저희 다른 템플릿 두 개가 이 게임과 잘 어울립니다.

Ludo Cats: 새끼 고양이 루도, 3단계 CPU 또는 한 기기에서 친구와

Boba Club: 12판 캠페인이 있는 클론다이크 솔리테어

TypeScript 수정 후 다시 빌드하기

game/ 폴더는 이미 빌드되어 있으므로 게임 설치에는 Node.js가 필요 없습니다. 소스를 바꾼 뒤에만 필요합니다.

  1. Node.js 22.12 이상을 설치합니다(가이드는 22.23에서 테스트됨). npm이 함께 설치됩니다.
  2. package.json과 package-lock.json이 있는 source/에서 터미널을 엽니다.
  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는 그대로 두세요. 예전 버전이 계속 보이면 사이트 데이터가 아니라 캐시된 파일을 지우세요.

포함되지 않은 것과 라이선스

이 에디션에는 온라인이든 로컬이든 2인 모드가 없고, 클라우드 저장, 온라인 랭킹, 실제 화폐 결제, 광고 SDK도 없습니다. 네이티브 앱, 호스팅, 맞춤 개발도 패키지에 포함되지 않습니다. 광고, 상점, 동기화를 추가하려면 여러분의 계정과 승인이 필요한 개발 작업이 필요합니다.

Pip Club의 정가는 $49이며, 2026년 11월 30일까지 블랙 프라이데이 프로모션으로 $41.65입니다. 템플릿을 두 개 이상 함께 사면 5%~20% 묶음 할인이 적용됩니다. 라이선스는 영구·비독점이며 최종 제품 하나(여러분의 것 또는 고객사 하나)에 적용됩니다. 코드·아트·오디오 수정, 브랜드 적용, 무료 또는 광고 포함 서비스가 가능하지만, 템플릿이나 코드 자체를 단독으로 재판매할 수는 없습니다. 지원 기간은 6개월, 연장 시 12개월이며, 설치와 결함 수정 이외의 작업은 견적을 드립니다.

라이선스 및 지원 약관 읽기

자주 묻는 질문

도미노 게임 소스코드는 TypeScript인가요, JavaScript인가요?

소스는 압축(minify)하지 않은 읽기 쉬운 TypeScript입니다. 바로 호스팅하는 game/ 폴더에는 빌드된 JavaScript가 들어 있으므로, TypeScript 도구는 게임을 수정할 때만 필요합니다.

두 사람이 서로 대결할 수 있나요?

아닙니다. 한 기기에서 컴퓨터 상대와 겨룹니다. 온라인이나 로컬 2인 모드는 없습니다.

어떤 도미노 변형 규칙인가요?

클래식 더블식스 1대1 방식으로, 더미에서 뽑기, 패스, 잠김 규칙이 있습니다. 도미노를 하면 상대의 남은 합을 얻고, 잠긴 테이블은 합이 낮은 쪽이 이깁니다.

리빌드 없이 무엇을 바꿀 수 있나요?

pip.config.js에서 브라우저 제목, 저장 키, 시작 언어를 정합니다. 규칙, 아트, 텍스트, 음악은 소스에서 바꾸며 리빌드가 필요합니다.

오프라인에서도 되나요?

외부 서비스를 호출하지는 않지만 설치형 오프라인 앱은 아닙니다. 플레이어가 게임을 불러오려면 여러분의 웹 주소에 접속해야 합니다.

나에게 필요한 도미노 베이스일까?

Pip Club은 모든 연령대를 위한 클래식 보드게임이 필요한 사이트나 포털, 고객사 하나를 위해 브랜드 도미노 게임을 만드는 스튜디오, 컴퓨터 상대와 실제 단위 테스트가 있는 읽기 쉬운 TypeScript를 원하는 개발자에게 맞습니다. 사람끼리 온라인이나 한 화면에서 대결해야 하는 프로젝트에는 맞지 않으며, 그런 경우는 처음부터 맞춤 개발입니다.

Pip Club 데모 플레이하고 라이선스 구매하기

다른 규칙이나 여러 라이선스가 필요하신가요? 견적 문의하기