Files
neon-survivors/README.md
T
neon-survivors-dev 796880375e NEON SURVIVORS v1.1 — full-featured bullet-heaven survivor game
Vanilla JS + Canvas, zero dependencies, offline-first PWA.

Gameplay:
- 11 weapons x8 levels + 11 evolutions (chest-based), incl. timed mines
- 13 passives, crit system with directional hit-sparks & hit-stop
- 10 characters w/ unique mods + unlock conditions, gold cosmetic skins
- 3 biomes (Neon Graveyard / Frozen Hollow / Magma Rift) each with own
  spawn tables, boss plans and music flavor; Endless mode + surges;
  4 difficulty grades; breakable crystal-lamp props
- Elite random affixes (Swift/Sturdy/Volatile), 4 bosses, win flow
- Achievements (23) w/ gold rewards, run history, daily seeded challenge

Tech:
- Cinematic canvas main-menu scene, game-feel FX suite (trails, muzzle,
  status tints, low-HP pulse), viewport culling + particle pooling
- WebAudio synth SFX + generative per-biome soundtrack
- Gamepad support, remappable keys, touch joystick, fullscreen
- i18n VI/EN, localStorage saves w/ export-import codes
- Cloudflare Workers leaderboard scaffold (KV) w/ signed submits
- Headless integrity test-suite (node test/integrity.js)
2026-08-23 07:01:22 +00:00

115 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🌃 NEON SURVIVORS
Một game **survivor / bullet-heaven** hoàn chỉnh (lấy cảm hứng từ Vampire Survivors), viết thuần bằng
HTML5 Canvas + JavaScript — **không cần cài đặt, không asset ngoài, không internet**, mọi thứ từ đồ họa
đến âm thanh đều được sinh tự động bằng code.
![genre](https://img.shields.io/badge/genre-bullet%20heaven-7c5cff) ![offline](https://img.shields.io/badge/runs-offline-00e5ff)
---
## ▶️ Cách chạy
**Cách 1 — mở thẳng file:** nhấp đúp vào `index.html` (Chrome / Edge / Firefox).
**Cách 2 — qua local server (khuyến nghị cho mobile LAN):**
```bash
cd 2dsurvivor
python3 -m http.server 8080 # hoặc: npx serve .
# mở http://localhost:8080
```
## 🎮 Điều khiển
| Hành động | Desktop | Mobile |
|---|---|---|
| Di chuyển | `WASD` / Phím mũi tên | Kéo ngón tay trên màn hình (joystick ảo) |
| Tấn công | **Tự động** — cứ việc né! | Tự động |
| Tạm dừng | `Esc` / `P` | Nút hệ thống |
| Chọn nâng cấp | Chuột / `1``4` | Chạm |
## ✨ Tính năng
### Gameplay
- **11 vũ khí** riêng biệt (đũa phép, roi, phi đao, quả cầu quay, rìu, hào quang, thiên lôi,
cầu lửa, băng tinh, thánh giá, 🧨 mìn hẹn giờ) — mỗi vũ khí **8 cấp** với bảng nâng cấp riêng.
- **11 dạng tiến hóa**: (mìn → 💣 Vườn Pháo Hoa) vũ khí đầy cấp + sở hữu passive tương ứng → mở **Rương Báu Vật**
(rơi từ quái Tinh Anh & Trùm) để tiến hóa (VD: Đũa Phép + Siêu Dẫn ⇒ 🌟 Bão Thần Tín).
- **13 vật phẩm bị động** (sát thương, giáp, HP, hồi máu, hồi chiêu, diện tích, tốc đạn,
thời gian, di chuyển, nam châm, may mắn, tham lam, tuệ tăng).
- **10 nhân vật** mở khóa dần (thêm 🏹 Hana chí-mạng & 🧱 Bram diện-tích), kèm **🎨 skin màu** mua bằng vàng.
- **Đạo quái theo phút**: 8 loại quái thường (đuổi, bắn, bay lượn, húc, chia màn…),
quái **Tinh Anh** định kỳ, và **4 Trùm lớn** ở phút 5/10/19:
🐺 Sói Đầu Lớn → 💀 Pháp Sư Xương → 👹 Quái Vật Địa Ngục → ⚰ **Tử Thần**.
Hạ Tử Thần ở phút 19 để **chiến thắng**.
- Hiệu ứng trạng thái: cháy, làm chậm, đóng băng (kèm sát thương vỡ băng), choáng, đẩy lùi, hút máu.
- Chí mạng, số sát thương nổi, hạt hiệu ứng, rung màn hình, mũi tên chỉ trùm ngoài màn hình.
### Tiến trình & tùy chọn
- **Meta-progression**: vàng tích lũy vĩnh viễn, cửa hàng **12 nâng cấp vĩnh viễn** (có hồi sinh, bốc lại…).
- Lưu tự động bằng `localStorage` (khóa `neon_survivors_v1`), kèm nút xóa dữ liệu.
- **Tùy chọn đầy đủ**: âm lượng chung/nhạc/SFX, rung màn hình, số sát thương, chất lượng hạt
(Thấp/Vừa/Cao), hiện FPS, tự tạm dừng khi mất tiêu điểm, **ngôn ngữ Việt/Anh** chuyển tức thì,
**fullscreen**, **remap phím di chuyển**.
- Bách khoa toàn thư (Codex): xem toàn bộ vũ khí/passive/quái/trùm/nhân vật + điều kiện mở khóa.
- Màn hình tổng kết: thời gian, kills, vàng, cấp độ, kỷ lục cá nhân.
- Chơi được trên **desktop lẫn mobile** (joystick ảo), responsive theo DPR; cài được như app (PWA).
### 🆕 Phase 1 — thương mại hóa
- **3 biome**: 🪦 Nghĩa Địa Neon → ❄️ Hang Băng (mở ở mốc 10 phút) → 🌋 Vực Magma (mở sau 1 thắng);
mỗi biome có bảng quái, kế hoạch trùm, palette và hệ số HP/vàng riêng.
- **Chế độ Vô tận (∞)** + **4 bậc độ khó** (I → 💀): HP/sát thương tăng, vàng thưởng tăng.
- **⚡ Thử thách hôm nay**: seed theo ngày UTC — cả thế giới chơi cùng 1 màn (nhân vật/stage cố định),
lưu kỷ lục ngày.
- **🏆 23 thành tựu** gắn tiến trình thật, popup vàng + tab riêng trong Codex.
- **💎 Đèn pha lê phá được** rơi quanh bản đồ → xu + gà.
- **📜 Lịch sử 20 ván gần nhất** + tổng hợp (tỉ lệ thắng, nhân vật chủ lực).
- **💾 Xuất/Nhập save** dạng mã base64 (chuyển máy).
- **Tutorial tương tác** lần đầu chơi + mẹo trùm.
- **Gamepad** (stick trái/D-pad/A/Start), perf: viewport culling + object pool particle.
- **🥇 Bảng xếp hạng**: scaffold Cloudflare Worker KV (`server/lb-worker.js` + `wrangler.toml`) —
điền URL vào Tuỳ chọn là tự submit/top; chữ ký checksum chống sửa tay (client↔worker khớp 100%).
## 🔓 Gợi ý mở khóa
| Nhân vật | Điều kiện |
|---|---|
| Mira | Diệt tổng cộng 500 quái |
| Bolt | Sống sót đến phút 10 |
| Luna | Kiếm tổng cộng 2.000 vàng |
| Rook | Hạ trùm đầu tiên (phút 5) |
| Nyx | Sống sót đến phút 15 |
| Sera | Thắng 1 ván |
| Vane | Diệt tổng cộng 5.000 quái |
## 🧪 Kiểm thử (dành cho dev)
```bash
node test/integrity.js
```
Bộ test headless kiểm tra tính toàn vẹn dữ liệu (tiến hóa, bảng spawn, song ngữ VN/EN, bảng stat)
**mô phỏng 2.5 phút chiến đấu thật** trong sandbox VM: bắn, chết, rớt đồ, lên cấp, mở rương
tiến hóa, não AI của cả 4 trùm, i-frame và dòng chết.
## 📁 Cấu trúc
```
index.html entry point
css/style.css theme neon tối
js/
util.js toán học, RNG, spatial grid broadphase
i18n.js từ điển VI/EN
save.js localStorage meta-progression
audio.js tổng hợp SFX + nhạc nền generative (WebAudio)
data.js TOÀN BỘ nội dung: vũ khí/passive/quái/trùm/cửa hàng
entities.js Player / Enemy / Proj / Pickup / Particle…
systems.js spawn director, AI, combat, pickups, level-up, chest
render.js vẽ canvas (nhân vật vector, hiệu ứng, vignette)
ui.js menu / HUD / modal DOM
game.js vòng lặp, trạng thái, input, camera
test/integrity.js bộ test headless
```
Chúc bạn sống sót qua phút thứ 19! ⚰️🔥