尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证친구들과 가상 칩으로 즐기는 RIVER 홀덤 — Cloudflare Workers와 Durable Objects
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗친구끼리 초대 링크로 모여 가상 칩으로 즐기는 2~9인 텍사스 홀덤입니다. 외부 런타임 라이브러리 없이 브라우저 화면과 Cloudflare Worker, SQLite 기반 Durable Object로 구성했습니다.
배포 주소: RIVER
2026-10-23 화면과 기록 개선을 배포했습니다. 기존 회원 8명과 수동 게임 기록 1개를 보존했고, 운영 화면에서 별도 기록의 생성과 같은 ID 수정, 새로고침 후 재열기, 랭킹 반영을 확인했습니다. 검증에 사용한 기록과 방은 정리했습니다. 이번 배포와 데이터 보존 검증을 참고하세요.
기존 게임 엔진과 Cloudflare Worker 및 Durable Object 구조를 유지했습니다. 화면과 기록 변경 범위는 개선 내용에 정리했습니다. 2026-10-12 배포와 실시간 게임 검증은 이전 배포 기록에 남아 있습니다.
Node.js 22 이상이 필요합니다.
npm ci
npm run dev
http://localhost:8787 에서 기본 회원 이름을 선택하고 테이블을 엽니다. 새 회원은 기수와 이름을 입력해 등록하고 입장하거나, 등록만 하기로 가입한 뒤 나중에 참여할 수 있습니다. 초대 링크를 공유한 뒤 2명 이상 준비하면 방장이 시작할 수 있습니다. 로컬 주소는 같은 컴퓨터에서만 접근할 수 있습니다. 친구들과 인터넷에서 플레이하려면 배포가 필요합니다.
미기록으로 구분홈 랭킹은 회원별 지난 게임 기록과 테이블 주간 칩 장부를 합산합니다. 주간 우승은 한국 시간으로 월요일부터 일요일까지의 기록을, 누적 리바인은 모든 기간의 기록을 집계합니다. 홈에서 지난 게임 기록을 열어 참가자 2~9명과 승리 및 리바인 횟수를 입력합니다. 리바인 시각은 비워둘 수 있으며, 저장한 기록의 수정으로 날짜와 횟수를 바꾸면 같은 ID의 기록이 갱신되고 랭킹도 다시 계산됩니다.
멤버를 삭제하려면 홈의 멤버 관리에서 이름 옆 삭제를 누른 뒤 삭제 확인을 누릅니다. 삭제한 멤버는 새 테이블과 새 기록의 선택 명단에서 빠집니다. 과거 기록과 랭킹은 삭제된 멤버 표시로 남고, 이미 참여한 기록은 계속 수정할 수 있습니다. 등록회원은 같은 기수와 이름으로 다시 가입하면 기존 회원 키와 기록을 이어갑니다. 삭제는 명단 제외 방식이며 개인정보와 과거 기록의 완전 삭제 기능은 아닙니다.
테이블 안의 리더보드는 해당 방의 핸드 전적입니다. 정산된 순이익, 승수 순으로 정렬하며 사이드 팟이나 동점 팟을 받아도 승리로 셉니다. 칩 충전은 순이익에 더하지 않습니다. 외부 선수 랭킹 수집과 현금 결제, 환전은 없습니다.
주간 칩 장부는 홀덤 핸드 랭킹과 별도로 운영됩니다. 게임이 끝난 뒤 방장이 참가자별 리바인 횟수와 종료 칩을 세션 기록으로 저장하면, 시작 칩과 리바인 칩을 뺀 순이익 및 월요일부터 일요일까지의 우승 횟수를 집계합니다. 날짜별 기록은 수정하거나 삭제할 수 있고 JSON으로 내려받을 수 있습니다. 새 세션 기록의 참가자는 현재 테이블 참가자 중에서 고릅니다. 같은 게임을 홈과 테이블 장부 양쪽에 새로 입력하면 각각 별도 기록으로 합산되므로 한 곳에 기록합니다. 새 테이블은 시작 칩 20,000개, 블라인드 100/200으로 시작합니다. 이미 30,000칩으로 만든 테이블은 칩, 블라인드, 리바인 칩을 그대로 유지하고, 시작 칩 기준이 저장되지 않은 지난 장부 기록은 30,000칩 기준으로 순이익을 계산합니다. 화면 하단의 버그 제보하기와 GitHub 바로가기 버튼은 이 저장소의 이슈 작성 화면과 저장소 첫 화면으로 연결됩니다. 기존에 저장된 테이블은 칩 기록과 블라인드를 15배로 환산해 기존 스택 깊이를 유지합니다. 이 환산 로직은 이번 개선에서 변경하지 않았습니다.
같은 브라우저의 HttpOnly 쿠키로 재입장합니다. 기기 간 계정 연동은 없으며, 다른 브라우저나 기기에서는 별도 참가자로 입장합니다. 쿠키를 지우면 기존 참가자 신원을 복구할 수 없습니다. 친구에게는 방 링크만 전달되고 개인 세션 쿠키는 전달되지 않습니다.
npm test
npm run check
npm run deploy:check
별도 터미널에 로컬 서버를 켠 상태에서 실시간 연결을 검사합니다.
node test/integration.mjs
test/poker.test.js는 최대 9인과 시작 칩 20,000, 기존 30,000칩 테이블과 장부 기록 유지, 홀덤 경계 조건, 무작위 500핸드의 칩 보존을 검사합니다. test/records.test.js는 격리된 Miniflare의 SQLite Durable Object에 기존 형식 데이터를 넣어 조회, 같은 ID 수정, 동명이인 분리, 동시 저장, 재시작 후 복구를 검사합니다. test/integration.mjs는 두 독립 세션의 API와 WebSocket, 개인 패 비공개, 오래된 명령 거부, 정산, 재접속, 방장 이전을 검사합니다.
2026-10-23 테스트 24개와 로컬 WebSocket 통합 검증이 통과했습니다. 로컬 홈과 9인 테이블은 320px부터 1440px까지 확인했고, 가로 화면을 포함해 넘침과 좌석 겹침이 없었습니다. 기록 저장과 수정 후 새로고침, 등록만 한 뒤 입장, 가이드 전환을 확인했습니다. 배포 후에는 운영 화면의 기록 수정과 랭킹 반영, 기존 회원 및 기록의 저장 원문 보존까지 확인했습니다. 이번 개선 검증과 배포 검증에 범위를 기록했습니다. 2026-10-12의 Chrome 및 Safari 검수는 이전 기기별 검수에 별도로 남아 있습니다. 실제 iOS, Android, Windows 기기에서는 별도 검증이 필요합니다.
workers.dev 주소에 배포합니다. 별도 유료 도메인은 필요하지 않습니다.npx wrangler login --scopes account:read user:read workers_scripts:write
npm run deploy
계정이 여럿이면 배포 대상 계정을 명시해야 합니다. 방 데이터는 해당 계정의 Durable Object에 저장됩니다. 코드의 PokerRoom 클래스명과 마이그레이션 이력은 기존 데이터를 유지하려면 보존해야 합니다.
배포 명령 실행 전에는 인터넷 공개 주소가 만들어지지 않습니다. 로컬 테스트 데이터는 원격 배포로 업로드되지 않습니다.
2026-10-12 확인한 Workers 공식 요금과 Durable Objects 공식 요금을 기준으로 설계했습니다.
공개 배포 후 무료 사용량은 Cloudflare 대시보드에서 확인하세요. 모르는 사람에게 링크를 널리 공개하는 서비스로 확장하려면 방 생성 남용 방지, 계정 기반 신원, 데이터 보존 정책을 별도로 설계해야 합니다.
src/poker.js: 네트워크와 독립적인 홀덤 엔진src/worker.js: 세션, 초대 입장, WebSocket, 서버 상태와 기록 저장public/fonts/: 직접 제공하는 글꼴. 보안 정책상 외부 글꼴 서버를 쓰지 않습니다. 본문은 Pretendard 1.3.9(SIL Open Font License, Pretendard-LICENSE.txt 포함), 제목은 G마켓 산스 Bold(G마켓 무료 배포 글꼴)입니다.public/: 브라우저 화면, 디자인, 매니페스트와 보안 헤더test/: 규칙 및 서버 통합 검증docs/improvements-2026-10-23.md: 홈과 기록 개선 범위, 기존 저장값 보존 검증docs/deployment-2026-10-23.md: 운영 배포, 기록 수정 검증과 테스트 데이터 정리docs/benchmark.md: BGA에서 실제 확인한 흐름과 구현 범위docs/bga-queue-history-2026-10-29.md: 예약 행동, 상세 핸드 기록, 테이블 배치 개선docs/screenshots/: 브라우저 검수와 배포 화면