Polestar
Polestar는 무료 오픈소스 월드오브워크래프트 레벨링 가이드 애드온으로, 인게임 화살표와 1~60 레벨 경로, 직업 퀘스트를 제공한다
7개 베트남·보드 게임 실시간 멀티플레이 백엔드, Node·WebSocket·Redis 사용, Vercel 백업
Realtime multiplayer backend for 7 Vietnamese & board games (Tiến Lên, Mèo Nổ, Cờ Tỷ Phú, Splendor, Bang!, Ô Ăn Quan, Cờ Cá Ngựa) — Node + WebSocket + Redis, self-hosted with Vercel as backup.
게임TypeScript · JavaScriptGitHub @ThachHuynhIT온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Tài liệu cho developer (kiến trúc, giao thức, luật từng game, cách thêm game mới):
docs/GUIDE.md.
Tám game: Tiến Lên Miền Nam (
/api/ws,/api/rooms,/api/leaderboard), Mèo Nổ (/api/meono/*), Cờ Tỷ Phú (/api/typhu/*), Đá Quý — lối chơi Splendor (/api/splendor/*), Cờ Cá Ngựa (/api/cangua/*), Ô Ăn Quan (/api/oanquan/*), Nối Chữ (/api/noichu/*) và Đấu Súng — lối chơi Bang! kèm 7 bản mở rộng (/api/bang/*), cùng chung hạ tầng hub / Redis / chat. Luật từng game nằm sau mộtGameAdapter(src/server/adapters.ts), code ởsrc/game/,src/meono/,src/typhu/,src/splendor/,src/bang/,src/cangua/,src/oanquan/,src/noichu/. Trên Vercel, các endpoint/api/<game>/<kind>dùng chung một function độngapi/[game]/[kind].tsđể nằm trong giới hạn 12 function của gói Hobby.
Backend cho các game online của site game, gồm luật chơi, phòng chơi và WebSocket realtime. Phần giao diện nằm trong repo zonenop-game (chạy ở https://play.fudio101.com, bản Vercel zonenop-game.vercel.app; route /tien-len …) và kết nối tới backend này qua NEXT_PUBLIC_TIENLEN_SERVER_URL (máy dự phòng: NEXT_PUBLIC_TIENLEN_FALLBACK_URL). Repo portfolio không còn chứa game.
Trình duyệt (zonenop-game /tien-len …)
│ wss://…/api/ws (thử máy chính trước, không trả lời thì sang máy dự phòng)
├──────────────────────────────────────┐
▼ ▼
play-api.fudio101.com (máy chính) be-game-omega.vercel.app (dự phòng)
Cloudflare Tunnel → Traefik → Vercel Functions api/*.ts
src/local.ts trong Docker (region sin1, Fluid compute)
│ CAS (Lua) + pub/sub │ CAS (Lua) + pub/sub
▼ ▼
Redis trong compose (./data/redis) Upstash Redis
Hai backend chạy cùng code từ main. Redis: riêng mỗi máy như sơ đồ, và đó là trạng thái hiện tại (máy chính: sharedStore: false; máy dự phòng: Upstash). Việc chuyển máy chính sang Upstash chung (công cụ src/tools/migrate-store.ts và cấu hình REDIS_URL đã có trong repo) chưa được thực hiện, còn chờ buổi diễn tập. Khi đã chuyển, hai máy dùng chung một kho (phòng, sảnh, bảng điểm là một): xem mục "Frontend chọn backend thế nào" trong docs/DEPLOYMENT.md và "Chuyển sang / quay lại kho chung" trong docs/SELF_HOSTING.md. Môi trường, luồng phát hành và lưu ý vận hành: docs/DEPLOYMENT.md.
| Game | Code | Số người | WebSocket | Sảnh phòng | Bảng xếp hạng |
|---|---|---|---|---|---|
| Tiến Lên Miền Nam | src/game/ | 2–4 | /api/ws | /api/rooms | /api/leaderboard |
| Mèo Nổ | src/meono/ | 2–7 (tuỳ chế độ) | /api/meono/ws | /api/meono/rooms | /api/meono/leaderboard |
| Cờ Tỷ Phú | src/typhu/ | 2–6 | /api/typhu/ws | /api/typhu/rooms | /api/typhu/leaderboard |
| Đá Quý (Splendor) | src/splendor/ | 2–4 | /api/splendor/ws | /api/splendor/rooms | /api/splendor/leaderboard |
| Đấu Súng (Bang!) | src/bang/ | 3–8 | /api/bang/ws | /api/bang/rooms | /api/bang/leaderboard |
| Cờ Cá Ngựa | src/cangua/ | 2–4 | /api/cangua/ws | /api/cangua/rooms | /api/cangua/leaderboard |
| Ô Ăn Quan | src/oanquan/ | 2–4 | /api/oanquan/ws | /api/oanquan/rooms | /api/oanquan/leaderboard |
| Nối Chữ | src/noichu/ | 2–8 | /api/noichu/ws | /api/noichu/rooms | /api/noichu/leaderboard |
/rooms trả các phòng còn người (tối đa 30), /leaderboard?limit=20 (1–100) trả điểm mọi thời đại. GET /api/health kiểm tra store (Redis/RAM, vòng pub/sub) và báo commit đang chạy, redisId, sharedStore, now (chi tiết: docs/GUIDE.md → HTTP endpoints). Bảng route nằm ở src/server/app.ts.
Tài khoản (đăng nhập bắt buộc để vào bàn; chi tiết: docs/GUIDE.md → "Tài khoản và theo dõi"): POST /api/auth/register, POST /api/auth/login, POST /api/auth/logout, GET/PATCH /api/auth/me, GET/PATCH /api/auth/prefs (cài đặt giao diện theo tài khoản, mỗi game một mục), POST /api/track (đếm lượt xem), và cho admin GET /api/admin/stats, GET /api/admin/users, PATCH /api/admin/users/<id>. /leaderboard trả bảng mùa này ({season:"current", rows}) từ Postgres; ?season=old trả bảng cũ. /api/health thêm accounts: "postgres" | "memory" | "unconfigured" | "unavailable". Chưa có DATABASE_URL thì ở dev tài khoản nằm trong bộ nhớ (mất khi restart, mỗi máy một danh sách); ở production (NODE_ENV=production hoặc VERCEL) thì tài khoản chưa cấu hình: route auth/admin/track trả 503 và không vào bàn được, trừ khi đặt ACCOUNTS_MEMORY=1.
Trên Vercel có 5 function: api/ws.ts, api/rooms.ts, api/leaderboard.ts, api/health.ts (Tiến Lên + health) và api/[game]/[kind].ts cho mọi endpoint của 6 game còn lại. Mọi file đều export cùng một server; app.ts định tuyến theo path. Game mới chỉ cần thêm route trong app.ts, không thêm file vào api/.
Mèo Nổ (src/meono/cards.ts): 6 gói mở rộng (imploding, streaking, barking, attacking, defending, zombie). Chủ phòng chọn một trong 16 chế độ PRESETS (mỗi chế độ có số người tối thiểu/tối đa riêng) hoặc custom để tự tick gói; khi đó tối đa 5 người với bộ gốc, 6 nếu có gói bất kỳ, 7 nếu có Attacking Kittens. Không ai được "Không!" (Nope) chặn lá của chính mình: lá Không! đầu tiên không thể do người đánh lá gốc chơi, và không ai chặn lại lá Không! của chính mình (người đánh lá gốc vẫn được Không! đáp lại người vừa chặn).
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗