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)
This commit is contained in:
neon-survivors-dev
2026-08-23 07:01:22 +00:00
commit 796880375e
26 changed files with 7447 additions and 0 deletions
+114
View File
@@ -0,0 +1,114 @@
# 🌃 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! ⚰️🔥