← Deepstair GDD🧭 Chương 14 · Sản xuất & QA

14 — Production Plan, Build Order, Risks, Assumptions & QA

Kế thừa 00 (bản đồ module §11, invariant), 13 (kiến trúc, kiểm thử). Bảng giữa marker tech_* sinh từ GDD/Tools/data/tech.py (ROADMAP, BUILD_ORDER, ASSET_PLAN, RISKS, ASSUMPTIONS, KPIS) — validator kiểm thứ tự phụ thuộc, tuần liên tục, đủ module M1–M15, đủ R1–R15/A1–A15. Sửa ở tech.py, không sửa tay.

12 mục 16 bảng ~25 phút đọc Nguồn: 14-Production-QA.md DERIVED công thức/mô phỏng · ASSUMED khởi điểm · BENCHMARK thị trường

1Đội ngũ & cách làm việc

1.1 Vai trò

Vai trò Ai Trách nhiệm Giờ/tuần
Owner / dev duy nhất Người Quyết định sản phẩm, duyệt contact sheet act, playtest, Unity Editor (scene, prefab), store, ngân sách ~30 h
Agent lập kế hoạch /planning-task → /planning-system (stage 04→05→06) Biến mục GDD thành TechSpec + task backlog có tiêu chí tự động
Agent thực thi /run-backlog (vòng lặp run-backlog-loop) Code, dữ liệu, act pixelfx, test; cổng code-reviewer + performance-reviewer (đường nóng) + security-auditor (save/IAP) + qa-verifier tự động, đêm + ngày
Agent UI /new-ui, /ui-mockup, /refactor-ui, ui-visual-reviewer Mockup 1080×1920 → prefab → duyệt hình tự động
Agent art pixelfx skill, thang image-generation (Pillow → agy; bf-img chỉ khi owner cho phép — 00 D8), art-style-reviewer Act, VFX, icon, nền tự động + owner duyệt
Agent QA /auto-test-device, BugHub, /fix-bug Chơi thử trên máy, ghi bug, sửa theo milestone
Âm thanh bf-sfx (Freesound CC0/CC BY) + gói nhạc bản quyền SFX ~220, nhạc 16 bài owner chọn

1.2 Nhịp tuần

  • Thứ Hai: owner duyệt bảng build order (§4), chạy /planning-task cho 3–6 task kế, /add-to-backlog.
  • Hằng ngày/đêm: run-backlog-loop --auto-model-by-tier chế độ current (cần Unity MCP cho compile-check) cho task code; chế độ worktree chỉ cho task dữ liệu/doc (13 §21). Owner duyệt contact sheet act mỗi sáng (≤ 45 phút).
  • Thứ Sáu: build thử máy Mid + Low, /auto-test-device theo charter tuần, playtest 20 phút, xem autosim đêm (tầng chết, tỉ lệ phòng thủ), cập nhật rủi ro.
  • Ngân sách giờ owner/tuần: duyệt act & art 8 h · playtest & cân bằng 8 h · Unity Editor/tích hợp 8 h · kế hoạch, store, vận hành 6 h.

2Lộ trình M0–M5 (33 tuần)

Mốc Tên Tuần Nội dung Tiêu chí thoát
M0 Pre-production / Proof W1–W3 (3 tuần) pixelfx nhánh deepstair (costume + katana + body-sheet.mjs + move-export.mjs), project setup URP 2D + PixelViewport + 3.GAMEPLAY, CombatClock + SimWorld + Rng, PixelClipPlayer, Kaito 12 đòn + 3 lộ trình, DefenseResolver + ClashDetector, CombatSandbox Kaito vs 3 hình nộm + 1 địch mẫu: 12 đòn nối qua 3 lộ trình; 0 lệch hit-frame; lỗi khung chạm phòng thủ 0 tick ở x1/x3; 10,000 roll khớp ±1.5%; cùng seed → cùng hash trận 60 s; 60 FPS máy Mid với 10 hình nộm
M1 Vertical Slice W4–W9 (6 tuần) Combat core đủ (01), Feel, Combo Engine + Style/Overdrive/Gauge, HeroBrain/EnemyBrain/Director, Floor/Wave/Run + snapshot, Echo DSL + OfferGenerator, Kaito + Aldric (bộ gốc + Hồi Âm Thông Thạo 0–5), EN01–EN06, WD01–WD02, BS01–BS02, S01–S02, LD00–LD03, ~60 Hồi Âm (≈ 40 riêng + ≈ 20 chung), HUD/EchoPick/Downed/Kết Quả, Rèn Luyện, Home tối thiểu, save bảo mật Run B1→B20 chạy trọn không lỗi; playtest 'đã mắt' ≥ 4/5 (≥ 8 người); autosim 200 run/anh hùng không crash; khôi phục snapshot đầu wave giống hệt; 0 GC/frame trong Combat
M2 Core Alpha W10–W17 (8 tuần) Kaito + Aldric đủ ~40 Hồi Âm; Vex, Brann, Lyra; EN07–EN14 + AF01–AF10; WD03–WD06, BS03–BS06; S03–S06; Cây Đèn Hồn, Sảnh Anh Hùng (cấp/sao/Thông Thạo), Di Vật, Sổ Ký Ức, Lửa Trại; ~100 Hồi Âm chung; Auto-Pick, Xuống Nhanh, Auto-Rerun; LD04–LD08; headless autosim + hồi quy 1,000 seed trong CI Chơi được tới B60; autosim hiệu chỉnh balance_sim.py (sai số tầng chết trung vị ≤ 3 tầng); test tất định & migration save xanh; 5 anh hùng trong ±15% tỉ lệ thắng Boss 50
M3 Content Beta W18–W25 (8 tuần) Rook, Mora, Sable; EN15–EN20; WD07–WD10, BS07–BS10; S07–S10; Bậc Kinh Hoàng, Vực Không Đáy, Thử Thách Ngày; kiếm tiền 09 (Shop, Triệu Hồi, Rương, gói, quảng cáo), LiveOps 10, Trang Phục, FTUE + cinematic, VI/EN, analytics + Remote Config, âm thanh, toàn bộ art Feature complete; 0 blocker/critical; hạ B100 bằng autosim với meta D45; crash-free nội bộ ≥ 99.5%; đủ ngân sách hiệu năng 3 tier
M4 Soft Launch W26–W30 (5 tuần) Tier hiệu năng & tối ưu máy Low, cân bằng theo telemetry + autosim, store assets, PAD, phát hành thử (Việt Nam, Philippines, Canada) D1 ≥ 40%, D7 ≥ 15%, D30 ≥ 5% (dự phóng từ D14), crash-free ≥ 99.5%, ANR ≤ 0.3%, ARPDAU ≥ $0.08, chọn tay D7+ ≥ 60%
M5 Global Launch W31–W33 (3 tuần) Sửa lỗi soft launch, mùa Lantern Pass 1, sự kiện đầu, banner Mora (mùa lẻ) Phát hành toàn cầu Android + iOS; KPI soft launch giữ ≥ 90% sau mở rộng

Cổng chuyển mốc (owner ký): tiêu chí thoát đạt 100%; 0 bug Blocker/Critical mở; Determinism1000 xanh (từ M2); ngân sách hiệu năng tier Mid đạt trên máy thật; KPI cảm nhận (playtest) đạt. Trượt cổng > 1 tuần → áp thang cắt (§6) thay vì kéo dài mốc.

Đường găng: pixelfx costume/vũ khí (T01) → exporter (T02) → SimWorld/PixelClipPlayer (T04) → combat core → DefenseResolver → Kaito. Mọi nội dung act phụ thuộc T01–T02; chậm ở đây chậm cả dự án → M0 dồn toàn lực vào đường này.

3Vertical slice (M1)

Trong phạm vi Ngoài phạm vi (M2+)
Kaito + Aldric: bộ gốc (~22 đòn, 10–13 lộ trình gốc, Kỹ Năng, Tuyệt Kỹ, Tuyệt Sát, đòn phòng thủ) + Hồi Âm mở ở Thông Thạo 0–5 (≈ 20/người, kèm đòn/lộ trình của chúng) Phần Hồi Âm riêng còn lại (M2), 6 anh hùng khác
EN01–EN06 (lính S01–S02) + khung affix (≥ 2 affix) EN07–EN20, AF03–AF10
WD01 Răng Sỏi (B5), WD02 Kẻ Đào Mộ Hask (B15), BS01 Gorrak (B10), BS02 Valcor (B20) WD03+, BS03+
Địa Tầng S01 Hầm Rượu Đổ Nát, S02 Hầm Mộ (art, đèn, nhạc) S03–S10
B1–B20: FloorIntro → Combat → FloorClear → EchoPick (cầu thang xoắn) → Descent, Downed/hồi sinh, Kết Quả Bậc Kinh Hoàng, Vực Không Đáy, Thử Thách Ngày
Chiếu Nghỉ LD00 (Cổng Boss), LD01, LD02, LD03 LD04–LD08
≈ 60 Hồi Âm tổng: ≈ 40 riêng (trên) + ≈ 20 chung (6 xúc tác ST01–ST06, DF01–DF04, FI01, FR01, TG01–TG03, SUST cơ bản, ECHO00) + toàn bộ 14 op handler ~80 Hồi Âm chung còn lại, RESO, PACT
Combat đủ 01: phòng thủ 5 kết quả, Thế/Tuyệt Sát, Phong Độ, Bộc Phá, Cổng FOCUS/VERDICT Thức Tỉnh của anh hùng khác
Rèn Luyện, Account, Home + RunPrep tối thiểu, save bảo mật, snapshot Cây Đèn Hồn, Di Vật, Sảnh Anh Hùng đầy đủ, kiếm tiền, LiveOps
FTUE bước 1–10 dạng thô (không cinematic) Cinematic, FTUE 11–14

Giao thức playtest slice: ≥ 8 người (đối tượng 00 §1), mỗi người xem 10 phút không chạm + 10 phút chơi; phiếu: "đã mắt" 1–5 (P1, mục tiêu ≥ 4), nhận ra Gạt/Chặn/Né không cần giải thích (≥ 80%), chọn thẻ có hiểu hệ quả (≥ 70% nói được "combo mới xuất hiện"). Ghi hình màn hình để đo khoảng trống phòng thủ.

4Thứ tự build cho /planning-task

4.1 Cách dùng

  1. Mỗi dòng là một module có thể đi riêng qua /planning-task GDD/Final/<doc> §<mục>; dòng ghi /planning-system là hệ lớn → pipeline 04→05→06 sinh nhiều task theo thứ tự topo; ×N = tách N task (ví dụ anh hùng: 4 task × ~12 đòn, đúng ghi chú 00 §11 M8).
  2. Phụ thuộc phải ở trạng thái DONE trước khi /add-to-backlog task phụ thuộc (promote cảnh báo phụ thuộc gãy).
  3. Bốn nhóm "cấm tự bịa" mà /planning-system dừng để hỏi đã có câu trả lời trong GDD: kinh tế/phần thưởng → 08 (+ CSV); save-migration → 13 §11.4; backend/IAP/bảo mật → 09 + 13 §11.2; luồng UX lõi → 11. Task chỉ dẫn mục đó trong **Context docs:**.
  4. Task chạm *DataPlayer*, *SaveData*, *Purchase*, *IAP* → tự gọi security-auditor; task chạm Sim/Pixel/Feel → performance-reviewer.
  5. Ánh xạ 00 §11: M1 pixelfx · M2 Pixel runtime · M3 Combat Core · M4 Combo · M5 AI · M6 Floor/Run · M7 Echoes · M8 Hero content · M9 Enemies · M10 Meta · M11 Kinh tế/Kiếm tiền · M12 LiveOps · M13 UI/FTUE · M14 Audio/VFX/Art · M15 Analytics/RC/Tier/Autosim.

4.2 Bảng build

Task Module 00 §11 Nội dung Nguồn Phụ thuộc Tier Mốc Lệnh
T01 M1 pixelfx deepstair: costume (phụ kiện rig, ramp phụ) + 8 vũ khí mới 02 §3–4 — L M0 /planning-task
T02 M1 pixelfx exporter body-sheet.mjs + move-export.mjs (khung khóa vào tick hit/contact) 02 §5, 13 §9.1 T01 M M0 /planning-task
T03 M2 Project setup: URP 2D, PixelViewport, layer/sorting, asmdef 3.GAMEPLAY(+Editor/Tests), Ports, sửa ProjectSettings 13 §1–4 — M M0 /planning-task
T04 M2 SimWorld + CombatClock + Rng/stream + BodyClip/MoveDef importer + PixelClipPlayer 13 §5, §9; 02 §7 T02, T03 L M0 /planning-system
T05 M3 StatSheet + DamageService + HitboxQuery2D + Posture/Poise/Reaction + StatusService (EffectRegistry ≥ 1001) 01 §3–4, §12–13 T04 L M0 /planning-system
T06 M3 DefenseResolver + ClashDetector + clip phòng thủ + bằng chứng khung chạm (CombatSandbox) 01 §5, 13 §6 T05 L M0 /planning-system
T07 M4 MoveRunner + RouteRunner + ComboDirector + parser cond (Kaito 12 đòn) 01 §6, 13 §7 T05 L M0 /planning-system
T08 M10 SecureSaveStore (mã hóa, checksum, 2 backup, migration) + module save mới 13 §11 T03 M M1 /planning-task
T09 M3 Feel: hit-stop cục bộ, slow-mo, ShakeService, TintService, AfterimagePool, DamageNumberPool 01 §14, 13 §9.3 T05 M M1 /planning-task
T10 M4 Style + Overdrive/Thức Tỉnh + khung HeroGauge + Kỹ Năng AUTO + Tuyệt Sát 01 §7–9 T07 M M1 /planning-task
T11 M5 HeroBrain + chọn mục tiêu + khoảng giao chiến 01 §10 T06, T07 M M1 /planning-task
T12 M5 EnemyBrain + CombatDirector (token, vòng vây, báo hiệu, giãn 0.25 s) 01 §11, 04 T06 L M1 /planning-system
T13 M6 Floor/Wave/Spawn + giới hạn tier + layout S01–S02 05 §1–4 T12 M M1 /planning-task
T14 M6 Run state machine + Descent + seed + snapshot + hồi sinh + ports RunSetup/RunResult 05 §5–9, §16; 13 §11.5 T13, T08 L M1 /planning-system
T15 M7 EchoDatabase + EchoDslParser + op list biên dịch + validator 06 §8, 13 §8 T07, T10 L M1 /planning-system
T16 M7 Op handlers + RunEventBus + trigger + trần (2%/s, độ sâu 2, ICD) 06 §8.2–8.6 T15 L M1 /planning-system
T17 M7 OfferGenerator + pity + Đổi/Loại/Bỏ qua + lưu trước khi hiện 06 §4–5 T15, T14 M M1 /planning-task
T18 M8 Kaito H01: bộ gốc + Hồi Âm TT 0–5 ở M1, phần còn lại M2 (4 task × ~12 đòn, rule KAI_*) Heroes/H01 T16, T01 L M1 /planning-task ×4
T19 M8 Aldric H02: như Kaito (4 task) Heroes/H02 T18 L M1 /planning-task ×4
T20 M9 EN01–EN06 + khung affix + đạn PJ 04 §2–3 T12 L M1 /planning-task
T21 M9 WD01–WD02 + BS01–BS02 (1 task/trùm) 04 §4–5 T20, T10 L M1 /planning-task ×4
T22 M10 Account + Rèn Luyện + kỷ lục độ sâu + hàng đợi FeatureUnlock 07 §2–3, 00 §8 T08 M M1 /planning-task
T23 M13 UI trong run: RunHud, EchoPick, BuildView, Downed, RunResults, Pause 11 §4 T14, T17 L M1 /new-ui
T24 M13 Home + RunPrep tối thiểu 11 §3 T22 M M1 /new-ui
T25 M6 Chiếu Nghỉ LD00–LD03 (M1), LD04–LD08 (M2) 05 §6 T14, T17 M M1 /planning-task
T26 M15 Headless autosim CLI + xuất CSV + hiệu chỉnh balance_sim 13 §17 T14, T17 M M2 /planning-task
T27 M15 Hồi quy tất định 1,000 seed + golden + CI batchmode 13 §5.7, §18 T26 M M2 /planning-task
T28 M7 Auto-Pick + Tiêu Điểm Build (preset) 06 §6 T17 S M2 /planning-task
T29 M8 Vex H03, Brann H04, Lyra H05 (4 task/anh hùng) Heroes/H03–H05 T19 L M2 /planning-task ×12
T30 M9 EN07–EN14 + AF01–AF10; WD03–WD06, BS03–BS06 04 T21 L M2 /planning-task ×9
T31 M10 Sảnh Anh Hùng: cấp/sao/Thông Thạo/thưởng sở hữu 03 §5, 07 T22 L M2 /planning-system
T32 M10 Cây Đèn Hồn 07 §4 T22 M M2 /planning-task
T33 M10 Di Vật + nâng cấp + bộ 07 §5 T22 L M2 /planning-system
T34 M10 Sổ Ký Ức + Lửa Trại 07 §7–8 T22 M M2 /planning-task
T35 M6 Xuống Nhanh + Auto-Rerun + tốc độ x1.5/x2/x3 05 §11, 01 §15 T14, T28 M M2 /planning-task
T36 M8 Rook H06, Mora H07, Sable H08 (4 task/anh hùng) Heroes/H06–H08 T29 L M3 /planning-task ×12
T37 M9 EN15–EN20; WD07–WD10, BS07–BS10 (BS09 Bóng Gương sao chép anh hùng) 04 T30 L M3 /planning-task ×9
T38 M6 Bậc Kinh Hoàng DR01–DR20 + Vực Không Đáy + Thử Thách Ngày 05 §12–15 T35 M M3 /planning-task
T39 M11 Shop + Triệu Hồi (pity, công khai tỉ lệ) + Rương Di Vật 09 §4 T31, T33 L M3 /planning-system
T40 M11 IAP: gói/Thẻ Tháng/Quỹ/Heo Đất/Gỡ QC + quảng cáo thưởng/xen kẽ 09 §2–3 T39 L M3 /new-package
T41 M12 LiveOps: nhiệm vụ, đăng nhập, Lantern Pass, sự kiện, push 10 T22 L M3 /planning-system
T42 M10 Trang Phục (Wardrobe) + body sheet skin 07 §6, 02 §3.4 T31, T01 M M3 /planning-task
T43 M13 UI meta còn lại (HeroHall, Tree, Relics, Codex, Campfire, Summon…) 11 T31, T32, T33, T34 L M3 /new-ui ×10
T44 M13 FTUE 14 bước + FirstLaunchCinematic + BossIntro 00 §7.1, 11 T43, T21 L M3 /planning-task
T45 M14 Âm thanh: nhạc lớp theo Phong Độ/Dòng Chảy, bank SFX, pitch chuỗi Gạt 12 T23 M M3 /planning-task
T46 M14 Art Địa Tầng S01–S10 (tileset, parallax, đèn) + icon 12 T13 L M3 /planning-task ×10
T47 M15 Analytics + Remote Config + PerfTierService + gói tier 13 §14–16 T23, T40 M M3 /planning-task

4.3 Làn song song (1 dev + vòng lặp agent)

Làn Task Chế độ chạy Ghi chú
A — Lõi sim T03–T07, T09–T17, T25–T28, T35, T38 current + Unity MCP Tuần tự, cần compile-check; mọi task đổi logic sim cập nhật golden
B — Nội dung act/dữ liệu/art T01–T02, T18–T21, T29–T30, T36–T37, T45–T46 worktree cho dữ liệu thuần, current khi có rule C# Duyệt contact sheet mỗi sáng
C — Meta/UI/kiếm tiền T08, T22–T24, T31–T34, T39–T44, T47 current (**Requires:** unity-editor) UI qua mockup tự duyệt, owner chỉ xem bảng review; T08/T39/T40 có security-auditor

5Kế hoạch sản xuất asset

Hạng mục Số lượng Cách sản xuất Mốc
Act anh hùng (MoveDef pixelfx) 869 Agent viết act pixelfx → contact sheet → duyệt M0–M3
Biến thể trang phục (re-export body sheet) 20 Costume preset pixelfx, không act mới M3
Act địch thường (20 loại × ~10) 200 pixelfx act (rig địch) M1–M3
Act Thủ Vệ (10 × ~16) 160 pixelfx act M1–M3
Act Boss (10 × ~24, gồm pha + Tuyệt Sát bị nhận) 240 pixelfx act M1–M3
VFX pixelfx dùng lại (recolor) 120 Thư viện 244 hiệu ứng sẵn M0–M3
VFX mới (parry, va kiếm, chữ ký 8 anh hùng, nguyên tố) 60 pixelfx skill 'new effect' M1–M3
Icon Hồi Âm chung (64×64 tĩnh) 100 Pillow → agy (thang image-generation) M1–M2
Icon Hồi Âm riêng (ảnh động 8 khung từ act) 195 Tự động card-icon.mjs từ act M1–M3
Icon Di Vật (24 mẫu) + khung 6 độ hiếm 30 Pillow + agy M2
Chân dung anh hùng (portrait + full) + skin 36 pixelfx render tư thế + Pillow viền M2–M3
Tileset + parallax 10 Địa Tầng 40 Pillow + pixelfx prop M1–M3
Nhạc (10 Địa Tầng + Home + 3 Boss + Kết Quả + Pass) 16 Gói nhạc bản quyền M2–M3
SFX 220 Freesound CC0/CC BY qua bf-sfx + xử lý M1–M3
Tổng act pixelfx 1,469 anh hùng: 21/8 anh hùng từ dữ liệu, còn lại ước tính

5.1 Năng suất & cổng duyệt act

  • Mỗi task act: ≤ 12 act cùng anh hùng/địch → agent viết act pixelfx (act.mjs), render contact sheet + GIF 1×/4× (montage.mjs), tự kiểm (check.mjs), ActSyncValidator (hit tick khớp CSV, guard key INV-16, ô khung ≤ trần) → owner duyệt sheet (5 phút/act) → body-sheet.mjs export.
  • Năng suất giả định A1: 30 phút agent + 5 phút người mỗi act → tổng act ở bảng trên (≈ 1,170) ≈ 585 h agent + ≈ 100 h người trải trên M0–M3 (25 tuần ≈ 4 h người/tuần). Act anh hùng đếm cả đòn phòng thủ + loco (≈ 70/anh hùng theo dữ liệu Heroes).
  • Tiêu chí duyệt act: đọc được ở 1× trên khung 270 px; lấy đà ↔ báo hiệu khớp loại đòn (01 §11.3); khung va có tư thế "ăn" (impact pose) đúng tick; đầu/cuối ở guard key; vũ khí không đổi hình (INV-04); silhouette khác mọi địch.
  • Tái dùng: một đòn xuất hiện trong nhiều lộ trình (01 §6.1); địch cùng họ dùng chung rig + biến thể phụ kiện; phản ứng trúng đòn (flinch/stagger/knockdown/launch…) dùng chung theo rig.

5.2 Chuỗi bản địa hóa (VI + EN lúc ra mắt)

Nhóm chuỗi Số key × 2 ngôn ngữ
Tên + mô tả đòn (anh hùng) 1,738 3,476
Tên + mô tả lộ trình 772 1,544
Hồi Âm riêng (tên, dòng ngắn, mô tả) 945 1,890
Hồi Âm chung (tên, dòng ngắn, mô tả) 300 600
Anh hùng (tên, danh hiệu, lore, phong cách, Cổng, đặc tính ×3) 80 160
Địch/Thủ Vệ/Boss (tên, mô tả, đòn có tên) 160 320
Địa Tầng, Chiếu Nghỉ, Bậc Kinh Hoàng 96 192
Meta (Rèn Luyện, Cây Đèn Hồn 40 nút, Di Vật, Trang Phục, Sổ Ký Ức) 234 468
UI chung + FTUE + toast + lỗi 900 1,800
Kiếm tiền + LiveOps (gói, nhiệm vụ, Pass, sự kiện, push) 450 900
Store listing + chính sách + tỉ lệ gacha 60 120
Tổng 5,735 11,470

Nguồn chuỗi nội dung là name_vi/en, short_vi/en, desc_vi trong data/*.py → Localization.csv (key #echo_<id>_short…). Mô tả EN của Hồi Âm/đòn dịch bằng agent theo bảng thuật ngữ 00 §10, owner duyệt mẫu 10%; loc_lint.py kiểm dòng ngắn ≤ 40 ký tự, không id/thuật ngữ nội bộ (06 §13). Font: Tiny5 + font pixel có dấu tiếng Việt (11 §3).

5.3 Âm thanh

SFX lấy từ Freesound qua bf-sfx (CC0 ưu tiên; CC BY ghi công ở màn Credits), xử lý cắt/chuẩn hóa −14 LUFS; nhạc: 1 gói bản quyền dark-fantasy (≤ $600, A13) tách stem để xếp lớp theo Phong Độ/Dòng Chảy (01 §5.6, §7). Mọi file lưu giấy phép ở Design/Licenses/.

5.9 Dây chuyền anh hùng sau ra mắt (H09–H21, 1 anh hùng / mùa 28 ngày)

Tuần (trước ngày mùa mở) Việc Đầu ra Cổng
−8 → −7 Chốt chương Heroes/H<nn>-*.md + hero_*.py (đã có trong GDD), rà §15 "Khác biệt với roster" Validator sạch, DPS band đạt build_tables.py
−7 → −4 Costume + vũ khí pixelfx (02 §4), ~45 act chiến đấu + 5 phòng thủ + 10 di chuyển, VFX chữ ký .pxbody / .pxmove, contact sheet ds-check.mjs, art-style-reviewer
−4 → −3 Quy tắc <CODE>_* + hook mới (nếu có) trong 3.GAMEPLAY.Sim; autosim 200 run B1–B50 Tỉ lệ thắng Boss B50 ±15% trung vị roster 03 §10
−3 → −2 40 icon Hồi Âm (8 khung động), âm thanh (~20 sfx + 3 tiếng hô + 2 sfx Cổng), 2 trang phục Asset vào Addressables nhóm hero_<code> DoD §10
−2 → 0 Banner Nổi Bật/Tiêu Điểm, Pass mùa, sự kiện Tiêu Điểm, localisation (~250 chuỗi/anh hùng) Remote-config bật theo ngày mùa QA hồi quy

Năng lực: 1 anh hùng ≈ 6 tuần-người (act chiếm ~55%); để giữ nhịp 28 ngày cần chồng 2 anh hùng cùng lúc ở hai pha khác nhau. Thứ tự ra mắt khóa ở 03 §9 (H09 S2 → H21 S14); anh hùng chưa kịp → hoãn sang mùa sau, mùa đó chạy tái xuất (09 §4.6), không ra mắt nửa vời.

6Thang cắt giảm

Không bao giờ cắt: cấu trúc 100 tầng xuống với nhịp 10 tầng (INV-12: Boss x0, Thủ Vệ x5, Chiếu Nghỉ x3/x7, Cổng Boss x9) và đủ 10 Boss/10 Thủ Vệ; hệ phòng thủ (Gạt/Gạt Hoàn Hảo/Chặn/Né/Phản Đòn/Va Kiếm, Thế → Tuyệt Sát); lượt chọn 1-trong-3 mỗi tầng; tất định + snapshot; FTUE.

Bước Cắt Tiết kiệm Ảnh hưởng tài liệu
1 Thức Tỉnh (ART) chỉ đổi ngoại hình bằng aura/ramp, không clip riêng ~16 act, 1 tuần 06 §2, Heroes §8
2 Hồi Âm riêng 40 → 34/anh hùng (giữ đúng 4 EVO, ≥ 1 ART; bỏ COMBO trùng vai trò) ~50 act, 1.5 tuần Heroes, 03 §2 (vẫn trong dải 34–46)
3 Boss BS03–BS08: 3 pha → 2 pha ~60 act, 1.5 tuần 04
4 Địch 20 → 16 loại (4 loại thành biến thể recolor + đổi đòn của rig sẵn) ~40 act, 1 tuần 04
5 Sable (H08) dời v1.1 — banner mùa chẵn lùi 1 mùa; Mora giữ vai L nổi bật ~55 act + 40 thẻ, 2 tuần 00 §6.1, 03 §6, 09 §4
6 Chiếu Nghỉ 8 → 6 (bỏ LD06 Hồn Đồng Đội — tiết kiệm 8 MB RAM, LD08 Giếng Con Bạc) 1 tuần 05 §6
7 Bậc Kinh Hoàng 20 → 10 khi ra mắt; Trang Phục 20 → 8; Thử Thách Ngày dời v1.1 1.5 tuần 05, 07, 10

Mỗi bước cắt là một task /planning-task riêng sửa data/*.py + chương liên quan; build lại bảng, autosim xác nhận không vỡ nhịp tiến trình.

7Phụ thuộc bên ngoài

Phụ thuộc Cần trước Trạng thái / ghi chú
Submodule Tools/pixelfx nhánh deepstair (upstream có LICENSE + NOTICE) M0 tuần 1 Đã add submodule; giữ ghi công theo NOTICE
Node.js LTS + canvas cho pixelfx M0 Máy dev
Máy test Android Low/Mid/High, iPhone 11, iPad 9 M0 (Mid, Low) / M3 (iOS) Mua/mượn; cấp quyền BugHub TesterAccess
Firebase project (Analytics, Crashlytics, RC, FCM) + google-services.json/plist M3 Template đã tích hợp SDK (BLACKFACE_FIREBASE)
LevelPlay app key + ad unit (qua bf-ads) M3 irs_setup_app dry-run trước
Google Play Console + App Store Connect, SKU IAP theo IapCatalog.csv M3 Bundle id com.blackface.deepstair (sửa 13 §1.2)
Apple Developer + Mac runner (build iOS, /build) M3 Runner đã có cho Android/AutoBuild
Khóa ký Android (AndroidSigningFromEnv) M3 Lưu secret ngoài repo
BugHub Worker (bug-hub.blackface.workers.dev) M1 Đã có endpoint trong project-profile
Supabase + Cloudflare Worker v1.1 (bảng xếp hạng) Không chặn ra mắt (INV-09)
Gói nhạc bản quyền, tài khoản Freesound M2 A13
Trang chính sách quyền riêng tư + trang tỉ lệ gacha M4 Bắt buộc store/luật
Bảng câu hỏi IARC / App Store age rating M4 Khai "random items"

8Rủi ro

# Rủi ro Xác suất Ảnh hưởng Giảm thiểu
R1 Act pixel không 'đã mắt' ở 1× (biên đạo đọc kém trên 270 px) TB Rất cao M0 chứng minh bằng Kaito 12 đòn trước mọi thứ; cổng contact sheet + playtest 5 giây/đòn; act chữ ký làm tay kỹ
R2 Mở rộng costume/vũ khí pixelfx phức tạp (8 vũ khí, phụ kiện rig, ramp phụ, xích/giáo dài vượt ô) Cao Cao Làm trên nhánh deepstair của submodule; vũ khí = mesh/polyline dữ liệu; xích dùng sim verlet sẵn của pixelfx; spike 1 tuần ở M0, fallback: xích/giáo vẽ bằng nét 2D trong exporter
R3 Năng suất viết ≈ 570 act anh hùng (400+ đòn chiến đấu) + ≈ 600 act địch/Boss Cao Cao Thư viện tư thế + act dùng lại giữa lộ trình (một đòn trong nhiều lộ trình); agent batch 12 act/task; địch dùng chung rig theo họ; cut ladder bước 2–3
R4 Lỗi tất định (khôi phục wave lệch, thứ tự RNG, float khác máy) TB Cao Luật §5.6; tick nguyên; RNG theo luồng/wave; golden 1,000 seed trong CI; hash từng giây khi debug
R5 10 địch trên khung 270 px khó đọc TB Cao Lệch dọc 0–6 px, viền ink, màu địch khác anh hùng (INV-04), tier Low 6 địch, nhịp chồng đòn ≥ 0.25 s, đo bằng ảnh thumbnail 128 px (P5)
R6 Tần suất phòng thủ sai cảm giác (ít → vô hình, nhiều → đơn điệu) TB Cao Telemetry defense_stats (khoảng trống tối đa giữa 2 sự kiện phòng thủ); mục tiêu 1 sự kiện/3–6 s; chỉnh token + lấy đà qua CSV/RC
R7 ~420 Hồi Âm tương tác lỗi (DSL, trigger lồng) Cao TB Handler theo op, độ sâu trigger 2, test parse toàn bộ, autosim fuzz 'nhặt ngẫu nhiên' 10,000 run
R8 Đạo Diễn Combo lặp, một lộ trình chiếm sóng TB TB Hệ số novelty, QA 03 §10 (≤ 25% số lần chọn), route_usage telemetry
R9 Hiệu năng máy Low (URP 2D, uGUI HUD, x3) TB Cao Render 270×H, đèn 2D tắt ở Low, HUD tách canvas, trần bước sim, profile từ M0 trên máy Low thật
R10 Kinh tế/tiến trình lệch nhịp mốc 00 §7.2 Cao TB Mọi số ở CSV + RC; autosim hiệu chỉnh balance_sim; telemetry tầng chết theo ngày
R11 Save hỏng / migration sai làm mất tiến trình Thấp Rất cao File đơn nguyên tử + 2 backup + checksum + test migration mỗi bản; flush ngay sau giao dịch giá trị
R12 Phụ thuộc 1 developer Cao Cao Backlog tự động, GDD đầy đủ, task nhỏ có tiêu chí, CI headless
R13 Chính sách store/luật loot box (Triệu Hồi, Rương) Thấp Cao Công khai tỉ lệ + pity, không bán Hồi Âm (INV-08), chặn mua với tuổi < 13 theo store, UMP/ATT
R14 PAD fast-follow chưa tải xong khi người chơi tới S03 Thấp TB S01–S02 install-time; chặn ở cầu thang với tiến độ tải + offline toast; S03 tới sớm nhất ~D1
R15 Idle quá thụ động → chán sau D7 TB Cao Lượt chọn mỗi tầng, Chiếu Nghỉ, Bộc Phá thủ công, Thử Thách Ngày, Bậc Kinh Hoàng, xem Build có số liệu

Theo dõi: mỗi thứ Sáu chấm lại xác suất; rủi ro "Cao/Cao" chưa có kết quả spike trong 2 tuần → owner quyết định cắt theo §6. Rủi ro kỹ thuật chi tiết: 13 §21.

9Giả định

# Tham số Giá trị Lý do Kiểm chứng bởi
A1 Năng suất act 1 act ≈ 25 phút agent + 5 phút duyệt người Ước tính từ pixelfx 12 move sẵn Đo ở M0 (12 act Kaito)
A2 Số act/anh hùng 44–56 đòn chiến đấu; ≈ 70 clip gồm phòng thủ + loco 03 §2 Dữ liệu hero_*.py
A3 Máy Mid tham chiếu Helio G99 / 4–6 GB giữ 60 FPS với 8 địch + 45 đạn Render 270×H rẻ Profile M0
A4 Tần suất phòng thủ hiển thị 1 sự kiện Gạt/Chặn/Né/Va Kiếm mỗi 3–6 s trong Combat P1, P4 Playtest M1 + defense_stats
A5 Thời gian tầng 30–75 s ở x1 constants FLOOR_TIME_TARGET Autosim M2
A6 Tốc độ ≥ 70% thời gian chơi từ D2 ở x2+ Mở x2 ở kỷ lục B10 Telemetry avg_speed
A7 Số Hồi Âm ≈ 8 × 40 riêng + ≈ 100 chung 00 §6 Dữ liệu 06 + Heroes
A8 Độ đọc địch Lính ≥ 16 px cao, ≤ 10 địch sống P5, 01 §11.4 Ảnh thumbnail 128 px + playtest
A9 Dung lượng Base AAB ≤ 150 MB, tổng ≤ 330 MB §16 Addressables Build M3
A10 Chi phí analytics BigQuery export < $50/tháng ở 5k DAU nhờ lấy mẫu 10% Firebase free + sample Hóa đơn tháng đầu soft launch
A11 Thị trường soft launch Việt Nam, Philippines, Canada VI + EN, CPI thấp + 1 thị trường Tier-1 đo ARPDAU Owner chốt M4
A12 Ngân sách ảnh $0 (pixelfx + Pillow + agy); bf-img chỉ khi owner cho phép 00 D8 —
A13 Ngân sách âm thanh Nhạc gói bản quyền ≤ $600 một lần; SFX CC0/CC BY $0 Không có sound designer Owner duyệt M2
A14 Run/ngày F2P 4–6 run (Auto-Rerun dừng sau 5 run không chạm) Benchmark idle Telemetry runs/DAU
A15 Thời gian dự án 33 tuần (M0–M5) Năng suất agent + 1 dev Hiệu chỉnh sau M1

10Kế hoạch QA

10.1 Theo khu vực

Khu vực Checklist nguồn Tự động Thủ công / thiết bị Cổng
Chiến đấu & phòng thủ 01 §19 DamageServiceTests, DefenseRollDistributionTests, DefenseTimingTests, CombatSandbox Overlay timeline phòng thủ, quay chậm 0.25× kiểm khung chạm; ép kết quả bằng cheat M0, mỗi bản
Pixel & act 02 QA, 13 §9.1 ActSyncValidator, ô khung, guard key Duyệt contact sheet 1×/4×, thumbnail 128 px (P5) Mỗi task act
Anh hùng 03 §10, Heroes §14 Validator hero_*.py, autosim 200 run/anh hùng, DPS factor ±10% Playtest 5 giây nhận phong cách (P2) M1/M2/M3
Địch/Thủ Vệ/Boss 04 QA Autosim tỉ lệ thắng Boss theo meta; báo hiệu tối thiểu theo loại đòn Đọc được 10 địch trên 270 px (R5), mù màu đỏ/đỏ thẫm M1–M3
Run/Descent/Snapshot 05 QA, 13 §11.5 RestoreEquivalence, SnapshotRoundTrip, kill app giả lập Kill app ở mọi state 00 §5.2 (G1, G2) trên máy thật M1, mỗi bản
Hồi Âm 06 §13 EchoDslParseAllTests, OfferDeterminismTests, autosim fuzz random 10,000 run Đọc dòng ngắn ≤ 40 ký tự, chip tag, "Thay:" M1–M3
Meta & kinh tế 07, 08 QA Giá CSV khớp công thức, balance_sim vs autosim Mốc 00 §7.2 theo tài khoản test D1/D3/D7 (dịch giờ TimeManager) M2–M4
Kiếm tiền & IAP 09 QA Test mode Purchasing, grant idempotent, khôi phục giao dịch Mua thật sandbox Android/iOS, hoàn tiền, mất mạng giữa mua (G4/G5) M3–M4
LiveOps 10 QA Reset ngày/tuần qua TimeManager, RC mặc định Nhiệm vụ/Pass/sự kiện qua đổi giờ M3
UI/UX & FTUE 11 QA, .claude/docs/new-ui-guide.md §5 ui-visual-reviewer, autouitester (bấm mọi nút) 4 tỉ lệ màn (13 §18), safe area, INV-07 (45% dưới), một tay M1–M3
Hiệu năng 13 §16 GcAllocTests, ProfilerMarker trong build dev 30 phút x3 trên máy Low: FPS, nhiệt, RAM ≤ trần M0, M2, M4
Tất định & save 13 §5.7, §11 Determinism1000, SaveMigrationTests, SaveRecoveryTests Làm hỏng save bằng cheat → phục hồi M2, mỗi bản
Bản địa hóa 06 §13, 11 §3 loc_lint.py, thiếu key, tràn chữ (QA probe audit) VI/EN toàn màn hình, dấu tiếng Việt font pixel M3
Tuân thủ 09 §compliance — UMP/ATT, trang tỉ lệ, không IAP trong run (INV-08), không xen kẽ trong trận (INV-10) M4

10.2 Mức độ bug & SLA

Mức Định nghĩa SLA
Blocker Crash, mất save/tiền, kẹt run, vi phạm INV-05/08/10/11 Sửa trước mọi task khác; chặn build
Critical Sai kết quả kinh tế, lệch tất định, phòng thủ hiện sai khung, IAP không grant Trong 48 h
Major Tính năng sai nhưng có đường vòng, rớt FPS dưới ngân sách Trong mốc hiện tại
Minor Hình/chữ/âm nhỏ Gom theo đợt

Bug từ tester/QA agent vào BugHub → /fix-bug (≥ 4 bug → mỗi bug thành task backlog); issue giữ mở tới khi QA xác nhận.

10.3 Definition of Done

Mỗi task: compile sạch (/compile-check, rule compile-validation); preflight + cổng review đạt (≤ 2 vòng sửa); mọi tiêu chí trong task spec đạt; test mới/cũ liên quan xanh; 0 GC trong Combat với code sim/pixel/feel/HUD; chuỗi hiển thị đã localize VI/EN; analytics đúng tên AnalyticsEvents.g.cs (nếu có); cheat để test (feature có trạng thái — skill feature-cheat); số liệu lấy từ CSV/constants.py, không hằng số ma thuật; SimVersion/golden cập nhật nếu đổi logic sim.

Mỗi mốc: tiêu chí thoát §2; regression EditMode + PlayMode + autosim smoke + Determinism1000 xanh; build IL2CPP chạy trên máy Low + Mid; danh sách rủi ro cập nhật.

Phát hành: crash-free nội bộ ≥ 99.5% (≥ 200 phiên test); ANR 0 trong 30 phút x3; save phục hồi qua cập nhật từ bản trước (migration test); store listing + tỉ lệ gacha + chính sách đầy đủ.

11KPI

KPI Mục tiêu Nguồn Khi đo
D1 / D7 / D30 retention ≥ 40% / ≥ 15% / ≥ 5% Firebase cohort Soft launch
Phiên TB / phiên mỗi ngày ≥ 12 phút / ≥ 4 session_start, user_engagement Soft launch
Run / DAU ≥ 3 run_start Soft launch
Tỉ lệ chọn Hồi Âm tay (D7+) ≥ 60% (P4) echo_pick.auto Mỗi bản
Lộ trình Hồi Âm ở tầng 30 ≥ 60% số lần chạy (P3) route_usage.echo_route_pct Mỗi bản
Khoảng trống phòng thủ tối đa / tầng (trung vị) ≤ 8 s defense_stats.defense_gap_s_max Mỗi bản
Sự kiện phòng thủ / phút Combat 8–20 defense_stats Mỗi bản
Gạt thực vs Gạt hiển thị |Δ| ≤ 1.5 điểm % defense_stats.exp/real_deflect_pct Mỗi bản
Run có Dòng Chảy (D3+) ≥ 50% defense_stats.flow_states Soft launch
Thắng BS01 ở run 1 ≥ 70% (sim ≥ 15/20) boss_attempt Mỗi bản
Payer conversion D30 3–4% iap_purchase Soft launch
ARPDAU $0.10–0.15 (soft launch ≥ $0.08) iap_purchase + ad_impression Soft launch
Rewarded impressions / DAU 5–7 ads_reward Soft launch
Crash-free sessions / ANR ≥ 99.5% / ≤ 0.3% Crashlytics, Play vitals Mọi bản
Save phục hồi từ backup ≤ 0.05% phiên save_recovered Mọi bản
Tier Low tự hạ ≤ 15% thiết bị perf_tier Soft launch

Bảng điều khiển (BigQuery export Firebase): funnel FTUE (tutorial_step), phễu tầng (floor_clear theo ngày cài), tỉ lệ thắng Boss theo anh hùng/meta (boss_attempt), sức khỏe phòng thủ (defense_stats: tần suất, khoảng trống tối đa, Gạt thực vs hiển thị), đa dạng lộ trình (route_usage), lựa chọn Hồi Âm (echo_pick: tỉ lệ chọn/thắng theo thẻ), kinh tế (earn_resource/spend_resource), doanh thu (iap_purchase, ad_impression), kỹ thuật (perf_tier, save_recovered, Crashlytics). Ngưỡng cảnh báo: KPI kỹ thuật lệch mục tiêu 2 ngày liên tiếp → task sửa ưu tiên.

12Go / No-go

Mốc Điều kiện
Soft launch (cuối M4) Mọi KPI kỹ thuật đạt (crash-free, ANR, save, tier Low ≤ 15%); D1 cohort nội bộ/closed test ≥ 40%; chọn tay D7+ ≥ 60%; không bug Blocker/Critical; store + tuân thủ xong
Global (cuối M5) KPI soft launch giữ ≥ 90% qua 2 cohort tuần; ARPDAU ≥ $0.08; Lantern Pass mùa 1 + sự kiện đầu sẵn sàng; autosim xác nhận nhịp mốc 00 §7.2 (±3 ngày)