🔔 Bladewake GDD
Trang chủ › Hệ thống › Đạo diễn bầy & trận
⚙️ Hệ thống

Đạo diễn bầy & trận

Doc 15 trình bày kèm ngân sách đe doạ, mẫu spawn và kịch bản sóng từ data.

Cập nhật: 2026-11-07

1Tổng quan

13
mục tiêu
14
mẫu spawn
52
kịch bản sóng
6
hồ sơ biome
250
quái sống tối đa

Mục đích: đạo diễn bầy cho mọi biome + Kết + Bí mật: mô hình ngân sách đe doạ (điểm theo hạng/vai, ngân sách theo Hồi/phút/Khăn Tang), mẫu spawn, luật công bằng, trần mật độ & hiệu năng (LOD/hạ cấp), bể token, chèn Tinh Anh, luật mini-boss/boss, 10 loại mục tiêu trận, định dạng kịch bản sóng + 10 ví dụ Hồi I, hook dịch thành phần composition_bias.<axis>. Phụ thuộc: 00-Design-Bible.md §1 (INV-02/03/08/13/14/15/17/18), §2 (nút, mục tiêu), §4 (MRN02/05/10/14/15, mode), §7 (biome, roster, Ấn EM01–EM16, mini, boss), §8.2–8.3 (MESO), §10.4 (hiệu năng) + data/_bible.json; 10-Combat-Core.md §2.2/§2.4/§6.5/§10; 14-Adaptive-AI.md §2.3 (archetype), §3 (vòng vây), §4 (token), §8.2 (MESO dịch spawn); 16-Run-Structure-Map.md (nút, thời lượng, thưởng); GDD demo GDD/05-Horde-Director.md, GDD/Data/Waves.csv (lịch sử). Được dùng bởi: doc kẻ địch/biome/Tinh Anh/mini/boss, doc Khăn Tang/mutator/mode, doc level/arena (đạo cụ mục tiêu, điểm phục kích), doc UI/HUD (bộ đếm mục tiêu, mũi tên báo), doc âm thanh (cường độ nhạc), code Director/SpawnPlanner/EncounterRunner/AttackTokens/AshMemory/PerfGovernor, tool wave_lint.

2Phạm vi & thứ bậc

  • Doc này định nghĩa cách quái vào sân và trận thắng/thua thế nào. Kit từng quái (đòn, windup, HP) ở doc kẻ địch; AI cá thể + token + Tro Nhớ ở 14; khung run/bản đồ ở 16.
  • Mâu thuẫn số với Bible → Bible thắng; với 14 về token/MESO → 14 thắng; về ngân sách/mục tiêu/kịch bản → doc này thắng.
  • Mọi số [ASSUMED] chỉnh qua director.csv / wave_scripts.csv (key = tên field ở doc này), không cần DEC nếu không chạm INV.
  • Thuật ngữ: điểm đe doạ (TP) = chi phí 1 quái trong ngân sách · TOF = tổng TP quái đang sống · B_obj = TOF mục tiêu của phòng · BPS = TP nạp vào ví mỗi giây · beat = sự kiện spawn kịch bản (vòng vây, phục kích…) · Y/P/N = tell vàng/tím/vùng đọng (INV-02) · hạng S/M/L/XL = thường/Tinh Anh/mini/boss.

3Tổng quan Director

mỗi 0.25 s (World clock; draft ×0.15 làm chậm cả Director):
  1. EncounterRunner.Tick(): cập nhật mục tiêu, trigger kịch bản (§11) → beats, ELITE/MINI/BOSS, OBJ, HAZ
  2. Budget: wallet += BPS(t)·0.25 ; wallet ≤ 0.5·B_obj
  3. target = B_obj · phase(t/t_target) · density_mult        (§2.4–2.5)
  4. while wallet ≥ cost(g) ∧ TOF + cost(g) ≤ target ∧ alive + |g| ≤ cap_count:
        g = SpawnPlanner.Pick(MIX ⊕ composition_bias, role caps)   (§2.2, §12)
        SpawnPlanner.Place(g, pattern mặc định của vai)             (§3, §4)
        wallet −= cost(g)
  5. PerfGovernor.Tick() (§5.3) · AttackTokens.Tick() (`14` §4)
  • Hai lớp spawn: lớp ngân sách (dòng liên tục theo trọng số MIX, giữ mật độ) + lớp kịch bản (beat có ngày giờ, tạo khoảnh khắc). Beat trừ ví; ví thiếu → ví âm (nợ ≤ −0.3·B_obj), lớp ngân sách dừng tới khi ví ≥ 0 → tổng mật độ không vượt đích.
  • Quái hạng M/L/XL không mua bằng ví: chèn bằng hàng ELITE/MINI/BOSS và giữ chỗ TP của chúng trong TOF (§2.1) → bầy thưa đi khi Tinh Anh có mặt (dễ đọc).

4Mô hình ngân sách đe doạ

📊 Đường cong ngân sách đe doạ theo Hồi

Tốc nạp ngân sách BPS(t) theo phút trong HồiTốc nạp ngân sách BPS(t) theo phút trong HồiHồi IHồi IIHồi IIIHồi IVKếtBí mật (B6)0246802468phút từ đầu HồiTP/sHồi IHồi I · 0: 3.4Hồi I · 1: 3.54Hồi I · 2: 3.67Hồi I · 3: 3.81Hồi I · 4: 3.94Hồi I · 5: 4.08Hồi I · 6: 4.22Hồi I · 7: 4.22Hồi I · 8: 4.22Hồi IIHồi II · 0: 3.8Hồi II · 1: 3.95Hồi II · 2: 4.1Hồi II · 3: 4.26Hồi II · 4: 4.41Hồi II · 5: 4.56Hồi II · 6: 4.71Hồi II · 7: 4.71Hồi II · 8: 4.71Hồi IIIHồi III · 0: 4.2Hồi III · 1: 4.37Hồi III · 2: 4.54Hồi III · 3: 4.7Hồi III · 4: 4.87Hồi III · 5: 5.04Hồi III · 6: 5.21Hồi III · 7: 5.21Hồi III · 8: 5.21Hồi IVHồi IV · 0: 4.5Hồi IV · 1: 4.68Hồi IV · 2: 4.86Hồi IV · 3: 5.04Hồi IV · 4: 5.22Hồi IV · 5: 5.4Hồi IV · 6: 5.58Hồi IV · 7: 5.58Hồi IV · 8: 5.58KếtKết · 0: 5Kết · 1: 5.2Kết · 2: 5.4Kết · 3: 5.6Kết · 4: 5.8Kết · 5: 6Kết · 6: 6.2Kết · 7: 6.2Kết · 8: 6.2Bí mật (B6)Bí mật (B6) · 0: 4.4Bí mật (B6) · 1: 4.58Bí mật (B6) · 2: 4.75Bí mật (B6) · 3: 4.93Bí mật (B6) · 4: 5.1Bí mật (B6) · 5: 5.28Bí mật (B6) · 6: 5.46Bí mật (B6) · 7: 5.46Bí mật (B6) · 8: 5.46
BPS(t) = BPS_act × (1 + 0.04 × min(phút, 6)) — tuning.director.bps / minute_ramp.
Ngân sách đe doạ mục tiêu trong phòng (B_room × pha STD)Ngân sách đe doạ mục tiêu trong phòng (B_room × pha STD)Hồi IHồi IIHồi IIIHồi IVKếtBí mật (B6)05010015020000.20.40.60.81t / t_targetTPHồi IHồi I · 0: 71.5Hồi I · 0.1: 71.5Hồi I · 0.4: 110.5Hồi I · 0.85: 130Hồi I · 1: 130Hồi IIHồi II · 0: 79.8Hồi II · 0.1: 79.8Hồi II · 0.4: 123.2Hồi II · 0.85: 145Hồi II · 1: 145Hồi IIIHồi III · 0: 88Hồi III · 0.1: 88Hồi III · 0.4: 136Hồi III · 0.85: 160Hồi III · 1: 160Hồi IVHồi IV · 0: 93.5Hồi IV · 0.1: 93.5Hồi IV · 0.4: 144.5Hồi IV · 0.85: 170Hồi IV · 1: 170KếtKết · 0: 99Kết · 0.1: 99Kết · 0.4: 153Kết · 0.85: 180Kết · 1: 180Bí mật (B6)Bí mật (B6) · 0: 82.5Bí mật (B6) · 0.1: 82.5Bí mật (B6) · 0.4: 127.5Bí mật (B6) · 0.85: 150Bí mật (B6) · 1: 150
B_room theo Hồi × đường pha CRV_phase (STD).
B_room theo HồiB_room theo HồiHồi IHồi I: 130 TP130 TPHồi IIHồi II: 145 TP145 TPHồi IIIHồi III: 160 TP160 TPHồi IVHồi IV: 170 TP170 TPKếtKết: 180 TP180 TPBí mật (B6)Bí mật (B6): 150 TP150 TP
BPS_act theo HồiBPS_act theo HồiHồi IHồi I: 3.4 TP/s3.4 TP/sHồi IIHồi II: 3.8 TP/s3.8 TP/sHồi IIIHồi III: 4.2 TP/s4.2 TP/sHồi IVHồi IV: 4.5 TP/s4.5 TP/sKếtKết: 5 TP/s5 TP/sBí mật (B6)Bí mật (B6): 4.4 TP/s4.4 TP/s
TP trung bình theo lớp quáiTP trung bình theo lớp quáiswarmswarm: 0.5 TP0.5 TPlungerlunger: 1 TP1 TPrangedranged: 1.5 TP1.5 TPshieldshield: 2 TP2 TPsupportsupport: 3 TP3 TPnestnest: 4 TP4 TP
Bảng TP từng quái (33)
33 dòng
QuáiTPNhóm trầnTrần sống
Thây Tro EN_B1_010.5SWARM—
Quỷ Rãnh EN_B1_021LUNGE16
Thầy Bùa Tro EN_B1_031.5RANGED10
Khiên Mộ EN_B1_042SHIELD10
Xác Trương EN_B1_051.5BOMB8
Xạ Thủ Lồng Than EN_B1_061.5RANGED10
Hồn Khói EN_B1_071AMBUSH6
Thây Đuối EN_B2_010.5SWARM—
Ếch Vây EN_B2_021LUNGE16
Rắn Bùa EN_B2_031.5RANGED10
Mộc Thi EN_B2_042.5STATIC4
Bướm Liệm EN_B2_050.5FLOCK40
Càng Bùn EN_B2_061.5AMBUSH6
Đò Thây EN_B2_074NEST2
Phu Xỉ EN_B3_010.5SWARM—
Thợ Bễ EN_B3_023SUPPORT3
Đá Lăn Lò EN_B3_031.5ROLL6
Phu Bom EN_B3_041.5BOMB8
Bò Giáp EN_B3_052CHARGE6
Cưa Đồng EN_B3_061.5GRAPPLE6
Nhím Gai Lò EN_B3_072RETAL8
Cận Vệ Rỗng EN_B4_010.8SHIELD24
Thú Đá Mái EN_B4_020.6SWARM—
Chim Than EN_B4_031.5BOMB8
Rồng Non Tro EN_B4_042CONE8
Lục Lạc Sét EN_B4_051TETHER6
Pha Lê Tro EN_B4_062RANGED6
Tiểu Đồng Chuông EN_B4_073SUPPORT3
Bóng Kẻ Thức EN_B6_010SCRIPT2
Tiếng Câm EN_B6_021.5DRIFT12
ELITE12ELITE2
MINI30MINI1
Boss BOSS60BOSS1

2.1 Điểm đe doạ (TP) & trần sống theo vai

idVai (Bible §7.2)Archetype (14 §2.3)TPNhóm trầnTrần sống/phòng
EN_B1_01bầyswarm_melee0.5SWARM—
EN_B1_02vồ/laolunger1.0LUNGE16
EN_B1_03đánh xa/némranged_kiter1.5RANGED10 (chung nhóm)
EN_B1_04khiênshield_bearer2.0SHIELD10
EN_B1_05tự nổbomber_self1.5BOMB8 (chung nhóm)
EN_B1_06bắn đón đầuranged_lead1.5RANGED(chung 10)
EN_B1_07phục kích/ẩnambusher1.0AMBUSH6
EN_B2_01bầyswarm_melee0.5SWARM—
EN_B2_02vồ/laolunger1.0LUNGE16
EN_B2_03đánh xa/némranged_kiter1.5RANGED10
EN_B2_04trụ đứng yênstationary2.5STATIC4
EN_B2_05bay/làm chậmflyer_swarm0.5FLOCK40
EN_B2_06phục kích/ẩnambusher1.5AMBUSH6
EN_B2_07tổ sinh quáispawner_mobile4.0NEST2
EN_B3_01bầyswarm_melee0.5SWARM—
EN_B3_02hỗ trợ/buffsupport_aura3.0SUPPORT3
EN_B3_03lăn theo đườngroller1.5ROLL6
EN_B3_04ném bom/mìnthrower1.5BOMB8
EN_B3_05húccharger2.0CHARGE6
EN_B3_06kéo/cưagrappler1.5GRAPPLE6
EN_B3_07phản đòn sau lưngretaliator2.0RETAL8
EN_B4_01khiênshield_bearer0.8SHIELD24
EN_B4_02bay/làm chậm (vai bầy của B4)diver0.6SWARM—
EN_B4_03bổ nhào bomdiver (bom P)1.5BOMB8
EN_B4_04phun nóncone_breather2.0CONE8
EN_B4_05dây nốitether_pair1.0/chiếc, spawn theo cặpTETHER3 cặp
EN_B4_06trụ tái tụreformer2.0RANGED6
EN_B4_07hỗ trợ/buffsupport_aura3.0SUPPORT3
EN_B6_02Tiếng Câmdrifter1.5DRIFT12
Tinh Anh (M)——giữ chỗ 12ELITE2 (HUNT/MRN14: 3)
Mini-boss (L)——giữ chỗ 30MINI1
Boss (XL)——giữ chỗ 60BOSS1
  • Quái mang Ấn (MRN05) TP × 1.5. Con do quái sinh (EN_B2_07 thả, EM04 Gọi Bầy, Thả Quan của MB_B1_1, Gọi Hồn của BS_B1) không trừ ví nhưng tính vào TOF và trần sống; người sinh bỏ lượt khi TOF + TP_con > target hoặc chạm trần nhóm.
  • EN_B6_01 (Bóng Kẻ Thức) chỉ do kịch bản BS_TRUE P3 sinh (≤ 2), không có TP.
  • Trần nhóm RANGED tính cả đạn: ≤ 10 quái bắn sống + token PROJ 3 loạt + ≤ 12 đạn địch trên màn (10 §10) → không bao giờ "rừng xạ thủ" chờ token.

2.2 Chọn nhóm spawn (SpawnPlanner.Pick)

  • MIX = trọng số theo số con của từng enemyId (tổng 100) do kịch bản đặt; mặc định = cột MIX của biome (§9). Pick: cuộn id theo trọng số đã lọc (bỏ id chạm trần nhóm, id chưa "giới thiệu" ở Hồi này nếu phòng thuộc R1).
  • Kích thước nhóm theo vai: SWARM/FLOCK 6–12 (gói, toả r40) · LUNGE 2–4 · RANGED/BOMB/AMBUSH/ROLL/GRAPPLE/CONE 1–2 · SHIELD (B1) 1–3 · SHIELD (B4) 2–4 (hàng ngang) · STATIC/SUPPORT/NEST/RETAL/CHARGE 1 · TETHER 1 cặp. cost(g) = Σ TP.
  • Không quá 2 nhóm cùng enemyId liên tiếp (trừ SWARM/FLOCK) → bầy luôn trộn vai.

2.3 Ngân sách phòng B_obj

B_obj = round5(B_room[act] × obj_mult[objective])

HồiB_room (TP)Sống tối đa ước tính (TP TB biome)BPS_act (TP/s)
I (B1)130171 (0.76)3.4
II (B2)145175 (0.83)3.8
III (B3)160172 (0.93)4.2
IV (B4)170187 (0.91)4.5
Kết ải (B5)180225 (0.80)5.0
Bí mật ải (B6)150170 (0.88)4.4
objPURGEVIGILBELLSTIDENESTGAUNTLETCHASEDUELHUNTRESCUE
obj_mult1.000.851.00sóng 0.80 / 1.00 / 1.250.900.600.700.500.850.90
  • Ví dụ: VIGIL Hồi II = round5(145 × 0.85) = 125; TIDE sóng 3 Hồi IV = round5(170 × 1.25) = 215 (≈ 220 quái → trần 250 đủ chỗ).
  • Đích người chơi thấy: 150–250 quái trong khung nhìn ± 96 px ở đỉnh phòng (bầy hội tụ về hero nhờ flow field; leash §5.2 kéo quái xa về).

2.4 BPS theo Hồi / phút / Khăn Tang

BPS(t) = BPS_act × (1 + 0.04 × min(m_act, 6)) × (1 + 0.15 × MRN02) × mut_bps × bps_mult_script
  m_act    = số phút nguyên đã qua từ đầu Hồi (đồng hồ run, gồm phòng tiện ích) → phòng cuối Hồi nạp nhanh hơn ~16–24%
  mut_bps  = MUT09 Bầy Liền 1.20 · khác 1.00
  bps_mult_script = hàng BUDGET p1 (mặc định 1.0)
Hồiphút 0phút 3phút 6++ MRN02 bậc 2 (phút 6)
I3.403.814.225.48
II3.804.264.716.13
III4.204.705.216.77
IV4.505.045.587.25

2.5 Đường cong pha phase(x), x = t / t_target

id0–0.100.10–0.400.40–0.850.85–1.00> 1.00
CURVE_STD0.550.55 → 0.85 tuyến tính0.85 → 1.001.001.00
CURVE_FLAT (VIGIL, RESCUE)0.700.70 → 0.900.900.950.95
CURVE_GATE (DUEL, HUNT, MBS)0.400.40 → 0.600.600.600.60
CURVE_TIDEtheo sóng: mỗi sóng 0.50 → 1.00 trong 60% thời lượng sóng, giữ 1.00; nghỉ giữa sóng 0.30
CURVE_RUN (GAUNTLET, CHASE)0.600.60 → 0.800.800.800.80
  • Mở màn: t = 0, ví = 0.45 × B_obj (chi ngay cho mở màn qua PACK/EDGE, rải trong 2 s) → sân có quái từ giây đầu, không màn trống.

2.6 Nhân mật độ density_mult (nhân target, kẹp trần đếm)

NguồnHệ sốGhi chú
MRN02 Bầy Đói1 + 0.15 × bậccũng nhân BPS; trần 250 quái giữ
MUT09 Bầy Liền1.20XP +15% (Bible)
MUT04 Đàn Vồ1.00thay 30% số con vai bầy bằng vai vồ/lao của biome: B1 EN_B1_02 · B2 EN_B2_02 · B3 EN_B3_05 (húc) · B4: vai bầy EN_B4_02 đã là bổ nhào → giữ id, 30% nhóm EN_B4_02 spawn FLANK thay PACK; TP tính lại
ENDLESS vòng k1 + 0.05 × k (trần 1.25)HP/sát thương theo 10 §2.4
CUSTOM mật độ0.25–3.00 (trượt)kẹp trần 250
Preset Deck1.00trần đếm 180 (Bible §10.4) thay 250
PerfGovernor bậc 20.90§5.3
  • cap_count = 250 (Deck preset 180); target không bao giờ đẩy số sống vượt cap_count.

2.7 Ví dụ đã tính (Hồi I, R2 CMB PURGE, m_act = 1, Độ Tang 0)

  • B_obj = round5(130 × 1.00) = 130; BPS = 3.4 × 1.04 = 3.54 TP/s; t_target 55 s.
  • t = 0: ví 58.5 → mở màn: 3 gói EN_B1_01 × 12 (18 TP) + 4 EN_B1_02 (4) + 2 EN_B1_03 (3) + … tới phase(0) × 130 = 71.5 → ví chỉ đủ ~58 TP (≈ 80 quái, rải 2 s); sau đó nạp 3.54/s, chạm target 71.5 ở t ≈ 4 s.
  • t = 22 s (x = 0.40): target = 0.85 × 130 = 110.5 TP; người chơi diệt ~3/s (≈ 2.2 TP/s) → ví nạp 3.54/s đủ bù, TOF bám target ~110 (≈ 145 quái).
  • t = 47 s (x = 0.85): target 130 TP (≈ 171 quái); kill đạt 150 ở ~50 s → phòng xong; quái còn sống tan tro (16 §3.2).
  • Tổng spawn ≈ 58.5 + 3.54 × 50 = 236 TP ≈ 310 quái; kill 150; còn ~160 tan tro.

5Mẫu spawn (pattern)

📊 Mẫu spawn

MẫuHình dạngTrong khungTối thiểu
EDGEđiểm ngẫu nhiên trên viền ngoài khung (+32 px); 60% lệch về phía trước vận tốc hero (nón ±60°); lớp ngân sách mặc định RANGED/BOMB/đơn lẻnohero_clear_px: 90, margin_px: 32
PACKgói quanh 1 điểm EDGE, toả r = p1, lệch giờ 0–0.3 s/con; mặc định SWARM/FLOCK/LUNGEnohero_clear_px: 90, margin_px: 32
RINGn con trên vòng tâm hero bán kính p1, chừa 1 khe p2° về phía mật độ thấp nhất/hướng di chuyển; ấn tro 0.6 s; không RING khi hero trong 160 px của tường (dời 1 s)yeshero_clear_px: 90, r: 140, gap_deg: 45
ARCn con trên cung p2° bán kính p1, tâm cung = hướng mặt hero; beat chặn đầu/dồnpartialhero_clear_px: 90
ARC_BACKnhư ARC nhưng tâm cung sau lưng hero; beat dồnpartialhero_clear_px: 90
FLANK2 nhóm n/2 ở ±90° so với hướng di chuyển hero, ngoài khung, tới cùng lúc ± 0.3 s; beat kẹpnohero_clear_px: 90, margin_px: 32
BURSTn con từ 1 điểm (cổng, tổ, đạo cụ) trong 0.5 s; beat bùngdependshero_clear_px: 90
TRICKLE1–2 con mỗi p1 s từ EDGE; sân rỉ boss/mini, nghỉnohero_clear_px: 90, margin_px: 32
SWARMdòng n con trong p1 s từ 1 hướng p2 (0 = Bắc sân; BACK = sau hero theo trục hành lang; RAND = ngẫu nhiên), chảy theo flow field; TIDE, GAUNTLET đuổi saunohero_clear_px: 90, margin_px: 32
AMBUSHn con trồi ở neo ambush_anchor của sân, 120–220 px từ hero; báo p1 s; vai AMBUSHyeshero_clear_px: 90, r: 120, warn_s: 1
GATEtừ cổng đạo cụ của sân (N/S/E/W); demo canon, sân có cổngdependshero_clear_px: 90
FARđiểm sân xa hero nhất (lưới 64 px), cách ≥ 220 px; Tinh Anh, mini, boss, người mang báudependshero_clear_px: 90, dist_px: 220
NESTtừ đạo cụ tổ/mục tiêu (Mộ Mở, Bè Liệm, Khuôn Nứt, Lồng Xích, EN_B2_07); ấn tro 0.6 syeshero_clear_px: 90
LINEhàng n con vuông góc trục hành lang (sân mở: trục = hướng tới mục tiêu kế), cách hero p1 px phía trước, chừa khe giữa p2 px; GAUNTLET chặn, khiên B4nohero_clear_px: 90, dist_px: 240, gap_px: 48

Khung nhìn (Bible §10.4, 16:9): 480 × 270 px màn = 480 px ngang × 540 px sâu trên sàn (tilt 0.5). Ngoài khung = ngoài hình chữ nhật khung nhìn + lề 32 px. Mọi mẫu chạy qua luật công bằng §4 trước khi đặt.

idHìnhp1p2Trong khung?Dùng cho
EDGEđiểm ngẫu nhiên trên viền ngoài khung; 60% lệch về phía trước vận tốc hero (nón ±60°)——khônglớp ngân sách mặc định (RANGED, BOMB, đơn lẻ)
PACKgói quanh 1 điểm EDGE, toả r = p1, lệch giờ 0–0.3 s/conr toả (40)—khôngSWARM/FLOCK/LUNGE mặc định
RINGn con trên vòng tâm hero bán kính p1, chừa 1 khe p2°r (160, sàn 140)khe ° (60, sàn 45)có (ấn tro 0.6 s)beat vòng vây
ARCn con trên cung p2° bán kính p1, tâm cung = hướng mặt hero (như ARC nhưng tâm cung sau lưng hero; beat dồn ARC_BACK = sau lưng)r (200)góc (120)một phầnbeat chặn đầu/dồn
FLANK2 nhóm n/2 ở ±90° so với hướng di chuyển hero, ngoài khung, tới cùng lúc ± 0.3 slệch thêm ° (0)—khôngbeat kẹp
BURSTn con từ 1 điểm (cổng, tổ, đạo cụ) trong 0.5 sid điểm (GATE_N…) hoặc FAR—có nếu điểm trong khungbeat bùng
TRICKLE1–2 con mỗi p1 s từ EDGEchu kỳ s (6.5)số/lần (2)khôngsân rỉ boss/mini, nghỉ
SWARMdòng n con trong p1 s từ 1 hướng p2 (độ, 0 = phía Bắc sân), chảy theo flow fieldthời lượng s (6)hướng °khôngTIDE, GAUNTLET đuổi sau
AMBUSHn con trồi ở neo ambush_anchor của sân, 120–220 px từ herobáo s (1.0)id neo hoặc NEARESTcó (báo 1.0 s)beat phục kích, vai AMBUSH
GATEtừ cổng đạo cụ của sân (N/S/E/W)id cổng—tuỳdemo canon, sân có cổng
FARđiểm sân xa hero nhất (lưới 64 px), cách ≥ 220 px——tuỳTinh Anh, mini, người mang báu
NESTtừ đạo cụ tổ/mục tiêu (Mộ Mở…)id đạo cụ—có (ấn 0.6 s)NEST, EN_B2_07
LINEhàng n con vuông góc trục hành lang, cách hero p1 px phía trướckhoảng cách (260)khe giữa (48)không (p1 > nửa khung)GAUNTLET chặn
  • Mặc định theo vai (lớp ngân sách): SWARM/FLOCK/LUNGE → PACK · SHIELD B4 → LINE dọc (hàng 2–4) từ EDGE · AMBUSH → AMBUSH (n 1–2, báo bằng tell của chính quái) · STATIC → EDGE rồi đứng tại điểm cách hero 220 px · NEST (EN_B2_07) → EDGE · còn lại → EDGE.

6Công bằng spawn (cứng, mọi mẫu)

#LuậtSốNguồn
F1ấn tro #e8e4f0 trước khi thân hiện, không sát thương0.6 s (AMBUSH 1.0 s; tái tụ EN_B4_06 0.8 s)INV-14
F2không spawn trong bán kính quanh heror90 mọi mẫu; RING ≥ 140; AMBUSH ≥ 120INV-14 + doc này
F3quái mới không windup0.8 s sau khi hiệnINV-14
F4Tinh Anh/mini/boss/triệu hồi M+xoáy trung tính 1.0 sINV-14
F5ngoài khung mặc địnhngoài khung + 32 px; trong khung chỉ RING/AMBUSH/NEST/BURST tại đạo cụdemo §2.2
F6RING luôn chừa khe≥ 45° (mặc định 60°) về phía mật độ thấp nhất hoặc hướng di chuyển; không RING khi hero trong 160 px của tường (dời 1 s)"dày nhưng luôn có lối"
F7không đặt lên vùng P/N đang hiện, trong vật cao, ngoài sân, trên hốthử lại 6 điểm, rồi bỏ con đó (hoàn TP vào ví)demo §2.2
F8beat vây (RING/ARC/như ARC nhưng tâm cung sau lưng hero; beat dồn ARC_BACK/FLANK/AMBUSH) cách nhau ≥ 8 s, sau beat vây 4 s chỉ lớp ngân sách SWARM; beat dồn (SWARM/LINE/BURST) cách nhau ≥ 4 s và cách beat vây ≥ 4 s; các dòng cùng trigger+at = 1 beat≥ 8 s / ≥ 4 sdoc này
F9báo beat ngoài khungmũi tên viền màn trắng ngà 0.8 s trước khi quái vào khung (FLANK/SWARM/như ARC nhưng tâm cung sau lưng hero; beat dồn ARC_BACK)doc này
F10báo phục kíchấn tro 1.0 s + gợn sàn + AmbushWarn (F10 báo phục kích doc 15: ấn tro 1.0 s + gợn sàn), âm có … SFX_SHARED_ambush_rise (âm có vị trí); EN_B2_06 dùng Trồi Lên P (tell tím của nó, ăn token P)INV-02/14
F11nghỉ sau Tinh Anh chết6 s: không beat, không vai nguy (chỉ SWARM/FLOCK)demo §5
F12không chồng tímvùng P mới trì 0.3 s nếu P khác > 60% đầy trong r80 (demo); lối thoát P 14 §4.2 (> 70% đĩa r120 → trì/huỷ)INV-08
F13boss windupquái phụ không bắt đầu windup trong 0.6 s trước va chạm đòn boss; không spawn sân rỉ khi boss windup Pdemo §5 + Bible §2
F14sau Lướtkhông đặt quái mới trong nón ±45° hướng Lướt, < 200 px, trong 0.5 s sau Lướtdoc này [ASSUMED]
F15Ult herotrong lúc hero bất tử Ult: Director không beat; lớp ngân sách chạydoc này
F16đầu phòng2.0 s đầu không quái nào windup (cả mở màn)doc này
F17quái ngoài khung không bắnRANGED/BOMB chỉ windup khi trong vùng an toàn khung nhìndemo + 14 §3.3
  • Mọi luật F1–F17 không bị Khăn Tang/mutator/Tro Nhớ/CUSTOM tắt (CUSTOM "bất tử" chỉ đổi sát thương nhận).

7Mật độ & trần hiệu năng

5.1 Trần cứng (Bible §10.4, 10 §10)

KhoáTrầnKhi chạm
Quái sống250 (preset Deck 180)lớp ngân sách dừng; beat cắt bớt con, hoàn TP
Đạn địch12 trên màn; ≤ 3 loạt nhắm heroquái chờ token PROJ
Vùng địch (P + N)16; token P_FLOOR 3 / P_TOTAL 5quái không token P → đòn Y hoặc chờ
VFXtrúng ≤ 16/khung · chết quái ≤ 12/khung · hạt ≤ 1.500 · sheet hoạt động ≤ 40hàng đợi chết dồn sang khung sau (≤ 3 khung), quá hạn → tan tro tối giản 1 sprite
Số sát thương260 trên màn · 24 mới/tickthứ tự bỏ 10 §6.5
Xác chết đang chạy anim80xác thứ 81+ bỏ trượt/hất, chỉ tan tro 0.2 s
Shard XP trên sàn120gộp vào shard gần nhất (giá trị cộng dồn)
Cầu máu trên sàn6rơi thêm → gộp HP vào cầu gần nhất
SFX (32 §5.3)voice thật 64 · ảo 256 · pool one-shot 48 (+ 12 nhạc + 4 ambience); trúng ≤ 3/50 ms · chết ≤ 4/100 ms (gộp 32 §6); 29 voice dành không bị cướp (tell Y 7 · tell P 5 · ĐÁP 2 · Ult 3 · nhạc 12); SFX tell không cắtđầy 64 → Unity ảo hoá nguồn priority số cao trước (Pickup → Status → Ambience → EnemyCrowd); mục tiêu p95 voice thật ≤ 56 khi 250 quái + Ult
AI ticktrong r200 mỗi frame; ngoài 10 Hz—

5.2 Leash & dọn dẹp

  • Quái S cách hero > 600 px quá 3 s (ngoài khung) → biến mất, hoàn 100% TP vào ví, Director spawn lại phía trước hero theo EDGE (giữ áp lực; demo leash 900 px chỉnh theo khung 480 px).
  • Quái RANGED/STATIC không leash khi còn nhìn thấy (trong khung); M/L/XL không bao giờ leash (Tinh Anh chạy theo, 14 §6).
  • Không xoá quái đang windup hoặc đang giữ token.

5.3 PerfGovernor (hạ cấp theo thời gian khung)

BậcVào khiHạRa khi
0———
1p95 khung > 16.6 ms trong 2 ssố sát thương phụ tắt · VFX chết ≤ 6/khung · hạt × 0.5 · anim quái ngoài khung đứng hìnhp95 < 14 ms trong 5 s
2bậc 1 + vẫn > 16.6 ms 2 sdensity_mult × 0.90 · tan tro tối giản cho quái S · AI ngoài r200 → 5 Hzp95 < 14 ms trong 5 s → bậc 1
3bậc 2 + vẫn > 16.6 ms 3 scap_count 180 (như preset Deck) · bóng quái S tắtchỉ ra ở phòng sau
  • Không bao giờ hạ: tell Y/P/N (glint, vùng, SFX), va chạm, sát thương, token, vòng chân hero, x-ray (INV-09), ấn tro spawn (INV-14), mũi tên báo beat.
  • Telemetry perf_tier mỗi lần đổi bậc {room, alive, fx_active, p95}. MS01b (Bible §10.4) phải đạt bậc 0 với 250 quái.

8Bể token theo hạng (tóm tắt 14 §4 — 14 là nguồn)

TokenTrầnGiữ bởiHệ quả cho Director
MELEE4 · 2 khi M/L/XL windup nhắm hero · 0 trong 0.6 s cuối windup P của bossS> 12 quái cận chiến S trong r100 không tăng đòn cùng lúc → mật độ an toàn
PROJ3 loạt nhắm hero; 12 đạn trên mànS + đạn M/L/XLtrần nhóm RANGED 10 (§2.1)
P_FLOOR3 tell P sàn từ SStrần nhóm BOMB 8
P_TOTAL5 (gồm hazard, Ấn, mutator, Khăn Tang, P của M+)mọi nguồnhazard/HAZ trong kịch bản xin token như quái (§11)
HEAVY1 windup M/L/XL nhắm heroM, L, XLHUNT: Tinh Anh thứ 2 chờ (STALK); không bao giờ 2 Tinh Anh windup cùng lúc
OBJECTIVE6 windup nhắm vật mục tiêuS có cờ objective_attackerVIGIL (§10); RESCUE không quái nào đánh kén
  • Trần token không đổi theo Khăn Tang/Ấn/mutator/Tro Nhớ (INV-08/15).

9Tinh Anh trong phòng

7.1 Chèn Tinh Anh (ELITE)

ELITE(id | '*', em | '*'):
  id '*' → Tinh Anh biome chưa gặp trong run, rồi ngẫu nhiên đều
  giữ chỗ 12 TP: lớp ngân sách dừng tới khi TOF ≤ target − 12
  điểm = FAR (≥ 220 px, ưu tiên mép trong khung để người chơi thấy xoáy) → xoáy 1.0 s (F4)
  callout "TINH ANH XUẤT HIỆN" + nameplate (tên + Ấn + tag thế đáp nếu có)
  MELEE token → 2 khi nó windup; HEAVY 1
  chết → F11 nghỉ 6 s; XP 40, Tro Hồn 25 (Bible)
NơiTinh AnhẤn
ELT DUEL1 (HP × 1.4 [ASSUMED], thời lượng Cổng 65–75 s)1
ELT HUNT2 (HP × 1.0)1 mỗi con, không trùng
CMB TIDE sóng 3Hồi II+ : 11
CMB BELLS / NESTHồi III+ : 1 canh chuông 3 / tổ cuối1
CHL biến thể ASH1 ở 40% thời lượng, 1 thế đáp bật sẵn (tính ngân sách Hồi 14 §11)1
MRN14 Kẻ Truy Tangmỗi 3 phòng chiến: 1 ở 30% thời lượng, đuổi hero (STALK → ENGAGE)1 ngẫu nhiên

7.2 Gán Ấn (EM01–EM16)

HồiPoolLuật
Ian toàn: EM01, EM02, EM03, EM07, EM113 run đầu đời: Tinh Anh Hồi I không Ấn
IIEM01–EM11, EM13, EM14EM14 Xích Hồn chỉ khi có ≥ 2 Tinh Anh (HUNT)
III–IV, KếtEM01–EM16EM12 [ASH] tính vào trần thế đáp/Hồi; Tro Nhớ tắt → EM12 = Ấn trống (cuộn lại)
  • MUT05 Hồn Nặng: +1 Ấn (2 Ấn khác nhau). MRN05: 10% quái thường từ Hồi II mang 1 Ấn nhóm an toàn (EM01/02/03/07/11), TP × 1.5, viền nameplate nhỏ.
  • EM04 Gọi Bầy: 6 quái SWARM biome / 8 s qua xoáy 1.0 s ngoài r90; con không trừ ví (§2.1). EM16 Thề Thù: chiếm 1/4 MELEE cho đàn, thêm 1 Relic lựa khi chết.

10Mini-boss & boss

KhoáMBS mini-bossBOS boss HồiBS_FINAL / BS_TRUE
Sântròn r200, cửa đóng khi vào [ASSUMED]tròn r220 (demo), cửa đóngB5 vành r260 · B6 r240 [ASSUMED]
Vàohero tới tâm − 120 px → cửa đóng → xoáy 1.0 s → thoại lần đầu ≤ 3 s (boss bất tử)như mininhư mini; sau ải
Sân rỉ (Bible ≥ 6 S/20 s)TRICKLE 2 con/6.5 s (≈ 6.2/20 s), quái SWARM biome (B4: EN_B4_02)như miniBS_FINAL: SWARM B1–B4 xoay; BS_TRUE: EN_B6_02 1 con/10 s + SWARM
Trần quái phụ30 sống (gồm con triệu hồi)40 (BS_B1 Gọi Hồn 24 con: tính vào 40)40
Ngân sáchkhông ví; chỉ TRICKLE + triệu hồi kitnhư mininhư mini
Đổi phasân rỉ dừng 3 s; quái phụ trong r160 bị đẩy theo quỳ của bossnhư mininhư mini
Draftxếp hàng tới hết trận (Bible §2.1)như mininhư mini
Kết trậnquái phụ tan tro 0.8 s+ hồi phục ≥ 60%→ kết / B6
  • Không chèn Tinh Anh trong phòng mini/boss (MRN14 bỏ qua phòng MBS/BOS). MRN10 Cổng Kép: ELT rồi MBS cùng sân, nghỉ 4 s (16 §3.1).
  • Quái phụ dùng token như thường; F13 áp dụng.

11Hồ sơ Director theo biome

📊 Hồ sơ Director theo biome

Đồi Mộ Tro

B1
B_room
130
BPS_act
3.4
Rỉ boss
Thây Tro EN_B1_01
Ưu tiên diệt
—
Kẻ mang
Kẻ Đào Trộm Mộ (biped, ôm hũ tro)

RING Thây Tro trồi từ mộ · NEST Mộ Mở. Hazard (INV-18, xin P_TOTAL): HZ_B1_collapse sàn sụp P r40, 1 vùng/12 s ở sân có cờ · HZ_B1_bell chuông làng (hero đánh → choáng r100, trúng cả quái) · HZ_B1_bone_field bãi xương −15% tốc (cả quái). Nhạc: intensity = clamp(alive / 200, 0, 1) + 0.3 khi beat/Tinh Anh.

Đầm Vải Liệm

B2
B_room
145
BPS_act
3.8
Rỉ boss
Thây Đuối EN_B2_01
Ưu tiên diệt
Đò Thây EN_B2_07
Kẻ mang
Hồn Đèn Liệm (đèn lồng trôi trên bè)

AMBUSH Càng Bùn dưới nước · SWARM Bướm Liệm theo gió. Hazard: HZ_B2_bridge cầu tre sập P 1.0 s khi ≥ 6 thân trên cầu, hồi 15 s · HZ_B2_gas túi khí ma trơi: đòn nặng → nổ P r60 (trì 0.45 s) · HZ_B2_water nước nông −15% tốc. Đạo cụ: VIGIL đèn lồng đò, BELLS chuông phao, NEST Bè Liệm, RESCUE kén treo đước (cùng id OBJ_, sprite theo biome).

Lò Đúc Câm

B3
B_room
160
BPS_act
4.2
Rỉ boss
Phu Xỉ EN_B3_01
Ưu tiên diệt
Thợ Bễ EN_B3_02
Kẻ mang
Thây Thợ Học Việc ôm lưỡi chuông

LINE Bò Giáp dọc băng chuyền · BURST từ cửa lò. Hazard: HZ_B3_pour rót đồng P r50, 1 lần/10 s · HZ_B3_mold khuôn rơi P r56, 1 lần/14 s, nghiền quái · HZ_B3_conveyor băng chuyền 24 px/s · HZ_B3_hook móc cẩu (Lướt vào = quét bầy). Đạo cụ: VIGIL lò canh xưởng, BELLS chuông mộc chưa đúc, NEST Khuôn Nứt, RESCUE kén trong khuôn.

Thành Chuông Treo

B4
B_room
170
BPS_act
4.5
Rỉ boss
Thú Đá Mái EN_B4_02
Ưu tiên diệt
Tiểu Đồng Chuông EN_B4_07
Kẻ mang
Thây Đưa Thư (đu theo xích)

ARC đàn Thú Đá Mái từ trên vực (bầy chính) · LINE hàng ngắn 2–4 Cận Vệ Rỗng. Hazard: HZ_B4_wind gió đẩy 30 px/s (cờ báo 1.0 s, thổi 4 s, mỗi 12 s) · HZ_B4_pendulum chuông con lắc P quét làn, 1 lần/8 s · HZ_B4_signal_bell chuông hiệu (hero đánh → choáng r120). Đạo cụ: VIGIL đèn hiệu tháp, BELLS chuông hiệu, NEST Lồng Xích, RESCUE kén treo xích.

Đỉnh Chuông Câm

B5
B_room
180
BPS_act
5
Rỉ boss
Thây Tro EN_B1_01
Ưu tiên diệt
—
Kẻ mang
—

Ải Kết 4 đoạn 15 s: RING 48 r180 (B1) → SWARM 40 Bướm Liệm hướng ngẫu nhiên (B2) → FLANK 6 Bò Giáp (B3) → ARC 24 Thú Đá Mái r220 (B4). MIX mặc định = đoạn 1; kịch bản WS_B5_TRIAL_01 đổi MIX mỗi đoạn. Sân rỉ BS_FINAL: SWARM B1–B4 xoay (EN_B1_01 → EN_B2_01 → EN_B3_01 → EN_B4_02).

Bờ Lặng

B6
B_room
150
BPS_act
4.4
Rỉ boss
Tiếng Câm EN_B6_02
Ưu tiên diệt
—
Kẻ mang
—

Tiếng Câm EN_B6_02 (Nuốt P câm kỹ năng 2 s, ăn P_FLOOR, trần DRIFT 12) trộn SWARM B1–B4 xoay 15 s/lượt + chuyên biệt B1–B4 ngẫu nhiên (≤ 2 vai/lượt). Âm thanh biome tắt dần, SFX tell giữ nguyên. Sân rỉ BS_TRUE: EN_B6_02 1 con/10 s + SWARM xoay.


9.1 MIX mặc định (% số con) & thứ tự giới thiệu

Biome01020304050607TP TB
B1708645340.76
B26076415530.83
B3684665650.93
B41263666430.91
Giới thiệu theo hàng (lần đầu trong run)R1: 01, 02, 03 · R2: + 04, 05 · R3+: + 06, 07
  • B4: vai bầy = cột 02 (EN_B4_02, TP 0.6, bay → mọi hero PROJ/AREA/MELEE đánh trúng); cột 01 EN_B4_01 khiên chỉ 12% (trần sống 24, hàng 2–4) để bầy Hồi IV không miễn đòn chính diện.
  • "Chưa giới thiệu" → trọng số 0, phần dư chia về 01 (B4: về 02). Lần đầu một id xuất hiện trong đời tài khoản: 1 con đi trước nhóm, nameplate tên 2 s, codex mở trang.
  • Phòng R1 mỗi Hồi chỉ dùng MIX 01–03 kể cả khi đã giới thiệu ở run trước (nhịp khởi động).

9.2 Hồ sơ từng biome

KhoáB1 Đồi Mộ TroB2 Đầm Vải LiệmB3 Lò Đúc CâmB4 Thành Chuông Treo
B_room · BPS_act130 · 3.4145 · 3.8160 · 4.2170 · 4.5
Mẫu đặc trưngRING Thây Tro trồi từ mộ · NEST Mộ MởAMBUSH Càng Bùn dưới nước · SWARM Bướm Liệm theo gióLINE Bò Giáp dọc băng chuyền · BURST từ cửa lòARC đàn Thú Đá Mái từ trên vực (bầy chính) · LINE hàng ngắn 2–4 Cận Vệ Rỗng
Hazard (INV-18, xin P_TOTAL)sàn sụp P r40: 1 vùng/12 s ở sân có cờ; chuông làng (hero đánh → choáng r100, trúng cả quái); bãi xương −15% tốc (cả quái)cầu tre sập P 1.0 s khi ≥ 6 thân trên cầu, hồi 15 s; túi khí ma trơi: đòn nặng → nổ P r60 (trì 0.45 s); nước nông −15%rót đồng P r50: 1 lần/10 s; khuôn rơi P r56: 1 lần/14 s, nghiền quái; băng chuyền 24 px/s; móc cẩu (Lướt vào = quét bầy)gió đẩy 30 px/s: cờ báo 1.0 s, thổi 4 s, mỗi 12 s; chuông con lắc P quét làn: 1 lần/8 s; chuông hiệu (hero đánh → choáng r120)
Đạo cụ mục tiêuVIGIL lò lửa canh OBJ_BRAZIER · BELLS chuông làng OBJ_BELL · NEST Mộ Mở OBJ_NEST_B1 · RESCUE kén OBJ_COCOONVIGIL đèn lồng đò OBJ_BRAZIER_B2 · BELLS chuông phao OBJ_BELL_B2 · NEST Bè Liệm OBJ_NEST_B2 · RESCUE kén treo đước OBJ_COCOON_B2VIGIL lò canh xưởng OBJ_BRAZIER_B3 · BELLS chuông mộc chưa đúc OBJ_BELL_B3 · NEST Khuôn Nứt OBJ_NEST_B3 · RESCUE kén trong khuôn OBJ_COCOON_B3VIGIL đèn hiệu tháp OBJ_BRAZIER_B4 · BELLS chuông hiệu OBJ_BELL_B4 · NEST Lồng Xích OBJ_NEST_B4 · RESCUE kén treo xích OBJ_COCOON_B4
Người mang báu (CHASE)Kẻ Đào Trộm Mộ (biped, ôm hũ tro) OBJ_CARRIERHồn Đèn Liệm (đèn lồng trôi trên bè) OBJ_CARRIER_B2Thây Thợ Học Việc ôm lưỡi chuông OBJ_CARRIER_B3Thây Đưa Thư (đu theo xích) OBJ_CARRIER_B4
Sân rỉ boss/miniEN_B1_01EN_B2_01EN_B3_01EN_B4_02
Ưu tiên diệt (vai hỗ trợ)—EN_B2_07 tổEN_B3_02 Thợ BễEN_B4_07 Tiểu Đồng Chuông
Nhạc cường độintensity = clamp(alive / 200, 0, 1) + 0.3 khi beat/Tinh Anh; Tinh Anh/boss → lớp nhạc boss (32-Audio-Bible)
  • Đạo cụ mục tiêu là đạo cụ sân, không phải kẻ địch: id OBJ_<NAME> chỉ dùng trong dữ liệu sân/kịch bản, không vào roster, không có kit đòn. Hình đạo cụ biến thể theo biome: mỗi biome 1 id OBJ_<NAME>_B<n> (B1 giữ OBJ_<NAME>), cùng luật HP/tương tác.
  • Hazard gây sát thương dùng cờ hits_enemies = true (INV-18); Director tính quái chết do hazard như kill bình thường (XP, MESO).

9.3 Ải Kết (B5, 60 s, FINALE_TRIAL)

ĐoạnGiâyMIXBeat
10–15SWARM B1 70 · EN_B1_02 15 · EN_B1_05 15mở màn RING 48 r180
215–30SWARM B2 60 · EN_B2_05 25 · EN_B2_03 15SWARM EN_B2_05 40 con hướng ngẫu nhiên
330–45SWARM B3 65 · EN_B3_04 15 · EN_B3_05 20FLANK EN_B3_05 6
445–60EN_B4_02 70 · EN_B4_01 12 · EN_B4_04 18ARC EN_B4_02 24 r220
  • B_obj 180, CURVE_STD theo từng đoạn 15 s (mỗi đoạn x tính lại, sàn 0.70); quái đoạn trước không bị xoá. Co giãn ngoài Hồi gốc theo 10 §2.4 (act = 5). t = 60 s: mọi quái tan tro hướng tâm, vành Đại Chuông hiện, sân tròn trống → BS_FINAL.
  • Không Tinh Anh, không mục tiêu; chỉ sống sót 60 s (chết ở đây = chết run).

9.4 Ải Bí mật (B6, 45 s, SHORE_TRIAL)

  • B_obj 150; MIX: EN_B6_02 20 · SWARM B1–B4 xoay 15 s/lượt 60 · chuyên biệt B1–B4 ngẫu nhiên 20 (≤ 2 vai/lượt).
  • EN_B6_02 Nuốt P (câm kỹ năng 2 s) ăn P_FLOOR; trần nhóm DRIFT 12. Âm thanh biome tắt dần ("không vọng"), SFX tell giữ nguyên.
  • t = 45 s: tan tro → BS_TRUE.

12Mục tiêu trận (10 loại, Bible run.objectives)

📊 Mục tiêu trận

t_target theo mục tiêu (s)t_target theo mục tiêu (s)Hồi Ithêm ở Hồi II–IV0204060Thanh TẩyThanh Tẩy · Hồi I: 50 s50 sThanh Tẩy · thêm ở Hồi II–IV: 5 s5 s55 sCanh LửaCanh Lửa · Hồi I: 50 s50 sCanh Lửa · thêm ở Hồi II–IV: 0 s50 sGõ ChuôngGõ Chuông · Hồi I: 55 s55 sGõ Chuông · thêm ở Hồi II–IV: 5 s5 s60 sThuỷ TriềuThuỷ Triều · Hồi I: 55 s55 sThuỷ Triều · thêm ở Hồi II–IV: 5 s5 s60 sĐập TổĐập Tổ · Hồi I: 55 s55 sĐập Tổ · thêm ở Hồi II–IV: 5 s5 s60 sHành LangHành Lang · Hồi I: 50 s50 sHành Lang · thêm ở Hồi II–IV: 5 s5 s55 sTruy ĐuổiTruy Đuổi · Hồi I: 50 s50 sTruy Đuổi · thêm ở Hồi II–IV: 0 s50 sQuyết ĐấuQuyết Đấu · Hồi I: 65 s65 sQuyết Đấu · thêm ở Hồi II–IV: 5 s5 s70 sSăn Tinh AnhSăn Tinh Anh · Hồi I: 65 s65 sSăn Tinh Anh · thêm ở Hồi II–IV: 5 s5 s70 sGiải CứuGiải Cứu · Hồi I: 55 s55 sGiải Cứu · thêm ở Hồi II–IV: 5 s5 s60 s
Mục tiêuNútt_target (s)obj_multĐường phaTrần (s)MESOThắngThua
Thanh Tẩy PURGEGiao Tranh CMB · Thử Lửa CHLI: 50, II_IV: 551STD60—diệt N quái (150 / 170 / 180 / 175 ở Hồi I / II / III / IV) hoặc sống 60 s; MRN02 không đổi N—
Canh Lửa VIGILGiao Tranh CMB · Thử Lửa CHLI: 50, II_IV: 500.85FLAT50cólò OBJ_BRAZIER (HP 300) còn HP ở giây 50; ĐÁP thành công trong r80 quanh lò → lò +15 HP (≤ 300)lò HP 0 → mất icon thưởng nút, phòng chạy tiếp tới 50 s
Gõ Chuông BELLSGiao Tranh CMB · Thử Lửa CHLI: 55, II_IV: 601STD—cógõ đủ 3 chuông OBJ_BELL (ngân 3 / 4 / 5 / 5 nhịp ở Hồi I–IV; cú HEAVY/kỹ năng/ult = 2 nhịp); chuông ngân: sóng r140 diệt quái S—
Thuỷ Triều TIDEGiao Tranh CMB · Thử Lửa CHLI: 55, II_IV: 600.8/1/1.25TIDE60—hết sóng 3 (Hồi I 15 / 18 / 22 s · Hồi II–IV 16 / 20 / 24 s) và Tinh Anh sóng 3 (Hồi II+) chết—
Đập Tổ NESTGiao Tranh CMB · Thử Lửa CHLI: 55, II_IV: 600.9STD—cóphá 3 tổ OBJ_NEST_B* (HP 260 / 420 / 570 / 750 × (1 + 0.12 × MRN01)); mỗi tổ thả 4 SWARM / 6 s—
Hành Lang GAUNTLETGiao Tranh CMB · Thử Lửa CHLI: 50, II_IV: 550.6RUN—cóhero vào vùng thoát r48 cuối hành lang (1.800 / 2.000 / 2.200 / 2.200 px, rộng 360 px)—
Truy Đuổi CHASEGiao Tranh CMBI: 50, II_IV: 500.7RUN50cóngười mang báu OBJ_CARRIER HP 0 trước hết 45 s chạy → thưởng nút ×2; hết 45 s → ×1 (HP 180 / 290 / 400 / 520 × (1 + 0.12 × MRN01))—
Quyết Đấu DUELTinh Anh ELTI: 65, II_IV: 700.5GATE——Tinh Anh chết (HP × 1.4 [ASSUMED]; t_target Hồi II 70 · III–IV 75) → Relic chọn 1/2—
Săn Tinh Anh HUNTTinh Anh ELTI: 65, II_IV: 700.85GATE——2 Tinh Anh chết (con 2 vào ở 40% t_target hoặc khi con 1 < 40% HP; t_target Hồi II 70 · III–IV 75) → Relic chọn 1/2—
Giải Cứu RESCUEGiải Cứu RSCI: 55, II_IV: 600.9FLAT—cókén OBJ_COCOON (HP 400, ≤ 25 sát thương/cú) HP 0 → Kẻ Thức thoát; lần đầu Hồi II mở H04—
Mini-boss MINIBOSSMini-boss MBSI: 65, II_IV: 700GATE——mini-boss chết (loại trận kịch bản của nút MBS, không phải mục tiêu Bible; t_target Hồi II 70 · III–IV 75); không ví, sân rỉ + trần phụ 30—
Boss BOSSBoss Hồi BOSI: 90, II_IV: 1050GATE——boss chết (loại trận kịch bản của nút BOS; Hồi III–IV 110 · BS_FINAL 150 · BS_TRUE 180); không ví, sân rỉ + trần phụ 40—
Ải TRIALBoss Hồi BOSI: 60, II_IV: 601STD60—sống tới hết đồng hồ ải (FINALE_TRIAL B5 60 s · SHORE_TRIAL B6 45 s) trước boss cuối; chết = chết run—

10.1 Bảng tổng

t_target theo Hồi I / II–IV (giây). "Thua mục tiêu" ≠ thua run: phòng vẫn xong, mất phần thưởng ghi ở cột. Chết = chết run (16 §8).

idTênNútt_targetobj_mult · curveThắngThua mục tiêuMESO
PURGEThanh TẩyCMB/CHL50 / 551.00 · STDdiệt N hoặc sống 60 s—không
VIGILCanh LửaCMB/CHL50 / 500.85 · FLATlò OBJ_BRAZIER còn HP ở 50 slò HP 0 → mất icon thưởng nút, phòng chạy tới 50 scó
BELLSGõ ChuôngCMB/CHL55 / 601.00 · STDgõ đủ 3 chuông—có
TIDEThuỷ TriềuCMB/CHL55 / 60sóng 0.80/1.00/1.25 · TIDEhết sóng 3 + Tinh Anh sóng 3 chết—không
NESTĐập TổCMB/CHL55 / 600.90 · STDphá 3 tổ—có
GAUNTLETHành LangCMB/CHL50 / 550.60 · RUNhero vào vùng thoát r48 cuối hành lang—có
CHASETruy ĐuổiCMB50 / 500.70 · RUNngười mang báu HP 0 trước 45 s (thưởng nút ×2) hoặc hết 45 s (×1)— (thoát = ×1)có
DUELQuyết ĐấuELT65 / 70–750.50 · GATETinh Anh chết—không (Cổng)
HUNTSăn Tinh AnhELT65 / 70–750.85 · GATE2 Tinh Anh chết—không (Cổng)
RESCUEGiải CứuRSC55 / 600.90 · FLATkén OBJ_COCOON HP 0—có
  • t_target = thời điểm trung vị đạt mục tiêu (dùng cho phase); thời lượng nút ở 16 §3.1 = t_target + ~5 s (mở màn, tan tro, hút shard); TB có trọng số mục tiêu ≈ 57 s (Hồi I) / 61 s (II–IV) ≈ Bible 55 / 60 (±20 s).
  • Phòng không trần thời gian trừ PURGE (60 s), VIGIL (50 s), TIDE (theo sóng), CHASE (45 s); các mục tiêu khác áp lực tăng theo phase + beat cho tới khi xong.
  • Thưởng: icon thưởng nút (16 §4.2) + thưởng chung (16 §3.2) + cột "Thưởng thêm" §10.2.

10.2 Luật chi tiết

PURGE — Thanh Tẩy

  • N = 150 / 170 / 180 / 175 (Hồi I/II/III/IV; B4 quái nặng hơn); MRN02 không đổi N. HUD: "DIỆT 87/150 · 0:42" (đồng hồ đếm tới 60).
  • Beat: RING SWARM ở 45%, FLANK vai vồ/lao ở 70%. Sân: mở ≥ 1200 × 900 px, ≥ 2 cổng/hướng vào.

VIGIL — Canh Lửa

  • OBJ_BRAZIER tâm sân, r20, HP 300 (Bible). Nhận sát thương cố định: đòn quái S 6 · đòn M 20 · vùng P chạm 10/lần; không DoT. 40% quái spawn có cờ objective_attacker (14 §5.1); token OBJECTIVE 6.
  • Tiếp lửa: hero ĐÁP thành công trong r80 quanh lò → lò +15 HP (≤ 300). HUD: thanh lửa trên lò + "CANH LỬA 0:31".
  • Beat: FLANK ở 30%, ARC hướng vào lò (tâm cung = lò, r220) ở 60%. Sân: tâm trống r160, 4 hướng tiếp cận, không vật cao trong r100.

BELLS — Gõ Chuông

  • 3 OBJ_BELL tam giác, cách nhau 350–450 px; sáng lần lượt (chuông kế có mũi tên viền màn). Gõ = đầy thanh "ngân" 3 / 4 / 5 / 5 nhịp (Hồi I/II/III/IV): mỗi cú trúng ≥ 1 sát thương = 1 nhịp, cú HEAVY/kỹ năng/ult = 2; cách nhau ≥ 0.25 s.
  • Chuông ngân: sóng r140 diệt mọi quái S trong vùng (không ảnh hưởng M+, không gây sát thương hero), +10 XP gốc; ngay sau đó BURST 8 SWARM tại chuông kế (ngoài r90 hero). Hồi III+: Tinh Anh canh chuông 3 (§7.1).
  • Sân: 3 ổ chuông, tầm nhìn thẳng giữa các ổ.

TIDE — Thuỷ Triều

  • 3 sóng: Hồi I 15 / 18 / 22 s · Hồi II–IV 16 / 20 / 24 s; mỗi sóng 3 s đầu là nghỉ (phase 0.30, chỉ SWARM). Callout "THUỶ TRIỀU 1/3" đầu mỗi sóng.
  • Sóng 2: SWARM 1 hướng; sóng 3: SWARM 2 hướng đối nhau + Hồi II+ 1 Tinh Anh (§7.1). Không MESO (Bible). Sân: mở ≥ 1400 × 1000.

NEST — Đập Tổ

  • 3 tổ OBJ_NEST_B*: HP 260 / 420 / 570 / 750 (× power curve 10 §2.4) × (1 + 0.12 × MRN01); không đẩy, nhận DoT; mỗi tổ thả gói 4 SWARM biome / 6 s qua NEST (con không trừ ví, tính TOF).
  • Tổ vỡ: sóng đẩy r100 (quái S), +10 XP gốc; tổ cuối Hồi III+ có Tinh Anh canh. Sân: 3 ổ tổ cách nhau ≥ 300 px, cách điểm vào của hero ≥ 250 px.

GAUNTLET — Hành Lang

  • Hành lang dài 1.800 / 2.000 / 2.200 / 2.200 px, rộng 360 px; ổ bẫy mỗi 200 px dùng hazard P của biome (§9.2), nhịp 1.6–2.4 s lệch pha, xin P_TOTAL như hazard (≤ 3 bẫy P cùng lúc trong khung); bẫy trúng cả quái.
  • MIX bỏ vai BOMB/ranged-P (không tranh token P với bẫy). SWARM đuổi sau mỗi 8 s; LINE chặn ở 30% và 60% chiều dài. Không quay đầu bị chặn (tường tro mờ sau hero mỗi 600 px).
  • Thắng: vào vùng thoát r48 → cửa tro mở, quái tan tro. Sân: khuôn hành lang có ổ bẫy + 2 hốc né mỗi 400 px.

CHASE — Truy Đuổi

  • OBJ_CARRIER (§9.2) chạy vòng waypoint carrier_path, tốc = tốc cơ bản hero đang chơi / 1.15 (≤ / 1.1, INV-17); HP 180 / 290 / 400 / 520 × (1 + 0.12 × MRN01); không đòn, không token.
  • 5 s đầu bị khoá (bất tử, đứng yên, vòng sáng ngà) rồi chạy 45 s. Hero trong 60 px → nó Lướt né 120 px (ấn tro 0.6 s tại điểm đến), hồi 6 s; cú HEAVY làm khựng 0.5 s.
  • HP 0 → rơi hũ báu: thưởng icon nút ×2; hết 45 s → biến thành tro, thưởng ×1. Sân: vòng đường ≥ 2.400 px, ≥ 8 waypoint, không ngõ cụt.

DUEL — Quyết Đấu

  • 1 Tinh Anh (ELITE ở 2 s, FAR), HP × 1.4 [ASSUMED] để lấp Cổng 65–75 s; bầy obj_mult 0.50 CURVE_GATE. Thắng: Tinh Anh chết → Relic chọn 1/2. Sân: mở ≥ 1000 × 800, 2–4 vật cao (cho A08, chặn đạn).

HUNT — Săn Tinh Anh

  • Tinh Anh 1 ở 3 s; Tinh Anh 2 ở 40% t_target HOẶC khi Tinh Anh 1 < 40% HP (cái nào trước); HP × 1.0; HEAVY 1 → chỉ 1 con windup nhắm hero; con chờ STALK cách 140–200 px. Bầy 0.85 CURVE_GATE. Sân: mở ≥ 1400 × 1000.

RESCUE — Giải Cứu

  • OBJ_COCOON tâm sân, HP 400 (Bible), mỗi cú ≤ 25 sát thương (ult/AoE không phá tức thì); mất mỗi 100 HP → "rung vỏ": bất tử 3 s + RING 12 SWARM tâm kén r160 (vẫn F2 với hero). Không quái nào đánh kén.
  • HP 0 → Kẻ Thức thoát (cảnh 2 s, World ×0.3), quái tan tro. Lần đầu ở Hồi II: mở H04 (Bible §3.4); sau đó thưởng SKILL + META (16 §3.1). Sân: ổ kén tâm, trống r120.

10.3 Ma trận co giãn mục tiêu

Tham sốHồi IIIIIIIVKhăn Tang
PURGE N150170180175—
Chuông "ngân"3455—
HP tổ260420570750× (1 + 0.12 MRN01)
HP người mang báu180290400520× (1 + 0.12 MRN01)
Dài hành lang (px)1.8002.0002.2002.200—
HP lò canh / kén300 / 400300 / 400300 / 400300 / 400không đổi (Bible)
Tinh Anh trong CMB0TIDE s3TIDE s3, BELLS, NESTnhư IIIMRN14 thêm

13Định dạng kịch bản sóng (wave_scripts.csv)

📊 Kịch bản sóng

Số kịch bản sóng theo mục tiêuSố kịch bản sóng theo mục tiêuBossBoss: 66Thanh TẩyThanh Tẩy: 44Canh LửaCanh Lửa: 44Gõ ChuôngGõ Chuông: 44Thuỷ TriềuThuỷ Triều: 44Đập TổĐập Tổ: 44Hành LangHành Lang: 44Truy ĐuổiTruy Đuổi: 44Quyết ĐấuQuyết Đấu: 44Săn Tinh AnhSăn Tinh Anh: 44Giải CứuGiải Cứu: 44Mini-bossMini-boss: 44ẢiẢi: 22
52 dòng
Kịch bảnBiomeMục tiêuNútHồi gốct_targetDòngMô tả
WS_B1_PURGE_01Đồi Mộ Tro B1Thanh Tẩy PURGEGiao Tranh CMB · Thử Lửa CHLI5013Thanh Tẩy: diệt 150 quái hoặc trụ 60 giây. Vòng vây ở 45% và đòn kẹp ở 70% thời gian.
WS_B1_VIGIL_01Đồi Mộ Tro B1Canh Lửa VIGILGiao Tranh CMB · Thử Lửa CHLI5017Canh Lửa: giữ lò lửa canh còn HP tới giây 50. ĐÁP thành công cạnh lò tiếp 15 HP.
WS_B1_BELLS_01Đồi Mộ Tro B1Gõ Chuông BELLSGiao Tranh CMB · Thử Lửa CHLI5516Gõ Chuông: gõ đủ 3 chuông; mỗi chuông cần 3 nhịp ngân và quét sạch quái nhỏ trong r140.
WS_B1_TIDE_01Đồi Mộ Tro B1Thuỷ Triều TIDEGiao Tranh CMB · Thử Lửa CHLI5521Thuỷ Triều: trụ qua 3 sóng 15 / 18 / 22 giây; mỗi sóng 3 giây đầu là nghỉ.
WS_B1_NEST_01Đồi Mộ Tro B1Đập Tổ NESTGiao Tranh CMB · Thử Lửa CHLI5515Đập Tổ: phá 3 Mộ Mở; mỗi tổ còn đứng thả 4 Thây Tro mỗi 6 giây.
WS_B1_GAUNTLET_01Đồi Mộ Tro B1Hành Lang GAUNTLETGiao Tranh CMB · Thử Lửa CHLI5014Hành Lang: băng qua 1.800 px bẫy tím tới cửa tro; bầy dồn sau lưng mỗi 10 giây.
WS_B1_CHASE_01Đồi Mộ Tro B1Truy Đuổi CHASEGiao Tranh CMBI5013Truy Đuổi: hạ Kẻ Đào Trộm Mộ trước khi hết 45 giây để nhận thưởng nút ×2.
WS_B1_DUEL_01Đồi Mộ Tro B1Quyết Đấu DUELTinh Anh ELTI6510Quyết Đấu: hạ Tinh Anh giữa bầy thưa để chọn 1 trong 2 Relic.
WS_B1_HUNT_01Đồi Mộ Tro B1Săn Tinh Anh HUNTTinh Anh ELTI6514Săn Tinh Anh: hạ 2 Tinh Anh; chỉ 1 con được vung đòn nặng vào bạn cùng lúc.
WS_B1_RESCUE_01Đồi Mộ Tro B1Giải Cứu RESCUEGiải Cứu RSCI5514Giải Cứu: phá kén Kẻ Thức HP 400; mỗi 100 HP mất kén rung vỏ và gọi vòng bầy.
WS_B2_PURGE_01Đầm Vải Liệm B2Thanh Tẩy PURGEGiao Tranh CMB · Thử Lửa CHLII5514Thanh Tẩy: diệt 170 quái hoặc trụ 60 giây.
WS_B2_VIGIL_01Đầm Vải Liệm B2Canh Lửa VIGILGiao Tranh CMB · Thử Lửa CHLII5018Canh Lửa: giữ lò lửa canh còn HP tới giây 50.
WS_B2_BELLS_01Đầm Vải Liệm B2Gõ Chuông BELLSGiao Tranh CMB · Thử Lửa CHLII6016Gõ Chuông: gõ đủ 3 chuông, mỗi chuông 4 nhịp ngân.
WS_B2_TIDE_01Đầm Vải Liệm B2Thuỷ Triều TIDEGiao Tranh CMB · Thử Lửa CHLII6022Thuỷ Triều: trụ qua 3 sóng 16 / 20 / 24 giây và hạ Tinh Anh sóng 3.
WS_B2_NEST_01Đầm Vải Liệm B2Đập Tổ NESTGiao Tranh CMB · Thử Lửa CHLII6015Đập Tổ: phá 3 Bè Liệm HP 420; tổ còn đứng thả bầy mỗi 6 giây.
WS_B2_GAUNTLET_01Đầm Vải Liệm B2Hành Lang GAUNTLETGiao Tranh CMB · Thử Lửa CHLII5513Hành Lang: băng qua 2000 px bẫy tím tới cửa tro.
WS_B2_CHASE_01Đầm Vải Liệm B2Truy Đuổi CHASEGiao Tranh CMBII5013Truy Đuổi: hạ Hồn Đèn Liệm trước khi hết 45 giây để nhận thưởng nút ×2.
WS_B2_DUEL_01Đầm Vải Liệm B2Quyết Đấu DUELTinh Anh ELTII7010Quyết Đấu: hạ Tinh Anh giữa bầy thưa để chọn 1 trong 2 Relic.
WS_B2_HUNT_01Đầm Vải Liệm B2Săn Tinh Anh HUNTTinh Anh ELTII7014Săn Tinh Anh: hạ 2 Tinh Anh; chỉ 1 con vung đòn nặng vào bạn cùng lúc.
WS_B2_RESCUE_01Đầm Vải Liệm B2Giải Cứu RESCUEGiải Cứu RSCII6014Giải Cứu: phá kén Kẻ Thức HP 400 giữa bầy.
WS_B3_PURGE_01Lò Đúc Câm B3Thanh Tẩy PURGEGiao Tranh CMB · Thử Lửa CHLIII5515Thanh Tẩy: diệt 180 quái hoặc trụ 60 giây.
WS_B3_VIGIL_01Lò Đúc Câm B3Canh Lửa VIGILGiao Tranh CMB · Thử Lửa CHLIII5018Canh Lửa: giữ lò lửa canh còn HP tới giây 50.
WS_B3_BELLS_01Lò Đúc Câm B3Gõ Chuông BELLSGiao Tranh CMB · Thử Lửa CHLIII6016Gõ Chuông: gõ đủ 3 chuông, mỗi chuông 5 nhịp ngân.
WS_B3_TIDE_01Lò Đúc Câm B3Thuỷ Triều TIDEGiao Tranh CMB · Thử Lửa CHLIII6022Thuỷ Triều: trụ qua 3 sóng 16 / 20 / 24 giây và hạ Tinh Anh sóng 3.
WS_B3_NEST_01Lò Đúc Câm B3Đập Tổ NESTGiao Tranh CMB · Thử Lửa CHLIII6016Đập Tổ: phá 3 Khuôn Nứt HP 570; tổ còn đứng thả bầy mỗi 6 giây.
WS_B3_GAUNTLET_01Lò Đúc Câm B3Hành Lang GAUNTLETGiao Tranh CMB · Thử Lửa CHLIII5513Hành Lang: băng qua 2200 px bẫy tím tới cửa tro.
WS_B3_CHASE_01Lò Đúc Câm B3Truy Đuổi CHASEGiao Tranh CMBIII5013Truy Đuổi: hạ Thây Thợ Học Việc trước khi hết 45 giây để nhận thưởng nút ×2.
WS_B3_DUEL_01Lò Đúc Câm B3Quyết Đấu DUELTinh Anh ELTIII7510Quyết Đấu: hạ Tinh Anh giữa bầy thưa để chọn 1 trong 2 Relic.
WS_B3_HUNT_01Lò Đúc Câm B3Săn Tinh Anh HUNTTinh Anh ELTIII7514Săn Tinh Anh: hạ 2 Tinh Anh; chỉ 1 con vung đòn nặng vào bạn cùng lúc.
WS_B3_RESCUE_01Lò Đúc Câm B3Giải Cứu RESCUEGiải Cứu RSCIII6014Giải Cứu: phá kén Kẻ Thức HP 400 giữa bầy.
WS_B4_PURGE_01Thành Chuông Treo B4Thanh Tẩy PURGEGiao Tranh CMB · Thử Lửa CHLIV5515Thanh Tẩy: diệt 175 quái hoặc trụ 60 giây.
WS_B4_VIGIL_01Thành Chuông Treo B4Canh Lửa VIGILGiao Tranh CMB · Thử Lửa CHLIV5018Canh Lửa: giữ lò lửa canh còn HP tới giây 50.
WS_B4_BELLS_01Thành Chuông Treo B4Gõ Chuông BELLSGiao Tranh CMB · Thử Lửa CHLIV6016Gõ Chuông: gõ đủ 3 chuông, mỗi chuông 5 nhịp ngân.
WS_B4_TIDE_01Thành Chuông Treo B4Thuỷ Triều TIDEGiao Tranh CMB · Thử Lửa CHLIV6022Thuỷ Triều: trụ qua 3 sóng 16 / 20 / 24 giây và hạ Tinh Anh sóng 3.
WS_B4_NEST_01Thành Chuông Treo B4Đập Tổ NESTGiao Tranh CMB · Thử Lửa CHLIV6016Đập Tổ: phá 3 Lồng Xích HP 750; tổ còn đứng thả bầy mỗi 6 giây.
WS_B4_GAUNTLET_01Thành Chuông Treo B4Hành Lang GAUNTLETGiao Tranh CMB · Thử Lửa CHLIV5513Hành Lang: băng qua 2200 px bẫy tím tới cửa tro.
WS_B4_CHASE_01Thành Chuông Treo B4Truy Đuổi CHASEGiao Tranh CMBIV5014Truy Đuổi: hạ Thây Đưa Thư trước khi hết 45 giây để nhận thưởng nút ×2.
WS_B4_DUEL_01Thành Chuông Treo B4Quyết Đấu DUELTinh Anh ELTIV7510Quyết Đấu: hạ Tinh Anh giữa bầy thưa để chọn 1 trong 2 Relic.
WS_B4_HUNT_01Thành Chuông Treo B4Săn Tinh Anh HUNTTinh Anh ELTIV7514Săn Tinh Anh: hạ 2 Tinh Anh; chỉ 1 con vung đòn nặng vào bạn cùng lúc.
WS_B4_RESCUE_01Thành Chuông Treo B4Giải Cứu RESCUEGiải Cứu RSCIV6014Giải Cứu: phá kén Kẻ Thức HP 400 giữa bầy.
WS_B1_MINIBOSS_01Đồi Mộ Tro B1Mini-boss MINIBOSSMini-boss MBSI655Mini-boss: hạ mini-boss trong sân tròn r200 có quái rỉ.
WS_B1_BOSS_01Đồi Mộ Tro B1Boss BOSSBoss Hồi BOSI905Boss Hồi: hạ boss trong sân tròn r220 có quái rỉ.
WS_B2_MINIBOSS_01Đầm Vải Liệm B2Mini-boss MINIBOSSMini-boss MBSII705Mini-boss: hạ mini-boss trong sân tròn r200 có quái rỉ.
WS_B2_BOSS_01Đầm Vải Liệm B2Boss BOSSBoss Hồi BOSII1055Boss Hồi: hạ boss trong sân tròn r220 có quái rỉ.
WS_B3_MINIBOSS_01Lò Đúc Câm B3Mini-boss MINIBOSSMini-boss MBSIII755Mini-boss: hạ mini-boss trong sân tròn r200 có quái rỉ.
WS_B3_BOSS_01Lò Đúc Câm B3Boss BOSSBoss Hồi BOSIII1105Boss Hồi: hạ boss trong sân tròn r220 có quái rỉ.
WS_B4_MINIBOSS_01Thành Chuông Treo B4Mini-boss MINIBOSSMini-boss MBSIV755Mini-boss: hạ mini-boss trong sân tròn r200 có quái rỉ.
WS_B4_BOSS_01Thành Chuông Treo B4Boss BOSSBoss Hồi BOSIV1105Boss Hồi: hạ boss trong sân tròn r220 có quái rỉ.
WS_B5_BOSS_01Đỉnh Chuông Câm B5Boss BOSSBoss Hồi BOSV1508Trận cuối: hạ Vua Dravos trên vành Đại Chuông.
WS_B6_BOSS_01Bờ Lặng B6Boss BOSSBoss Hồi BOSVI1806Trận ẩn: hạ Cái Lặng bên bờ không tiếng vọng.
WS_B5_TRIAL_01Đỉnh Chuông Câm B5Ải TRIALBoss Hồi BOSV6022Ải Kết: trụ 60 giây trước bầy trộn của 4 Hồi.
WS_B6_TRIAL_01Bờ Lặng B6Ải TRIALBoss Hồi BOSVI4510Ải Bờ Lặng: trụ 45 giây giữa Tiếng Câm và bầy trộn.

Thay Waves.csv demo (dòng theo giây tuyệt đối, không ngân sách). Runtime đọc từng dòng, không hard-code wave. Header-addressed, UTF-8, # = chú thích, danh sách bằng |.

CộtKiểuNghĩa
script_idWS_<biome>_<OBJ>_<nn>1 kịch bản = 1 (biome, mục tiêu) biến thể; chọn ngẫu nhiên đều trong các biến thể khớp (luồng spawn)
rowintthứ tự dòng (duy nhất trong script)
triggerT · PCT · PH · EVT giây từ đầu phòng (World clock) · PCT % t_target · PH bắt đầu pha mục tiêu (PH1…) · EV sự kiện
atsố / têngiá trị trigger: 22 · 45 · PH2 · ELITE_DEAD, BELL_1, NEST_DEAD_2, WAVE_START_3, OBJ_HP<0.5, ALIVE<40, HP_HERO<0.25
untilsố / trốnghết hiệu lực (giây/PCT cùng đơn vị trigger); trống = tới hết phòng
actionenumbảng dưới
targetidenemyId · EL_*/* · MB_* · OBJ_* · hazard id · callout key
nsốý nghĩa theo action
everyschu kỳ lặp (trống = 1 lần)
patternenum §3RING ARC như ARC nhưng tâm cung sau lưng hero; beat dồn ARC_BACK FLANK BURST TRICKLE SWARM AMBUSH GATE FAR NEST LINE PACK EDGE; hậu tố @OBJ = tâm là đạo cụ mục tiêu; SWARM p2 nhận BACK (sau hero theo trục hành lang)
p1, p2số / idtham số mẫu (§3) hoặc action
flagslistNO_MESO · ARROW (mũi tên báo F9) · NO_ELITE · OBJ_ATTACK[:pct] (cờ objective_attacker cho con của dòng; trên BUDGET = % lớp ngân sách) · CHILD (con của đạo cụ/quái sinh: không trừ ví, vẫn tính TOF + trần)
notetextghi chú thiết kế (không loc)
actionnp1p2Luật
BUDGETobj_mult ghi đèBPS multcurve id1 dòng ở T 0 + tuỳ chọn 1 dòng mỗi PH (TIDE); thiếu → mặc định §2.3/§2.5
MIXtrọng số %——đặt trọng số 1 id; các dòng MIX cùng at tạo 1 bộ (tổng 100, wave_lint kiểm); bộ mới thay bộ cũ
BEATsố contham số mẫutham số mẫutrừ ví (cho phép nợ §1); qua F1–F17; chịu F8 khoảng cách beat
ELITE1Ấn id hoặc *HP mult (mặc định 1.0)§7.1
MINI / BOSS1——§8
OBJsố đạo cụHPkhoảng cách tối thiểuđặt đạo cụ mục tiêu vào ổ sân
HAZ—chu kỳ s (≥ 1.0)bán kínhbật hazard biome; xin P_TOTAL
CALL—thời lượng s—callout (key loc), ≤ 1 cùng lúc (10 §6.5)
RESTgiây——không beat, MIX → chỉ SWARM/FLOCK
CAPtrần đếm——≤ cap_count
WIN / FAIL—biểu thức—kills>=150 | t>=60, obj_hp<=0, bells>=3, nests_dead>=3, elites_dead>=2, zone_exit, carrier_hp<=0 | t>=50, wave>=3 & wave_end & elites_alive==0
REWARDhệ sốđiều kiện—2 khi carrier_hp<=0; 0 (mất icon) khi obj_hp<=0

Luật soạn & co giãn

  • Script soạn ở Hồi gốc của biome. Dùng ngoài Hồi gốc (ải Kết, ENDLESS): n của BEAT × B_room[act] / B_room[home], làm tròn xuống, ≥ 1.
  • BEAT không vượt 30% B_obj TP/beat (wave_lint); tổng TP beat ≤ 60% tổng TP spawn dự kiến của phòng (bầy chủ yếu do lớp ngân sách).
  • Mỗi script ≥ 1 dòng WIN; mục tiêu có thua thì có FAIL; phòng R1 / PURGE / TIDE / Cổng tự gắn NO_MESO.
  • wave_lint (CI): id tồn tại trong roster biome · tổng MIX = 100 · HAZ chu kỳ ≥ 1.0 s · không beat trong 2 s đầu (F16) · beat cách ≥ 8 s · RING p1 ≥ 140, p2 ≥ 45 · đạo cụ OBJ_* có ổ trên sân · không vai BOMB trong GAUNTLET.
  • balance_calc (CI, py -3 GDD/Full/tools/balance_calc.py director --check-kpm): với MIX B4 §9.1 + B_room 170 / BPS 4.5, mô phỏng build trung vị (17) của từng hero H01–H12 → kill/phút ≥ 120 từ phút 3; hero nào < 120 → đỏ, sửa MIX/trần SHIELD trước, không buff hero. Kiểm cùng cho B1–B3 và đoạn 4 ải Kết.

14Hook thích nghi composition_bias.<axis> (Đạo Diễn Tro, MESO)

Nguồn luật: 14 §8.2 (điều kiện, độ dịch s, thưởng, báo). Doc này định nghĩa hook và ánh xạ vai → id mà Director áp.

Director.OnRoomStart(room):
  if room.flags ∋ NO_MESO: bias = none
  else bias = AshMemory.QueryCompositionBias(room_ctx)   // → { hook, s ∈ {0, .05, .10, .15}, axis_dir }
  if bias.s > 0:
     pts = bias.s × B_obj
     nguồn  = vai bầy của biome (01; B4: 02), trừ id thuộc vai khắc
     đích   = id vai khắc trong roster biome (bảng dưới), chia đều
     MIX'   = MIX đổi pts TP từ nguồn sang đích (quy đổi số con theo TP), giữ trần nhóm §2.1;
              phần không đặt được vì trần → trả về nguồn (s hiệu dụng giảm, thưởng theo s hiệu dụng)
     CALL "TRO DỒN BẦY: <vai> · +<s>% Tro Hồn" 2.5 s trước mở màn; Mắt Tro loé
  Director.OnRoomEnd(room) → AshMemory.CommitRoom(x_room, objective, s_effective)
HookThói quen (14)B1B2B3B4
composition_bias.A02_HIGHđánh xa Tinh AnhEN_B1_02EN_B2_02EN_B3_06EN_B4_03
composition_bias.A02_LOWáp sátEN_B1_05— (s = 0)EN_B3_04, EN_B3_07— (s = 0)
composition_bias.A03_HIGHLướt liên tục— (s = 0)EN_B2_05, EN_B2_04— (s = 0)EN_B4_05, EN_B4_02
composition_bias.A05_HIGHgom cụm diệt AoEEN_B1_04, EN_B1_03EN_B2_03, EN_B2_05— (s = 0)EN_B4_06, EN_B4_05
composition_bias.A06_HIGHđạn/némEN_B1_04, EN_B1_07EN_B2_06, EN_B2_05— (s = 0)EN_B4_06
composition_bias.A08_HIGHnúp vật cao— (s = 0)— (s = 0)EN_B3_04, EN_B3_03EN_B4_03
composition_bias.A10_LOWbỏ mặc quái xa/hỗ trợEN_B1_03, EN_B1_06EN_B2_03EN_B3_02EN_B4_07
composition_bias.none—————
  • B4: nguồn = EN_B4_02 (vai bầy B4); khi EN_B4_02 là đích (A03) → nguồn = EN_B4_04 theo MIX. EN_B4_01 (khiên chính diện ×0.15) không bao giờ là đích của hook nào (giữ trần 24, tránh bầy miễn đòn với hero PROJ/AREA).
  • Ải Kết/B6: roster trộn → đích = hợp các cột B1–B4 có trong MIX đoạn hiện tại.
  • Debug: director.force_bias <hook> <s> (chỉ bản dev, 14 §16); telemetry ash_spawn_shift {room, hook, s_req, s_eff, pts}.
  • Hook là điểm nối duy nhất giữa Director và Tro Nhớ cho thành phần spawn; Director không đọc PSP trực tiếp.

15Kịch bản mẫu Hồi I (B1), 1 cho mỗi mục tiêu

Chung: B_room 130, BPS_act 3.4, t_target theo §10.1. Beat từ EV vi phạm F8 → xếp hàng tới khi hợp lệ (≤ 6 s), quá hạn → bỏ. Header CSV:

script_id,row,trigger,at,until,action,target,n,every,pattern,p1,p2,flags,note

Bộ MIX chuẩn B1 (MIX_B1_STD, viết tắt trong các script dưới = 7 dòng MIX 70/8/6/4/5/3/4 cho EN_B1_01…07, §9.1).

13.1 Thanh Tẩy: diệt 150 quái hoặc trụ 60 giây. Vòng vây ở 45% và đòn kẹp ở 70% thời gian. WS_B1_PURGE_01 — Thanh Tẩy (R2–R5)

WS_B1_PURGE_01,1,T,0,,BUDGET,,1.00,,,1.0,CURVE_STD,NO_MESO,B_obj 130
WS_B1_PURGE_01,2,T,0,,MIX,EN_B1_01,70,,,,,,MIX_B1_STD (dòng 2-8)
WS_B1_PURGE_01,3,T,0,,MIX,EN_B1_02,8,,,,,,
WS_B1_PURGE_01,4,T,0,,MIX,EN_B1_03,6,,,,,,
WS_B1_PURGE_01,5,T,0,,MIX,EN_B1_04,4,,,,,,
WS_B1_PURGE_01,6,T,0,,MIX,EN_B1_05,5,,,,,,
WS_B1_PURGE_01,7,T,0,,MIX,EN_B1_06,3,,,,,,
WS_B1_PURGE_01,8,T,0,,MIX,EN_B1_07,4,,,,,,
WS_B1_PURGE_01,9,T,0,,CALL,OBJ_PURGE_START,,,,2,,,"THANH TẨY: diệt 150"
WS_B1_PURGE_01,10,T,0,,HAZ,HZ_B1_FLOOR_COLLAPSE,,,,12,40,,chỉ sân có cờ sàn sụp
WS_B1_PURGE_01,11,PCT,45,,BEAT,EN_B1_01,40,,RING,160,60,ARROW,vòng vây 40 Thây Tro = 20 TP
WS_B1_PURGE_01,12,PCT,70,,BEAT,EN_B1_02,8,,FLANK,0,,ARROW,kẹp 2×4 Quỷ Rãnh = 8 TP
WS_B1_PURGE_01,13,T,0,,WIN,,,,,kills>=150 | t>=60,,,
  • Phòng R1: thay dòng 2–8 bằng MIX 80/12/8 (EN_B1_01/02/03), bỏ dòng 10, N giữ 150.

13.2 Canh Lửa: giữ lò lửa canh còn HP tới giây 50. ĐÁP thành công cạnh lò tiếp 15 HP. WS_B1_VIGIL_01 — Canh Lửa

WS_B1_VIGIL_01,1,T,0,,BUDGET,,0.85,,,1.0,CURVE_FLAT,OBJ_ATTACK:40,B_obj round5(110.5)=110
WS_B1_VIGIL_01,2,T,0,,MIX,EN_B1_01,72,,,,,,
WS_B1_VIGIL_01,3,T,0,,MIX,EN_B1_02,10,,,,,,
WS_B1_VIGIL_01,4,T,0,,MIX,EN_B1_03,6,,,,,,
WS_B1_VIGIL_01,5,T,0,,MIX,EN_B1_04,4,,,,,,
WS_B1_VIGIL_01,6,T,0,,MIX,EN_B1_05,4,,,,,,
WS_B1_VIGIL_01,7,T,0,,MIX,EN_B1_06,2,,,,,,
WS_B1_VIGIL_01,8,T,0,,MIX,EN_B1_07,2,,,,,,
WS_B1_VIGIL_01,9,T,0,,OBJ,OBJ_BRAZIER,1,,,300,0,,tâm sân
WS_B1_VIGIL_01,10,T,0,,CALL,OBJ_VIGIL_START,,,,2,,,"CANH LỬA: giữ lò 50 giây"
WS_B1_VIGIL_01,11,PCT,30,,BEAT,EN_B1_01,24,,FLANK,0,,ARROW|OBJ_ATTACK,
WS_B1_VIGIL_01,12,PCT,60,,BEAT,EN_B1_01,30,,ARC@OBJ,220,120,OBJ_ATTACK,dồn vào lò (15 TP)
WS_B1_VIGIL_01,13,PCT,60,,BEAT,EN_B1_05,3,,ARC@OBJ,240,90,,Xác Trương nhắm lò: nổ P trúng lò 10
WS_B1_VIGIL_01,14,EV,OBJ_HP<0.5,,CALL,OBJ_VIGIL_LOW,,,,2,,,"LỬA SẮP TẮT"
WS_B1_VIGIL_01,15,T,0,,WIN,,,,,t>=50 & obj_hp>0,,,
WS_B1_VIGIL_01,16,T,0,,FAIL,,,,,obj_hp<=0,,,phòng chạy tiếp tới 50 s
WS_B1_VIGIL_01,17,T,0,,REWARD,,0,,,obj_hp<=0,,,mất icon thưởng nút

13.3 Gõ Chuông: gõ đủ 3 chuông; mỗi chuông cần 3 nhịp ngân và quét sạch quái nhỏ trong r140. WS_B1_BELLS_01 — Gõ Chuông

WS_B1_BELLS_01,1,T,0,,BUDGET,,1.00,,,1.0,CURVE_STD,,
WS_B1_BELLS_01,2,T,0,,MIX,EN_B1_01,70,,,,,,MIX_B1_STD (dòng 2-8)
WS_B1_BELLS_01,9,T,0,,OBJ,OBJ_BELL,3,,,3,380,,ngân 3 nhịp; cách 380 px
WS_B1_BELLS_01,10,T,0,,CALL,OBJ_BELLS_START,,,,2,,,"GÕ CHUÔNG: 0/3"
WS_B1_BELLS_01,11,EV,BELL_1,,BEAT,EN_B1_01,8,,BURST,BELL_2,,,canh chuông 2
WS_B1_BELLS_01,12,EV,BELL_1,,BEAT,EN_B1_07,2,,AMBUSH,1.0,BELL_2,,Hồn Khói phục quanh chuông 2
WS_B1_BELLS_01,13,EV,BELL_2,,BEAT,EN_B1_01,8,,BURST,BELL_3,,,
WS_B1_BELLS_01,14,EV,BELL_2,,BEAT,EN_B1_01,36,,RING,160,60,ARROW,
WS_B1_BELLS_01,15,PCT,75,,BEAT,EN_B1_04,3,,ARC,200,120,,Khiên Mộ chặn hướng chuông 3
WS_B1_BELLS_01,16,T,0,,WIN,,,,,bells>=3,,,
  • Dòng 11+12 cùng EV BELL_1 = 1 beat (F8). Dòng 13 (dồn) và 14 (vây) cùng trigger = 1 beat.

13.4 Thuỷ Triều: trụ qua 3 sóng 15 / 18 / 22 giây; mỗi sóng 3 giây đầu là nghỉ. WS_B1_TIDE_01 — Thuỷ Triều (15 / 18 / 22 s)

WS_B1_TIDE_01,1,T,0,,BUDGET,,0.80,,,1.0,CURVE_TIDE,NO_MESO,sóng 1: B_obj 105
WS_B1_TIDE_01,2,T,0,,MIX,EN_B1_01,80,,,,,,
WS_B1_TIDE_01,3,T,0,,MIX,EN_B1_02,10,,,,,,
WS_B1_TIDE_01,4,T,0,,MIX,EN_B1_03,5,,,,,,
WS_B1_TIDE_01,5,T,0,,MIX,EN_B1_05,5,,,,,,
WS_B1_TIDE_01,6,PH,PH1,,CALL,OBJ_TIDE_WAVE,,,,2,1,,"THUỶ TRIỀU 1/3"
WS_B1_TIDE_01,7,PH,PH2,,BUDGET,,1.00,,,1.1,CURVE_TIDE,NO_MESO,PH2 = T 15; B_obj 130
WS_B1_TIDE_01,8,PH,PH2,,CALL,OBJ_TIDE_WAVE,,,,2,2,,
WS_B1_TIDE_01,9,PH,PH2,,BEAT,EN_B1_01,48,,SWARM,6,0,ARROW,dòng 48 từ Bắc (24 TP)
WS_B1_TIDE_01,10,PH,PH3,,BUDGET,,1.25,,,1.2,CURVE_TIDE,NO_MESO,PH3 = T 33; B_obj 165
WS_B1_TIDE_01,11,PH,PH3,,MIX,EN_B1_01,70,,,,,,MIX_B1_STD (dòng 11-17)
WS_B1_TIDE_01,18,PH,PH3,,CALL,OBJ_TIDE_WAVE,,,,2,3,,
WS_B1_TIDE_01,19,PH,PH3,,BEAT,EN_B1_01,30,,SWARM,6,90,ARROW,2 hướng đối nhau = 1 beat (30 TP)
WS_B1_TIDE_01,20,PH,PH3,,BEAT,EN_B1_01,30,,SWARM,6,270,ARROW,
WS_B1_TIDE_01,21,T,0,,WIN,,,,,wave>=3 & wave_end & elites_alive==0,,,Hồi I không Tinh Anh sóng 3
  • Mốc pha: PH1 = T 0, PH2 = T 15, PH3 = T 33, hết sóng 3 = T 55. Mỗi sóng 3 s đầu phase 0.30.

13.5 Đập Tổ: phá 3 Mộ Mở; mỗi tổ còn đứng thả 4 Thây Tro mỗi 6 giây. WS_B1_NEST_01 — Đập Tổ

WS_B1_NEST_01,1,T,0,,BUDGET,,0.90,,,1.0,CURVE_STD,,B_obj round5(117)=115
WS_B1_NEST_01,2,T,0,,MIX,EN_B1_01,70,,,,,,MIX_B1_STD (dòng 2-8)
WS_B1_NEST_01,9,T,0,,OBJ,OBJ_NEST_B1,3,,,260,300,,3 Mộ Mở HP 260; cách ≥ 300 px
WS_B1_NEST_01,10,T,0,,BEAT,EN_B1_01,4,6,NEST@OBJ,,,CHILD,mỗi tổ còn sống: 4 Thây Tro/6 s
WS_B1_NEST_01,11,T,0,,CALL,OBJ_NEST_START,,,,2,,,"ĐẬP TỔ: 0/3"
WS_B1_NEST_01,12,PCT,50,,BEAT,EN_B1_05,4,,FLANK,0,,ARROW,Xác Trương kẹp
WS_B1_NEST_01,13,EV,NEST_DEAD_1,,BEAT,EN_B1_07,3,,AMBUSH,1.0,NEAREST,,
WS_B1_NEST_01,14,EV,NEST_DEAD_2,,BEAT,EN_B1_01,36,,RING,160,60,ARROW,
WS_B1_NEST_01,15,T,0,,WIN,,,,,nests_dead>=3,,,
  • Dòng 10 là sinh của đạo cụ (CHILD), không tính F8.

13.6 Hành Lang: băng qua 1.800 px bẫy tím tới cửa tro; bầy dồn sau lưng mỗi 10 giây. WS_B1_GAUNTLET_01 — Hành Lang (1.800 px, t_target 50)

WS_B1_GAUNTLET_01,1,T,0,,BUDGET,,0.60,,,1.0,CURVE_RUN,,B_obj 80
WS_B1_GAUNTLET_01,2,T,0,,MIX,EN_B1_01,76,,,,,,không vai BOMB (EN_B1_05) / tên cháy (EN_B1_06)
WS_B1_GAUNTLET_01,3,T,0,,MIX,EN_B1_02,12,,,,,,
WS_B1_GAUNTLET_01,4,T,0,,MIX,EN_B1_03,4,,,,,,
WS_B1_GAUNTLET_01,5,T,0,,MIX,EN_B1_04,4,,,,,,
WS_B1_GAUNTLET_01,6,T,0,,MIX,EN_B1_07,4,,,,,,
WS_B1_GAUNTLET_01,7,T,0,,HAZ,HZ_B1_FLOOR_COLLAPSE,,,,2.0,40,,ổ bẫy mỗi 200 px; lệch pha; xin P_TOTAL
WS_B1_GAUNTLET_01,8,T,0,,CALL,OBJ_GAUNTLET_START,,,,2,,,"HÀNH LANG: tới cửa tro"
WS_B1_GAUNTLET_01,9,T,4,,BEAT,EN_B1_01,16,10,SWARM,4,BACK,,dồn sau lưng mỗi 10 s (T 4/14/24/34/44)
WS_B1_GAUNTLET_01,10,T,19,,BEAT,EN_B1_04,4,,LINE,260,48,,hàng Khiên Mộ chừa khe 48 px
WS_B1_GAUNTLET_01,11,T,27,,BEAT,EN_B1_07,2,,AMBUSH,1.0,NEAREST,,
WS_B1_GAUNTLET_01,12,T,39,,BEAT,EN_B1_01,14,,LINE,260,48,,
WS_B1_GAUNTLET_01,13,T,39,,BEAT,EN_B1_04,2,,LINE,280,48,,
WS_B1_GAUNTLET_01,14,T,0,,WIN,,,,,zone_exit,,,
  • Kiểm F8: dồn T 4/14/24/34/44 · LINE T 19 (cách 5 s) · vây T 27 · LINE T 39 (cách 5 s) ✓.

13.7 Truy Đuổi: hạ Kẻ Đào Trộm Mộ trước khi hết 45 giây để nhận thưởng nút ×2. WS_B1_CHASE_01 — Truy Đuổi

WS_B1_CHASE_01,1,T,0,,BUDGET,,0.70,,,1.0,CURVE_RUN,,B_obj 90
WS_B1_CHASE_01,2,T,0,,MIX,EN_B1_01,72,,,,,,
WS_B1_CHASE_01,3,T,0,,MIX,EN_B1_02,14,,,,,,
WS_B1_CHASE_01,4,T,0,,MIX,EN_B1_03,4,,,,,,
WS_B1_CHASE_01,5,T,0,,MIX,EN_B1_04,4,,,,,,
WS_B1_CHASE_01,6,T,0,,MIX,EN_B1_07,6,,,,,,
WS_B1_CHASE_01,7,T,0,,OBJ,OBJ_CARRIER,1,,,180,0,,Kẻ Đào Trộm Mộ; khoá 5 s rồi chạy 45 s
WS_B1_CHASE_01,8,T,0,,CALL,OBJ_CHASE_START,,,,2,,,"TRUY ĐUỔI: bắt kẻ trộm tro"
WS_B1_CHASE_01,9,T,14,,BEAT,EN_B1_02,6,,FLANK,0,,ARROW,
WS_B1_CHASE_01,10,T,26,,BEAT,EN_B1_07,2,,AMBUSH,1.0,NEAREST,,
WS_B1_CHASE_01,11,T,38,,BEAT,EN_B1_01,30,,RING,170,90,ARROW,khe 90° để còn đuổi
WS_B1_CHASE_01,12,T,0,,WIN,,,,,carrier_hp<=0 | t>=50,,,
WS_B1_CHASE_01,13,T,0,,REWARD,,2,,,carrier_hp<=0,,,thưởng icon ×2

13.8 Quyết Đấu: hạ Tinh Anh giữa bầy thưa để chọn 1 trong 2 Relic. WS_B1_DUEL_01 — Quyết Đấu (ELT, t_target 65)

WS_B1_DUEL_01,1,T,0,,BUDGET,,0.50,,,1.0,CURVE_GATE,NO_MESO,B_obj 65
WS_B1_DUEL_01,2,T,0,,MIX,EN_B1_01,80,,,,,,
WS_B1_DUEL_01,3,T,0,,MIX,EN_B1_02,10,,,,,,
WS_B1_DUEL_01,4,T,0,,MIX,EN_B1_03,6,,,,,,
WS_B1_DUEL_01,5,T,0,,MIX,EN_B1_05,4,,,,,,
WS_B1_DUEL_01,6,T,0,,CALL,OBJ_DUEL_START,,,,2,,,"QUYẾT ĐẤU"
WS_B1_DUEL_01,7,T,2,,ELITE,EL_B1_01,1,,FAR,*,1.4,,Đồ Tể Mộ; Ấn nhóm an toàn Hồi I
WS_B1_DUEL_01,8,EV,ELITE_HP<0.5,,BEAT,EN_B1_01,24,,RING,170,60,ARROW,ép khi Tinh Anh nửa máu
WS_B1_DUEL_01,9,PCT,60,,BEAT,EN_B1_03,3,,EDGE,,,,3 Thầy Bùa: đạn Y phản được
WS_B1_DUEL_01,10,T,0,,WIN,,,,,elites_dead>=1,,,Relic chọn 1/2

13.9 Săn Tinh Anh: hạ 2 Tinh Anh; chỉ 1 con được vung đòn nặng vào bạn cùng lúc. WS_B1_HUNT_01 — Săn Tinh Anh (ELT, t_target 65)

WS_B1_HUNT_01,1,T,0,,BUDGET,,0.85,,,1.0,CURVE_GATE,NO_MESO,B_obj 110
WS_B1_HUNT_01,2,T,0,,MIX,EN_B1_01,70,,,,,,MIX_B1_STD (dòng 2-8)
WS_B1_HUNT_01,9,T,0,,CALL,OBJ_HUNT_START,,,,2,,,"SĂN TINH ANH: 0/2"
WS_B1_HUNT_01,10,T,3,,ELITE,EL_B1_01,1,,FAR,*,1.0,,
WS_B1_HUNT_01,11,PCT,25,,BEAT,EN_B1_01,36,,RING,160,60,ARROW,
WS_B1_HUNT_01,12,EV,ELITE1_HP<0.4 | PCT>=40,,ELITE,EL_B1_02,1,,FAR,*,1.0,,Kẻ Tụng Tro: hồi sinh xác bầy
WS_B1_HUNT_01,13,PCT,70,,BEAT,EN_B1_02,8,,FLANK,0,,ARROW,
WS_B1_HUNT_01,14,T,0,,WIN,,,,,elites_dead>=2,,,Relic chọn 1/2
  • HEAVY 1: EL_B1_02 vào khi EL_B1_01 còn sống → chờ STALK tới khi token rảnh; Tụng Hồi (2.5 s) là đòn hỗ trợ không nhắm hero → không cần HEAVY.

13.10 Giải Cứu: phá kén Kẻ Thức HP 400; mỗi 100 HP mất kén rung vỏ và gọi vòng bầy. WS_B1_RESCUE_01 — Giải Cứu

WS_B1_RESCUE_01,1,T,0,,BUDGET,,0.90,,,1.0,CURVE_FLAT,,B_obj 115
WS_B1_RESCUE_01,2,T,0,,MIX,EN_B1_01,70,,,,,,MIX_B1_STD (dòng 2-8)
WS_B1_RESCUE_01,9,T,0,,OBJ,OBJ_COCOON,1,,,400,0,,≤ 25 sát thương/cú; rung vỏ mỗi 100 HP
WS_B1_RESCUE_01,10,T,0,,CALL,OBJ_RESCUE_START,,,,2,,,"GIẢI CỨU: phá kén"
WS_B1_RESCUE_01,11,EV,COCOON_SHELL,,BEAT,EN_B1_01,12,,RING@OBJ,160,60,,mỗi lần rung vỏ (3 lần); bất tử 3 s
WS_B1_RESCUE_01,12,PCT,40,,BEAT,EN_B1_07,2,,AMBUSH,1.0,NEAREST,,
WS_B1_RESCUE_01,13,PCT,65,,BEAT,EN_B1_02,8,,FLANK,0,,ARROW,
WS_B1_RESCUE_01,14,T,0,,WIN,,,,,obj_hp<=0,,,Hồi I: SKILL + META
  • RING@OBJ 12 con (6 TP) là beat dồn nhỏ quanh kén; F2 với hero vẫn áp (con nào < r90 hero → dời).

16Telemetry, debug, núm chỉnh

📊 Núm chỉnh Director (tuning.director)

69 dòng
NúmGiá trịĐơn vịGhi chú
tick_s0.25sWorld clock; draft ×0.15 làm chậm cả Director
wallet_cap0.5× B_objwallet ≤ 0.5 · B_obj
wallet_debt_min−0.3× B_objbeat được nợ tới −0.3 · B_obj
opening_fill0.45× B_objví mở màn, rải trong 2 s
opening_spread_s2s—
b_roomI: 130, II: 145, III: 160, IV: 170, V: 180, VI: 150TPB_obj = round5(B_room × obj_mult)
bpsI: 3.4, II: 3.8, III: 4.2, IV: 4.5, V: 5, VI: 4.4TP/s= CRV_bps_act
obj_multPURGE: 1, VIGIL: 0.85, BELLS: 1, TIDE: 0.8/1/1.25, NEST: 0.9, GAUNTLET: 0.6, CHASE: 0.7, DUEL: 0.5, HUNT: 0.85, RESCUE: 0.9×TIDE theo sóng 1/2/3
minute_ramp0.04×/phútBPS × (1 + 0.04 × min(m_act, 6))
minute_ramp_max6phút—
mrn02_per_rank0.15×/bậcBPS + density × (1 + 0.15 × MRN02)
mut09_mult1.2×MUT09 Bầy Liền BPS + density
endless_density_per_loop0.05×/vòngtrần 1.25
endless_density_cap1.25×—
perf_t2_density0.9×PerfGovernor bậc 2
cap_count250quáiDeck preset 180
group_sizeSWARM: 6/12, FLOCK: 6/12, LUNGE: 2/4, RANGED: 1/2, BOMB: 1/2, AMBUSH: 1/2, ROLL: 1/2, GRAPPLE: 1/2, CONE: 1/2, SHIELD_B1: 1/3, SHIELD_B4: 2/4, STATIC: 1/1, SUPPORT: 1/1, NEST: 1/1, RETAL: 1/1, CHARGE: 1/1, TETHER: 2/2quáiTETHER = 1 cặp; SHIELD_B4 = EN_B4_01 hàng ngang 2–4; EN_B4_02 (vai bầy B4) dùng SWARM 6–12. 2026-11-07 - doc 15 Q16: SHIELD_B4 [4, 8] → [2, 4]
same_id_groups_max2nhóm liên tiếptrừ SWARM/FLOCK
group_capsSWARM: None, LUNGE: 16, RANGED: 10, SHIELD: 10, SHIELD_B4: 24, BOMB: 8, AMBUSH: 6, STATIC: 4, FLOCK: 40, NEST: 2, SUPPORT: 3, ROLL: 6, CHARGE: 6, GRAPPLE: 6, RETAL: 8, CONE: 8, TETHER: 3, DRIFT: 12, ELITE: 2, MINI: 1, BOSS: 1quái sống/phòngSHIELD = B1 (EN_B1_04) 10; SHIELD_B4 = EN_B4_01 24 (MIX 12%, không là đích composition_bias); SWARM null = không trần (gồm EN_B4_02 vai bầy B4, MIX 63%, sân rỉ boss/mini); FLOCK = EN_B2_05 40; ELITE HUNT/MRN14 3; TETHER = cặp. 2026-11-07 - doc 15 Q16: bỏ SHIELD B4 70 / FLOCK B4 60
reserve_tpELITE: 12, MINI: 30, BOSS: 60TPgiữ chỗ trong TOF
marked_tp_mult1.5×quái mang Ấn (MRN05)
target_alive150/250quáiđích người chơi thấy ở đỉnh phòng
pattern_defaultsPACK_r: 40, PACK_stagger_s: 0.3, RING_r: 160, RING_r_min: 140, RING_gap: 60, RING_gap_min: 45, ARC_r: 200, ARC_deg: 120, TRICKLE_period: 6.5, TRICKLE_n: 2, SWARM_s: 6, AMBUSH_warn_s: 1, AMBUSH_r: 120/220, FAR_min: 220, FAR_grid: 64, LINE_dist: 260, LINE_gap: 48, BURST_s: 0.5, FLANK_sync_s: 0.3, EDGE_fwd_pct: 60, EDGE_fwd_cone: 60px · s · °—
offscreen_margin32pxngoài khung + 32 px (demo spawn_margin 30)
spawn_mark_s0.6sF1; AMBUSH 1.0; tái tụ EN_B4_06 0.8
spawn_safe_radius90pxF2; RING ≥ 140; AMBUSH ≥ 120
spawn_no_windup_s0.8sF3
summon_vortex_s1sF4
ring_wall_r160pxkhông RING khi hero trong 160 px của tường (dời 1 s)
place_retries6điểmF7
beat_gap_s8sF8 beat vây
push_gap_s4sF8 beat dồn
post_surround_swarm_only_s4sF8
offscreen_arrow_s0.8sF9
elite_breather6sF11 (demo)
p_overlap0.3/60/80s · % · pxF12 P mới trì 0.3 s nếu P khác > 60% đầy trong r80 (demo violet_overlap_radius)
boss_windup_guard_s0.6sF13
post_dash_block45/200/0.5° · px · sF14
room_start_no_windup_s2sF16
leash_px600px15 §5.2 (14 §16.2: 900 — open issue)
leash_s3shoàn 100% TP
perf_enter_ms16.6msp95 trong 2 s (bậc 3: 3 s)
perf_exit_ms14msp95 trong 5 s
perf_t1death_vfx_frame: 6, particles_mult: 0.5—bậc 1
perf_t2_far_ai_hz5Hzbậc 2
perf_t3_cap180quáibậc 3
death_vfx_queue_frames3khung—
elite_spawn_min_dist220pxFAR
elite_duel_hp_mult1.4×ELT DUEL
elite_room_hp_mult0.8×Tinh Anh trong CMB/CHL, không Relic
chl_elite_at0.4× t_targetCHL biến thể ASH
mrn14_every_rooms3phòng1 Tinh Anh ở 30% thời lượng
mrn14_at0.3× t—
mrn05_marked_pct10%quái thường từ Hồi II mang 1 Ấn an toàn
em04_call6/8quái · sEM04 Gọi Bầy 6/8 s
em_poolI: EM01/EM02/EM03/EM07/EM11, II: EM01/EM02/EM03/EM04/EM05/EM06/EM07/EM08/EM09/EM10/EM11/EM13/EM14, III: EM01–EM16ẤnIII–IV, Kết: EM01–EM16
arena_rMBS: 200, BOS: 220, B5: 260, B6: 240pxMBS/B5/B6 [ASSUMED]
arena_close_px120pxhero tới tâm − 120 px → cửa đóng
feeder_every_s6.5sTRICKLE sân rỉ
feeder_n2quái≈ 6.2/20 s
adds_capMBS: 30, BOS: 40, FINAL: 40quái—
phase_feeder_pause_s3sđổi pha
phase_push_r160px—
t_targetPURGE: 50/55, VIGIL: 50/50, BELLS: 55/60, TIDE: 55/60, NEST: 55/60, GAUNTLET: 50/55, CHASE: 50/50, DUEL: 65/70, HUNT: 65/70, RESCUE: 55/60sHồi I / II–IV (DUEL/HUNT II–IV 70–75)
objective_capsPURGE_s: 60, VIGIL_s: 50, CHASE_s: 45s—
kill_per_min0_10s: 90, 10_30s: 180, 30s_end: 200, floor_from_15s: 120kill/phút~600 kill/Hồi
raw_threat_capI: 15, II: 16, III: 17, IV: 18, V: 19% HP_hero_ref/svượt → hoãn token
gate_aliveDUEL: 60, HUNT: 140quáiadd boss/mini ≤ 40
tp_classswarm: 0.5, lunger: 1, ranged: 1.5, shield: 2, support: 3, nest: 4TPTP trung bình theo lớp, cùng thang TP từng id (15 §2.1, 0.5–4.0) mà director tiêu; Tinh Anh/Mini/Boss không có TP lớp, giữ chỗ bằng director.reserve_tp

Sự kiệnField
room_startrun_id, act, node, objective, script_id, B_obj, density_mult, bias hook + s
room_endt_room, kills, kills_by_id{}, max_alive, avg_alive, tof_avg, beats_fired, beats_dropped, obj_result (win/fail/×2), hp_lost_pct
beatscript_id, row, pattern, n_req, n_placed, t
perf_tierroom, tier, alive, fx_active, p95
ash_spawn_shiftroom, hook, s_req, s_eff, pts
  • KPI: kill/phút ≥ 120 từ phút 3 mỗi Hồi (Bible P2) · max_alive 150–250 ở đỉnh phòng · trúng đòn tím < 30% · hp_lost_pct trung vị/phòng 25–40% · thời lượng phòng trung vị trong 16 §6 ± 20 s.
  • Debug (bản dev): overlay TOF/target/ví/BPS + vòng spawn + ô cấm r90 · director.force_script <id> · director.force_bias <hook> <s> · director.freeze · F10 demo (+150 quái) giữ.
  • Núm director.csv: B_room_*, BPS_*, obj_mult_*, minute_ramp 0.04, minute_ramp_max 6, wallet_cap 0.5, opening_fill 0.45, beat_gap_s 8, push_gap_s 4, leash_px 600, leash_s 3, feeder_every_s 6.5, feeder_n 2.

17Quy tắc cho dev/AI

  • Không hard-code wave: mọi phòng chạy từ wave_scripts.csv + director.csv; thêm phòng = thêm script, wave_lint phải xanh.
  • Director chỉ spawn qua SpawnPlanner.Place → luật F1–F17 luôn chạy; không đường tắt "spawn tại chỗ" cho bất kỳ hệ nào (Ấn, mutator, Khăn Tang, boss triệu hồi dùng cùng API với cờ CHILD/vortex).
  • TP chỉ ở bảng §2.1; quái mới hậu 1.0 phải có TP + nhóm trần trước khi vào MIX.
  • Quái có miễn/giảm sát thương theo hướng (khiên chính diện) không bao giờ là vai bầy, trần sống ≤ 24/phòng, không là đích composition_bias; đổi MIX phải qua balance_calc director --check-kpm (≥ 120 kill/phút mọi hero).
  • Không chạm token, tell, windup, sát thương từ Director; Director chỉ quyết ai, bao nhiêu, ở đâu, khi nào.
  • Tro Nhớ chỉ đổi thành phần qua composition_bias.<axis> (§12), trần s 15%, không ở phòng NO_MESO; Director không đọc PSP.
  • Trần 250 (Deck 180) là cứng; PerfGovernor không bao giờ hạ tell/va chạm/ấn spawn/mũi tên báo.
  • Mục tiêu chỉ 10 id Bible (PURGE VIGIL BELLS TIDE NEST GAUNTLET CHASE DUEL HUNT RESCUE); thêm loại = mục DEC-.
  • Đạo cụ mục tiêu dùng id OBJ_<NAME>, không vào roster kẻ địch, không có kit đòn, không tell.
  • Số [ASSUMED] chỉnh qua CSV; KPI §14 lệch → chỉnh B_room/BPS/obj_mult trước, không đổi luật công bằng.
  • Tên UI tiếng Việt có dấu; không tên/thuật ngữ của sản phẩm có thật.

18Quyết định đã chốt

QQuyết địnhLý do
Q1 Mô hình2 lớp: ngân sách TP (ví + target theo phase) + beat kịch bản trừ ví (nợ ≤ 30%)demo theo giây không co giãn theo Hồi/Khăn Tang/hero; ngân sách giữ mật độ, beat tạo khoảnh khắc
Q2 TPbầy 0.5 · thường 1.0–2.5 · hỗ trợ 3 · tổ 4; M/L/XL giữ chỗ 12/30/60sống ~171–175 ở B_room, đỉnh 250 với TIDE/MRN02 (khoá "150–250 trên màn")
Q3 B_room130 / 145 / 160 / 170, ải Kết 180, B6 150TP TB biome 0.76–0.93 → số sống gần đều qua Hồi (B4 ~187), độ khó tăng theo vai
Q4 BPS3.4 / 3.8 / 4.2 / 4.5 (+4%/phút trong Hồi, trần 6)kill ~150–180/phòng → ~600 kill/Hồi (Bible §2.1), ≥ 120 kill/phút
Q5 Số ví dụ của 142026-11-07 — 14 §8.2/§13 dùng "ngân sách 100/120 điểm" làm minh hoạ; số thật = B_obj §2.3 (VIGIL Hồi II 125, NEST Hồi III 145); công thức s · B không đổidoc chạy song song; giữ 1 nguồn số
Q6 Không trần thời gianchỉ PURGE (60 s), VIGIL (50 s), TIDE (sóng), CHASE (45 s) có đồng hồ; còn lại áp lực tăng tới khi xongkhông "hết giờ = thua" ngoài Bible; giữ P1 tốc độ
Q7 Thua mục tiêuchỉ VIGIL có thua (mất icon thưởng nút); CHASE thoát = thưởng ×1Bible không định nghĩa thua phòng; thua run chỉ khi chết
Q8 Vật mục tiêusát thương cố định theo hạng (S 6, M 20, P 10), lò HP 300 / kén HP 400 không co giãnBible ghi HP cố định; số cố định → không lệch theo Hồi/Khăn Tang
Q9 OBJ_*2026-11-07 — tiền tố dữ liệu OBJ_<NAME> cho đạo cụ mục tiêu (lò, chuông, tổ, kén, người mang báu)Bible §11 không có id đạo cụ; không phải thực thể roster, không đổi số lượng khoá
Q10 WS_2026-11-07 — tiền tố dữ liệu WS_<biome>_<OBJ>_<nn> cho dòng kịch bản sóngid dữ liệu nội bộ, không hiển thị
Q11 Leash600 px / 3 s, hoàn TPkhung 480 px nhỏ hơn demo (640)
Q12 F8beat vây ≥ 8 s, beat dồn ≥ 4 s"dày nhưng luôn có lối thoát" (demo §1)
Q13 PerfGovernor3 bậc theo p95; bậc 3 = trần 180Bible §10.4 dự phòng preset Deck 180
Q14 Sân bossrỉ 2 con/6.5 s (≈ 6.2/20 s), trần phụ 30/40Bible "≥ 6 quái S/20 s"
Q15 DUEL HP × 1.4 [ASSUMED]lấp Cổng 65–75 s khi bầy chỉ 0.50Tinh Anh TTK 25–45 s (10 §2.4)
Q16 Vai bầy B42026-11-07 — vai bầy B4 = EN_B4_02 (MIX 63%, nhóm SWARM, sân rỉ boss/mini); EN_B4_01 khiên MIX 12%, trần sống 24, hàng 2–4, không là đích composition_bias (A05 → EN_B4_06 + EN_B4_05, A06 → EN_B4_06); MUT04 ở B4 = 30% EN_B4_02 spawn FLANKkhiên chính diện ×0.15 làm bầy Hồi IV miễn đòn → hero PROJ/AREA (H03, H05, H07, H08) không đạt P2 ≥ 120 kill/phút, hero ZONE/DOT được lợi; TP 0.6 bay giữ mật độ ~187
Q17 Id đạo cụ theo biome2026-11-07 - đạo cụ mục tiêu có id riêng theo biome (giống OBJ_NEST_B1..B4) vì doc 51 §1362 bắt id duy nhất; encounters.json directors[].objective_props đã trỏ id _BnB1 giữ OBJ_BRAZIER · OBJ_BELL · OBJ_CARRIER · OBJ_COCOON; B2–B4 thêm hậu tố _B2/_B3/_B4; khớp biome B2–B4, encounters.json, doc 20