🔔 Bladewake GDD
📄 Doc 42 · UX, điều khiển & nền tảng

42 — Trợ năng & Tuỳ chọn (mọi option, khoảng, mặc định, hệ chạm tới)

danh mục ĐẦY ĐỦ mọi tuỳ chọn người chơi của Bladewake 1.0 (hình ảnh, mù màu, nhạy sáng, âm thanh, chữ/phụ đề tiếng Việt, vận động, nhận thức, hỗ trợ độ khó Thương Xót) với khoá cài đặt, khoảng, mặc định PC/Deck, hệ thống bị chạm, có khoá leaderboard hay không; luật giữ phân biệt tell vàng/tím khi mù màu; giới hạn chớp; preset nhanh; cách xem trước ở Sân Tập; ca kiểm thử.

Cập nhật: 2026-11-07
14
mục ##
13
mục ###
20
bảng
6244
từ

1Giới thiệu & bản đồ tài liệu

Mục đích: danh mục ĐẦY ĐỦ mọi tuỳ chọn người chơi của Bladewake 1.0 (hình ảnh, mù màu, nhạy sáng, âm thanh, chữ/phụ đề tiếng Việt, vận động, nhận thức, hỗ trợ độ khó Thương Xót) với khoá cài đặt, khoảng, mặc định PC/Deck, hệ thống bị chạm, có khoá leaderboard hay không; luật giữ phân biệt tell vàng/tím khi mù màu; giới hạn chớp; preset nhanh; cách xem trước ở Sân Tập; ca kiểm thử. Phụ thuộc: 00-Design-Bible.md §4.3 + INV-01/02/09/11/13/16 + data/_bible.json (meta.mercy, meta.accessibility); 10-Combat-Core.md §6.2, §6.5, §9; 11-Defense-Tells.md §1, §4.1, §4.2; 19-Difficulty-Modes.md §6; 30-Art-Direction.md §2.2; 31-VFX-Bible.md §1 (R1–R11); 32-Audio-Bible.md §2.1, §5.1–§5.2, §5.8, §9; 40-UI-UX-HUD.md §1.1–§1.2, §6.3, §7.1, §8, §9; 41-Controls-Camera.md; 43-Steam-Platform.md §7.1, §8.2; 01-Roadmap.md §5.1. Được dùng bởi: code AccessibilitySettings / SettingsService (phát AccessibilityChanged(key)), PaletteLut, FxRuntime, ShakeService, AudioMixer (BW_Main), SubtitleService, RebindService, Defense/Aim/Time (Thương Xót); màn Settings (40 §6.3), màn lần đầu; Sân Tập Sân Tập ST_YARD; QA (ma trận trợ năng, Deck Verified); loc.

Độ dài từng mục (nghìn ký tự)Độ dài từng mục (nghìn ký tự)0. Phạm vi & luật chung0. Phạm vi & luật chung: 1.3k1.3k1. Khung tuỳ chọn1. Khung tuỳ chọn: 1.2k1.2k2. Hình ảnh (Hiển thị + Trợ năng)2. Hình ảnh (Hiển thị + Trợ năng): 2.6k2.6k3. Mù màu — giữ phân biệt tell vàng / …3. Mù màu — giữ phân biệt tell vàng / tím / chấm: 2.6k2.6k4. Nhạy sáng (giới hạn chớp)4. Nhạy sáng (giới hạn chớp): 1.9k1.9k5. Âm thanh (32 §5.1, §5.2, §5.8)5. Âm thanh (32 §5.1, §5.2, §5.8): 2k2k6. Chữ, phụ đề, tiếng Việt6. Chữ, phụ đề, tiếng Việt: 3.1k3.1k7. Vận động (Điều khiển + Trợ năng)7. Vận động (Điều khiển + Trợ năng): 3.2k3.2k8. Nhận thức (Trò chơi + Trợ năng)8. Nhận thức (Trò chơi + Trợ năng): 2.2k2.2k9. Hỗ trợ độ khó — Thương Xót (Bible §…9. Hỗ trợ độ khó — Thương Xót (Bible §4.3, meta.mercy, 11 §4.1, 19 §6.1): 3k3k10. Preset trợ năng nhanh (Trợ năng › …10. Preset trợ năng nhanh (Trợ năng › "Preset", không gắn cờ): 0.8k0.8k11. Xem trước & kiểm thử11. Xem trước & kiểm thử: 1.2k1.2kQuy tắc cho dev/AIQuy tắc cho dev/AI: 0.7k0.7kQuyết định đã chốtQuyết định đã chốt: 1.9k1.9k
Bấm tên mục để nhảy tới mục đó.
Mục lục chi tiết (## và ###)

20. Phạm vi & luật chung

  • Canon: Bible + _bible.json > doc nền (10–17, 20, 30–32, 51) > doc này. Doc này không đổi số gameplay; mọi option là trình bày (không khoá gì) trừ nhóm Thương Xót §9 (gắn cờ run mercy_used: không nộp leaderboard, không mở thành tựu Độ Tang — Bible §4.3; không khoá gì khác — 19 §6.1). Không gắn cờ dù chạm gameplay: Hiệu chỉnh trễ mercy.latency_offset (§9, DEC-2026-11-07-16) và Trí nhớ xuyên run game.cross_run_memory (§8, 14 Q14).
  • Trợ năng KHÔNG được: đổi hex tell #ffd84a/#b14cff/#e8e4f0 ở world (INV-01a), giảm windup/cửa sổ, tắt tell, tắt mũi tên công bằng bắt buộc (11 §5.3, 15 F9). Chỉ được THÊM hình, âm, chữ, độ tương phản, hoặc BỚT hiệu ứng trang trí.
  • Mọi option áp ngay (≤ 1 frame, 40 §9), không khởi động lại; trừ độ phân giải/cửa sổ (popup "Giữ thiết lập này?" 10 s, 40 §6.3).
  • Lưu: nhóm theo người → save/settings_shared.json (Steam Cloud); nhóm theo máy (độ phân giải, preset FX, trần fps, vsync, thiết bị âm, Vùng an toàn màn) → local/settings_device.json (43 §7.1). Cột "Lưu" dưới: S = shared, D = device.
  • Khoá cài đặt: <nhóm>.<tên> (vd a11y.flash_reduce); là khoá code, không phải id dữ liệu. Mặc định Deck áp khi IsSteamRunningOnSteamDeck() ở lần chạy đầu và khi chưa từng chỉnh tay.
  • Cột "Hệ chạm" = service/hệ đọc option; mọi đọc qua AccessibilitySettings/SettingsService, không màn nào đọc PlayerPrefs (40 §9).

31. Khung tuỳ chọn

1.1 Tab (= 40 §6.3) và vị trí option

TabNhóm doc này
Trò chơi§8 nhận thức (gợi ý, đồng hồ draft, Tro Nhớ %)
Điều khiển§7 vận động (remap 41 §8, vùng chết, trợ ngắm, rung tay cầm, preset 1 tay)
Hiển thị§2 hình ảnh (độ phân giải, HUD, số sát thương, rung màn, preset FX)
Âm thanh§5
Trợ năng§2 (phần trợ năng), §3 mù màu, §4 nhạy sáng, §6 chữ & phụ đề, thời gian giữ, preset nhanh §10
Thương Xót§9
Dữ liệu & quyền riêng tưtelemetry/crash (43 §15), không thuộc doc này
  1. Cảnh báo nhạy sáng (trước Language, 4 s, bỏ qua bằng A/Enter sau 1.5 s): chữ VI/EN "Trò chơi có chớp sáng và chuyển động nhanh. Có thể giảm ở Trợ năng." + nút "Mở Trợ năng ngay" (§4).
  2. Language → Consent (43 §15.1).
  3. Thiết lập nhanh (1 màn, mọi mục bỏ qua được, chỉnh lại sau): Cỡ chữ (100/125/150%, xem trước câu tiếng Việt nhiều dấu "Ừ, đã hiểu rõ: ổn định, vững vàng.") · Tell mù màu (tắt/bật + ảnh trước/sau) · Phụ đề tell (tắt/bật) · Rung màn (100/50/0%) · Giảm chớp (tắt/bật) · Preset điều khiển (41 §8.2: Mặc định / Không chuột / 1 tay trái / 1 tay phải / Bàn phím 1 tay).
  4. Màn "Chọn cách đi" (preset Thương Xót 19 §6.2) chỉ hiện khi bắt đầu run đầu tiên, sau thiết lập nhanh.

42. Hình ảnh (Hiển thị + Trợ năng)

KhoáTên hiển thịGiá trị · mặc định PC / DeckHệ chạmLưu
video.window_modeChế độ cửa sổToàn màn không viền / Toàn màn / Cửa sổ · không viền / toàn mànPixelCamera (41 §11.1)D
video.resolutionĐộ phân giảichỉ độ phân giải cho zoom nguyên (30 §2.2) · gốc màn / 1280×800PixelCameraD
video.fps_capTrần khung hình30 / 40 / 45 / 60 · 60 / 60 (43 §8.2)sim vẫn 60 tick/s (10 §1.1)D
video.vsyncV-synctắt/bật · bật / bậtrenderD
video.safe_marginVùng an toàn màn0 / 4 / 8 / 12 / 16 UI px mỗi cạnh · 0 / khoá 0Hud (40 §0.1)D
video.fx_presetPreset FXCao / Deck 70% / Thấp · Cao / Deck 70%FxRuntime trần hạt 1 500 / 1 050 / 750 (platform.fx_particle_cap; Thấp [ASSUMED]); tell, nháy trắng, vòng chân, x-ray, ấn spawn không bao giờ bị cắt (31 §6.2)D
a11y.particles_reduceGiảm hạt FXtắt/bật · tắt / tắtFxRuntime: hạt trang trí (bụi, tro, tia lửa phụ) ×0.5, môi trường động R8 ≤ 20 hạt/view; KHÔNG chạm tell, vòng chân, hình hitboxS
hud.opacityĐộ mờ HUD50–100% bước 10 · 100 / 100Hud (40 §4.6)S
hud.dmg_numbersSố sát thươngĐầy đủ / Chỉ chí mạng + boss / Tắt · Đầy đủ / Đầy đủBattleDmgText (10 §6.5)S
hud.hero_dmg_numbersSố hero nhậntắt/bật · bậtBattleDmgTextS
hud.button_hintsHiện nút trên HUDtắt/bật · bậtHud ô kỹ năngS
cam.shakeRung màn0–100% bước 10 · 100 / 100ShakeService (41 §11.5, 10 §6.2)S
a11y.reduce_motionGiảm chuyển độngtắt/bật · tắtcamera: nhìn trước 0, giảm chấn 0.80/0.85 s, vùng chết 10% × 12% (41 §11.2); rung nhiễu ≤ 2 px, cú đẩy 0 (41 §11.5); UI: bỏ trượt/hạt (40 §7.1); nền parallax hub đứng; tro rơi ngược ở kết = mờ dầnS
a11y.hero_outlineViền hero1 / 2 / 3 px · 1ActorView viền vòng chân + rim foot_ring.hex (INV-09)S
a11y.hero_ring_boostVòng chân đậmtắt/bật · tắtfill vòng chân α 0.20 → 0.35, thêm chấm tâm 1 px (30 §3.2 màu giữ nguyên) [ASSUMED]S
a11y.contrast_boostTăng tương phảntắt/bật · tắtPaletteLut: sàn/tường/trang trí biome V × 0.80, S × 0.80; tell, hero, quái giữ → tell/hero nổi thêm ~20% (11 §4.2 "tăng tương phản sàn/tell 20%")S
a11y.offscreen_arrowsMũi tên ngoài màntắt/bật · tắtHUD: mũi tên 7×7 ở mép SAFE cho MỌI tell Y/P nhắm hero có nguồn ngoài vùng an toàn hoặc ≤ 32 px tới mép, ≥ 0.45 s trước va chạm (11 §4.2)S
a11y.aim_reticleReticle ngắmKhi ngắm / Luôn · Khi ngắmreticle sàn hero tầm xa/vùng (12 §1.3, 41 §6.3)S
a11y.cursor_sizeCỡ dấu ngắm chuột1× / 2× / 3× · 1×con trỏ combat 7×7 art px (41 §6.1)S
a11y.low_hp_vignetteViền HP thấpNhịp / Tĩnh / Tắt · Nhịphero_hp < 25% → loop; ≥ 25% → tắt 0.3 s VFX_SHARED_screen_lowhp (1 Hz; Tĩnh = α cố định 0.6)S
  • "Giảm chuyển động" KHÔNG đổi tốc game, slow-mo hay hitstop (là gameplay, 10 §6); muốn chậm game → Thương Xót "Tốc game".

53. Mù màu — giữ phân biệt tell vàng / tím / chấm

3.1 Option

KhoáTênGiá trị · mặc địnhHệ chạmLưu
a11y.tell_shapesTell mù màu (◇/▲/chấm)tắt/bật · tắtFxRuntime lớp Prioritize (31 R11), HUD mũi tên/phụ đề/recap (40 §9)S
a11y.cvd_modeChế độ mù màuTắt / Đỏ–lục / Lam–vàng / Đơn sắc · Tắtbật lớp bổ sung §3.3 + tự bật tell_shapes (không tắt được khi cvd_mode ≠ Tắt)S
  • Luật cứng: không có bộ lọc màu toàn màn (daltonize) — bộ lọc dời hue tell ra khỏi dải dành riêng 32–62° / 260–290° (INV-01a) và đổi màu slot hero. Mọi chế độ chỉ THÊM hình/mẫu/viền/độ sáng; hex tell world giữ nguyên.

3.2 Lớp hình (bật bởi tell_shapes; = 11 §4.2, 31 R11)

LớpThườngThêm khi bậtÂm kèm
Y vàngglint 4 cánh 5×5 (boss 7×7) + viền trắng nháy ≥ 2 frameglint thành hình thoi ◇ 5×5 (boss 7×7); đạn Y_REFLECT: ◇ ở đầu đạn"tinh" nốt cao hơn +2 bán cung
P tímvùng fill 25% + viền 2 px + hào quang + !gạch chéo 45° 1 px cách 4 px trong vùng + ▲ 7×6 cạnh !; đạn P: ▲ thay chấm đuôi"ù"
N đọngviền chấm 2 px + chấm thưa 15%giữ nguyên (đã khác hình: chấm, không gạch, không glint)không
Ấn spawnvòng LIỀN + xoáy trogiữ nguyên—
  • Gạch chéo chỉ dành cho tím mù màu (Bible INV-02: N không dùng gạch chéo) → không lẫn.

3.3 Lớp bổ sung theo chế độ

Chế độRủi ro đo (§3.4)Thêm
Đỏ–lụcY/P an toàn; số hero nhận #ff5a5a vs hồi phục #7be08a ΔE 11–26số hero nhận luôn có tiền tố "−", hồi phục "+" + mũi tên ▲ 5 px; thanh HP: đoạn trễ ui-hp-lag thêm sọc dọc 1 px cách 2 px; khung rarity thêm chấm pip (1/2/3) — áp mọi chế độ ≠ Tắt
Lam–vàngY–P ΔE 29.8, Y–N 17.9glint ◇ thêm lõi tối 1 px #15131d (tách khỏi chấm N nhạt); viền vùng P thành viền kép 2 px + khe 1 + 1 px; mọi phần Đỏ–lục
Đơn sắcY–P ΔE 25.9, Y–N 2.4 (gần trùng)như Lam–vàng + tự bật a11y.contrast_boost; viền trắng Y đổi nháy → nháy + viền ngoài tối 1 px #15131d; vùng N: chấm thưa 15% → chấm dày 25% (vẫn chấm, không gạch)

3.4 Số đo (mô phỏng Machado 2009 mức 1.0 trên sRGB, ΔE2000; chạy lại khi đổi palette)

Mô phỏngY #ffd84a →P #b14cff →ΔE Y–PΔE Y–NΔE P–NΔE số hero nhận–hồiL* Y / P / N
Thường#ffd84a#b14cff76.935.139.270.887 / 54 / 91
Protan#efd435#007dff70.134.836.026.085 / 54 / 91
Deutan#f8e052#0081fb68.733.235.811.489 / 55 / 91
Tritan#ffc7bc#a376a129.817.933.269.085 / 55 / 91
Đơn sắc#dbdbdb#80808025.92.428.215.687 / 54 / 91
  • Cổng: ΔE(Y, P) ≥ 25 dưới mọi mô phỏng (đạt, min 25.9) và Y/P/N phân biệt được khi xem ảnh xám ở 50% kích thước (bắt buộc hình ◇/▲/chấm vì Y–N đơn sắc 2.4). Test 5 s mỗi chế độ trên B2 và B4 với 250 quái (như INV-09).
  • Phân biệt Y với P còn qua: hình (glint điểm vs vùng sàn), âm ("tinh" vs "ù"), thời gian (Y glint 2 đúng 7 tick trước va chạm; P vùng lớn dần) — không bao giờ chỉ bằng màu.

64. Nhạy sáng (giới hạn chớp)

4.1 Luật (mọi chế độ; 31 R9 + 40 §7.1)

KhoáGiới hạn
Định nghĩa "chớp"1 cặp tăng-giảm độ sáng tương đối ≥ 10% với trạng thái tối < 0.80, trên vùng gộp ≥ 160×90 art px (≈ 1/4 trường nhìn 10° ở 1080p, ≈ 11% view 480×270)
Tần số≤ 3 chớp / mọi cửa sổ 1.0 s toàn màn; chớp màn (screen_flash_*) ≤ 2/s, α ≤ 0.35, 1–3 frame
Chớp đỏcấm chớp bão hoà đỏ (R/(R+G+B) ≥ 0.80) bất kỳ diện tích nào; hero trúng đòn = chớp trắng sprite + viền tối, không phủ đỏ (10 §6.4)
Nhịp UImọi nhấp/nhịp ≤ 3 Hz (HP thấp 1.2 Hz, Dư Âm đầy 1 Hz, focus 2 Hz)
Gộp chớp spritetổng diện tích sprite đang chớp trắng trong 1 frame ≥ vùng chuẩn → tính 1 chớp; đã đủ 3 chớp trong 1.0 s → chớp sprite tiếp theo vẽ α 0.5 tới hết cửa sổ (chớp vẫn có — INV-10)
Môi trườngtia sét/bùng lò/chuông loé: ≤ 1 lần/2.0 s, Δ độ sáng ≤ 25%

4.2 Danh mục chớp & bản "Giảm chớp" (a11y.flash_reduce, tắt/bật · tắt, S)

Phần tửThườngGiảm chớp
counter_success / answer_perfect t = 0 VFX_SHARED_screen_flash_white (Phản, ĐÁP hoàn hảo)2 frame α 0.35tắt; thay viền màn 1 px #f4efe0 α 0.25 trong 0.15 s
ult_burst t = 0 VFX_SHARED_screen_flash_ult3 frame α 0.30tắt
boss_phase_change t = 0 VFX_SHARED_screen_phase (đổi pha boss)chớp ngà 2 frame + sóngtắt chớp, giữ sóng
Viền trắng tell Ynháy ≥ 2 frameviền trắng liền 2 px (11 §4.2)
Vành đạn Y_REFLECTnháy 8 Hz (vùng ≤ 16 px)vành liền
Hào quang tell Pnhấp 4 Hz (2 px)liền
Chớp trắng trúng đòn (sprite)0.07 s mọi cú≤ 1 lần/0.33 s mỗi mục tiêu, α 0.6 (không tắt — INV-10)
Chớp chết0.09 sα 0.6
HUD (HP thấp, Vỡ Thế, Dư Âm đầy)nhịptĩnh (40 §9)
Viền HP thấp screen_lowhp1 Hztĩnh α 0.6
Tint World chậm (Né Hoàn Hảo, Phản)tint + chớpchỉ tint, không chớp (40 §9)
  • Kiểm tự động (CI, quay video 60 fps): phân tích độ sáng từng frame theo luật §4.1 trên 6 cảnh (MS01b 250 quái + Ult, 4 boss pha chuyển, Phản liên tục 10 s) → 0 cửa sổ 1.0 s > 3 chớp, 0 chớp đỏ; chạy ở cả Thường và Giảm chớp. Trailer (43 §2.3) qua cùng kiểm trước khi đăng.

75. Âm thanh (32 §5.1, §5.2, §5.8)

KhoáTênGiá trị · mặc định PC / DeckHệ chạmLưu
audio.vol_masterTổng0–100 bước 5 · 80 / 80 [ASSUMED]mixer vol_masterS
audio.vol_music · vol_sfx · vol_amb · vol_ui · vol_voNhạc · Hiệu ứng · Môi trường · UI · Giọng (tiếng hô không lời)0–100 bước 5 · 100vol_music · vol_sfx · vol_amb · vol_ui · vol_voS
audio.vol_tellÂm tell50–150% · 100 (sàn −6 dB, AUD-03)bus EnemyTell vol_tell; luôn miễn duck/snapshotS
audio.dynamic_rangeDải độngRộng / Thường / Hẹp · Thường / Hẹp khi loa trongHẹp = snapshot SN_SMALL_SPEAKER (HP 150 Hz, nén −16 dB 4:1, tell +2 dB)D
audio.small_speakerLoa nhỏtắt/bật · tắt / tự bật khi Deck không tai nghe= Dải động HẹpD
audio.monoMonotắt/bật · tắttổng mono; tell giảm ≤ 3 dB (32 AT-10)S
audio.tell_positionalÂm tell theo vị trítắt/bật · tắttell pan ±1.0 theo x màn, "tinh" +2 bán cung khi nguồn ngoài màn (32 §2.1); tắt = pan ±0.6 như mọi SFXS
audio.tell_enhancedÂm tăng cường (người nhìn kém)tắt/bật · tắt"tinh" ở glint 2 +6 dB, cao độ theo khoảng cách; "ù" to dần theo độ gần vùng P; âm "rì" khi bước vào N (SFX_SHARED_tell_* sẵn có); tự bật a11y.contrast_boost (11 §4.2)S
audio.h12_clickClick nhịp H12tắt/bật · tắtlớp click 120 BPM trên bus UI khi chơi H12 (32 §3.5)S
audio.latency_msHiệu chỉnh trễ âm−100…+100 ms bước 10 · 0dời phát âm/hình hiển thị phách H12 + glint; KHÔNG dời mốc chấm (≠ Hiệu chỉnh trễ mercy.latency_offset §9, cũng không cờ)D
audio.mute_unfocusedTắt âm khi mất focustắt/bật · bậtMaster −80 dB khi cửa sổ mất focusD
a11y.visual_soundChỉ hình (người nghe kém)tắt/bật · tắtmọi SFX tell nhân đôi bằng hình: cung sáng 8 px quanh vòng chân hero hướng về nguồn — ◇ vàng ở glint 2 (Y), ▲ tím ở đầu windup (P) (11 §4.2)S
  • Màn đo trễ (Cài đặt › Âm thanh): 8 lần gõ CONFIRM theo click 100 BPM, lấy trung vị lệch → đề xuất audio.latency_ms; cùng màn có bước hình (chớp ô 8×8 ngà) để đo trễ hiển thị → đề xuất "Hiệu chỉnh trễ" mercy.latency_offset (§9, không gắn cờ; người chơi tự chọn áp).
  • Không có lời thoại đọc ở 1.0 (32 §9) → không có option giọng/ngôn ngữ thoại.

86. Chữ, phụ đề, tiếng Việt

6.1 Cỡ chữ & đọc

KhoáTênGiá trị · mặc định PC / DeckHệ chạmLưu
a11y.text_scaleCỡ chữ100 / 125 / 150% · 100 / 125 (sàn Deck platform.ui_text_scale_min 1.25)đổi font theo vai (40 §1.2), không scale lẻ; 150%: chữ ≥ FNT_BW_L vào TextCanvasS
a11y.text_contrastNền chữ đặctắt/bật · tắtcallout, nameplate, phụ đề, gợi ý: thêm hộp ui-void α 0.85 sau chữ (thay viền 1 px)S
a11y.dialogue_speedTốc hiện chữ thoại20 / 40 / 80 ký tự/s / tức thì · 40 (40 §6.2)DialogueS
a11y.dialogue_autoTự chuyển dòngtắt/bật · tắtchuyển sau 1.0 s + 0.05 s × số ký tựS
a11y.screen_readerĐọc màn hìnhtắt/bật · tắtphát a11y_label của phần tử focus cho API đọc màn hình HĐH nếu có (40 §9)S

6.2 Tiếng Việt (nguồn VI, 40 §1.1, §8)

  • Font FNT_BW_S/M/L/XL/NUM vẽ tay, đủ 134 ký tự tiếng Việt dựng sẵn + Latin Extended-A; dấu chồng (ể, ặ, ỗ, Ữ) = 2 tầng trong vùng dấu 3–5 UI px, không đè dòng trên; chữ HOA giữ đủ dấu (TẠM DỪNG, LÊN CẤP) — cấm bỏ dấu để vừa hộp.
  • Chuỗi luôn chuẩn hoá Unicode NFC (ký tự dựng sẵn); CI loc từ chối mọi chuỗi còn dấu kết hợp U+0300–U+0323 sau chuẩn hoá hoặc ký tự ngoài bảng font (thay "□" = lỗi build).
  • Cao chữ trên màn (cap + vùng dấu): FNT_BW_S 8 UI px = 32 px @1080p / 24 px @Deck; FNT_BW_M 10 UI px = 40 / 30 px. Sàn Deck: chữ nhỏ nhất ≥ 12 px cap (43 §8.2) → 125% đạt (S → M ở caption).
  • Ngắt dòng: chỉ tại dấu cách; không ngắt giữa số và đơn vị ("12 px", "0.5 s"), giữa glyph nút {btn:…} và chữ theo sau, và trong tên riêng ≤ 3 âm tiết ("Bà Ulla", "Lò Rèn Vọng", "Khăn Tang") → build loc chèn dấu cách không ngắt (U+00A0).
  • Đo hộp bằng UI px ở 125% (40 §8); 150% cho phép cuộn (thanh 2 px); cấm "…" trên chữ gameplay.
  • Số: dấu nghìn VI "1.234", thập phân VI "0,5" trong chữ hiển thị (doc dùng "0.5" cho số kỹ thuật); đơn vị giữ ký hiệu quốc tế (s, px, %).

6.3 Phụ đề & chú thích âm

KhoáTênGiá trị · mặc địnhNội dungLưu
sub.enabledPhụ đềtắt/bật · bậtbark NPC/quái/boss (≤ 48 ký tự, 14 §14), "NÓ ĐÃ ĐỌC BẠN: <thói quen>", thoại hubS
sub.speakerTên người nóitắt/bật · bật"Bà Ulla: …"; quái/boss: tên codex; không phân biệt người nói bằng màu (dùng tên + chân dung 16×16)S
sub.bg_opacityNền phụ đề0–100% bước 10 · 60hộp ui-void sau chữS
sub.sizeCỡ phụ đềtheo Cỡ chữ / 125 / 150% · theo Cỡ chữ—S
a11y.tell_subsPhụ đề telltắt/bật · tắt"[tinh · trái]", "[ù · sau lưng]", "[ĐÁP]", "[Tro đọc]" (11 §4.2); mũi tên hướng ở mép màn khi nguồn ngoài màn (32 §2.1)S
sub.sound_captionsChú thích tiếng độngtắt/bật · tắtâm quan trọng không phải tell: "[chuông vọng · trên]", "[cửa phòng mở]", "[boss gầm]", "[Tro Nhớ đổi thế]", "[bầy kéo tới · phải]" (beat F9)S
  • Vị trí: khối SUBS đáy SAFE (40 §4.1), ≤ 2 dòng thoại/bark + ≤ 3 dòng tell chồng; tell 1.2 s/dòng; bark/chú thích hiện max(1.5, 0.5 + số ký tự / 15) s, trần 6.0 s (vd bark 48 ký tự → 3.7 s) [ASSUMED] (tốc đọc VI ~15 ký tự/s).
  • Hướng 8 chữ: trái · phải · trên · dưới · trái-trên · phải-trên · trái-dưới · phải-dưới; "sau lưng" = nguồn trong nón 90° ngược hướng ngắm. Phụ đề tell hiện đúng tick SFX tell (glint 2 cho Y, đầu windup cho P).
  • Phụ đề không bao giờ che vòng chân hero: hero ở 32 art px dưới đáy view → khối SUBS dời lên trên hero.

97. Vận động (Điều khiển + Trợ năng)

7.1 Option

KhoáTênGiá trị · mặc địnhHệ chạmLưu
input.presetPreset điều khiểnPAD_DEFAULT / PAD_SOUTHPAW / PAD_LEFT_ONLY / PAD_RIGHT_ONLY / KBM_DEFAULT / KBM_KEYS / KB_LEFT_ONLY / CUSTOM · theo thiết bịRebindService (41 §8.2)S
input.bindings.*Remap2 ô/action/họ thiết bị41 §8.1S
input.ls_deadzoneVùng chết cần trái0.10–0.40 bước 0.05 · 0.20MOVE, ngắm LS (combat.aim_ls_deadzone = giá trị này)S
input.rs_deadzoneVùng chết cần phải0.15–0.45 bước 0.05 · 0.30ngắm RS (combat.aim_rs_deadzone)S
input.swap_sticks · input.invert_yĐảo cần · Đảo trục Ytắt/bật · tắtInputFrameS
input.mouse_sensĐộ nhạy chuột×0.5–×2.0 bước 0.1 · ×1.0con trỏ combat (đọc delta thô khi con trỏ bị khoá trong cửa sổ)S
input.cursor_confineKhoá con trỏ trong cửa sổtắt/bật · bật (toàn màn) / tắt (cửa sổ)HĐHD
input.aim_assistTrợ ngắm tay cầm0–100% bước 10 · 100nhân xoay tối đa (41 §6.2); 0 = tắtS
input.boss_lock_hardKhoá boss cứng (R3 / chuột giữa)tắt/bật · tắtAimService (10 §9) — trợ năng, không khoáS
input.hold_time_multThời gian giữ×0.5–×2.0 bước 0.25 · ×1.0UI_C_Hold, giữ trong Draft (Xoá/Bỏ qua 0.5 s), Bỏ run 1.0 s, INTERACT giữ 0.5 s (rương Lời Nguyền, gỡ Relic); KHÔNG áp ANSWER_HOLD (= W) và attack_hold_ticks (gameplay)S
input.ash_inspect_toggleXem Tro Nhớ kiểu bậttắt/bật · tắtASH_INSPECT chạm 1 = mở, chạm 2 = đóngS
input.skill_hold_modeKỹ năng ngắmGiữ-thả / Chạm-chạm · Giữ-thảkỹ năng cast_mode = HOLD: chạm 1 bắt đầu nạp/ngắm, chạm 2 tung; tự tung sau 3.0 s (41 §5)S
input.attack_toggleĐánh kiểu bật (chỉ hero AUTO_CHAIN)tắt/bật · tắtchạm ATTACK = bật tự nối combo như đang giữ; chạm lại / mở màn / chết = tắt; hero CHARGE/CHANNEL/STANCE/DIG không ápS
input.move_latchGiữ hướng đi khi nhả cần0 / 0.25 / 0.50 s · 0 (preset 1 tay: 0.25)MOVE giữ vectơ cuối trong thời gian này khi ngón cái rời cần để bấm d-pad/ABXYS
input.confirm_swapĐảo xác nhận/huỷtắt/bật · tắtmap UI (✕ ↔ ○; 41 §3.1)S
input.confirm_styleKiểu xác nhận lệnh nguy hiểmGiữ / 2 bước · GiữUI_C_Hold hoặc UI_C_Confirm 2 bướcS
input.ui_repeat_delayTrễ lặp điều hướng0.25–0.80 s · 0.35NAV (40 §3.1)S
input.haptic_strength · input.haptic_tellsRung tay cầm · Rung tell0–100% · 100 · bậtHaptics (41 §10); KBM 0 (platform.haptics)S
  • Verb giữ kiểu bật (chạm 1 vào, chạm 2 ra) KHÔNG nằm ở đây: Bible §4.3 xếp vào Thương Xót (§9, gắn cờ).

7.2 Preset 1 tay (Bible §4.3 "chế độ 1 tay"; không hành động nào cần 2 nút cùng lúc — 12 §1.1)

Mọi preset 1 tay: aim_mode = AIM_MOVE (đổi lại được), input.move_latch 0.25 s, MAP = mục "Bản đồ" trong Pause.

action_idPAD_LEFT_ONLYPAD_RIGHT_ONLYKB_LEFT_ONLY (không chuột)
MOVELSRSWASD
ATTACKLTRTSpace
ANSWER_HOLDLBRBQ
DASHL3 · Deck: L4A · Deck: R4Shift trái
SKILL_1 · SKILL_2 · SKILL_3d-pad ← · ↑ · →X · Y · BE · R · F
ULTd-pad ↓R3X
POTIONView chạm < 0.25 s · Deck: L5Menu chạm < 0.25 s · Deck: R51
ASH_INSPECTView giữ ≥ 0.25 sView (giữ)Tab
INTERACT= ATTACK khi có nhắc (vật ready chỉ có khi phòng sạch)= ATTACK khi có nhắcG
PAUSEMenuMenu giữ ≥ 0.5 sEsc
Map UILS điều hướng · LT xác nhận · LB quay lại · d-pad ←/→ tabRS · RT · RB · X/B tabWASD · Space · Esc · Q/E
  • Chạm/giữ trên cùng 1 nút (View, Menu) = ngữ nghĩa theo thời lượng, không phải tổ hợp; POTION phát lúc nhả (trễ ≤ 0.25 s, chấp nhận cho preset).
  • Kiểm: 1 run Hồi I trọn vẹn với mỗi preset (41 CT-14).

108. Nhận thức (Trò chơi + Trợ năng)

KhoáTênGiá trị · mặc địnhHệ chạmLưu
game.hintsGợi ý núttắt/bật · bậtHINT 1 dòng trong run (40 §10.2)S
game.glossary_autoTự chú giải từ khoá lần đầutắt/bật · bậtthẻ/tooltip: lần đầu gặp từ khoá (Dư Âm, Dạng Rèn, Then Chốt, Khăn Tang, STS_*…) mở chú giải 1 dòng; luôn xem được bằng DETAIL (View/Tab)S
game.draft_timerĐồng hồ tự chọn draft6 s / 12 s / Tắt · 6 sDraft (40 §5.3); chỉ draft phòng thường; không lợi thế (World ×0.15, đồng hồ run vẫn chạy)S
game.objective_reminderNhắc mục tiêu phòngtắt/bật · bậtOBJECTIVE (40 §4.4) nháy viền 1 lần sau 20 s không tiến độ [ASSUMED]S
game.ash_pctHiện số % Tro Nhớtắt/bật · bậtAshInspect (40 §4.5.3)S
game.hud_declutterGiảm nhiễu HUDtắt/bật · tắttrong giao tranh: hoãn toast thành tựu/mở khoá tới khi phòng sạch, ẩn bộ đếm combo, callout chỉ M/L/XL; không ẩn HP, Dư Âm, ô kỹ năng, tellS
game.auto_pause_focusTự tạm dừng khi mất focustắt/bật · bật (Deck khoá bật)43 §8.3S
game.combat_toastsThông báo trong trậnNgay / Hoãn tới phòng sạch · HoãnSteam/thành tựu toast (40 §0.2 Overlay)S
game.cross_run_memoryTrí nhớ xuyên runtắt/bật · bậtAshMemory MACRO (14 §9.6 hàng "Công tắc TẮT", §10.1, Q14). TẮT = không đọc/ghi Sổ Thù save/ash_profile_<steamId>.json (không thế mở màn MACRO BS_B1–BS_B4 §9.3, không thẻ "X nhớ…"; BS_FINAL P2 dùng thứ tự bóng mặc định BS_B4 → BS_B3 → BS_B2 §9.5); không Sẹo (không bật Sẹo đã khắc, ẩn nút "Khắc Sẹo" §9.4); MESO mỗi run khởi đầu từ phòng đầu (14 §7.1), không mang hồ sơ hero từ run trước. Bản ghi + Sẹo giữ nguyên, xám trong codex; BẬT lại → dùng tiếp. KHÔNG đổi MICRO/MESO trong run, trần/luật công bằng 14 §11, ash_level. Chỉ có tác dụng ở STANDARD/ENDLESS (DAILY/Truy Tuần/BOSS_RUSH/CUSTOM vốn không dùng Sổ Thù, 14 §9.6). KHÔNG gắn mercy_used, KHÔNG khoá leaderboard (DAILY / Truy Tuần / ENDLESS / BOSS_RUSH), KHÔNG chặn thành tựu Độ Tang (14 Q14). Đổi giữa run: áp ngay từ lần đọc/ghi Sổ Thù kế (điểm lưu, đầu trận boss), không UI_C_Confirm. ≠ "Xoá Sổ Thù" (14 §9.6, xoá thật)S
  • Tạm dừng được MỌI lúc trong run (kể cả boss, DAILY; đồng hồ run dừng, 43 §8.3); tiếp tục đếm 0.3 s; tell đang chạy đóng băng, mờ 50%.
  • Mọi bài hướng dẫn xem lại được ở Sân Tập (Sân Tập ST_YARD, menu Yard); codex ghi mọi cơ chế đã gặp (CDX_*).

119. Hỗ trợ độ khó — Thương Xót (Bible §4.3, meta.mercy, 11 §4.1, 19 §6.1)

Bất kỳ mục nào khác mặc định trong run → cờ run mercy_used (giữ tới hết run kể cả khi tắt lại): không nộp leaderboard (DAILY / Truy Tuần / ENDLESS / BOSS_RUSH), không mở thành tựu Độ Tang (mercy_blocked). KHÔNG giảm Tro Hồn/Mảnh Vọng/Nến Canh/Thông Thạo, không khoá kết, hero, codex, thành tựu truyện; dùng chung được với Khăn Tang (MRN01–MRN15). Bật giữa run → UI_C_Confirm (40 §5.6); HUD: icon nến tắt 8×8 ui-text-2 ở đầu phải khối MODE, ngay trên Độ Tang (40 §4.1).

KhoáTênGiá trị · mặc địnhHệ chạmLuật
mercy.dmg_takenSát thương nhận0 / −25 / −50 / −75% · 0Damage.EnemyToHero (bước 6 10 §3.3)ngay
mercy.answer_windowCửa sổ ĐÁP+0 / +0.03 / +0.06 s · +0Defense.Windowcộng vào gốc hero, kẹp 15 tick; H12 cộng sau phách (tối đa 0.24 s)
mercy.game_speedTốc game70–100% bước 5 · 100Time.GameScalenhân MỌI đồng hồ gồm máy nhịp H12 (BPM × tỉ lệ); nhạc giữ cao độ
mercy.auto_aimTự ngắmtắt/bật · tắtAim.Assist → AIM_AUTO (140 / 300 px)LS chỉ di chuyển
mercy.hold_toggleVerb giữGiữ / Bật · GiữInput.HoldModeBật: chạm ANSWER_HOLD vẫn = ĐÁP; giữ tới W = vào verb giữ và ở lại sau khi thả; chạm lần nữa = ra (19 §6.1)
mercy.ash_zeroTro Nhớ 0tắt/bật · tắtAshMemory L_eff = 0 từ REST kế (INV-15); Ấn EM12 trống—
mercy.auto_defensePhòng Thủ Tự Động 50%tắt/bật · tắtDefense.Autotất định: bộ đếm luân phiên mỗi đòn Y lẽ ra trúng hero (chưa ĐÁP/che/Lướt), đòn lẻ được tự ĐÁP; chỉ hiệu ứng chung 11 §2.2, không Dư Âm, không tài nguyên, không Phản (11 §4.1)
mercy.h12_beatNhịp Ambrin±0.12 / ±0.16 s · ±0.12H12 rhythm_window—
mercy.h07_peakĐỉnh Hơi Veyra+0 / +0.04 s · +0H07cửa sổ tài nguyên, không phải ĐÁP
  • Không thuộc Thương Xót (không cờ): Hiệu chỉnh trễ mercy.latency_offset (bảng dưới, DEC-2026-11-07-16), platform.answer_window_bonus_s theo nền tảng (0 trên PC/Deck), mọi option §2–§8.
  • Hiệu chỉnh trễ — hiệu chỉnh/trợ năng, KHÔNG phải Thương Xót (Bible §4.3 DEC-2026-11-07-16, 19 Q7): hiện ở tab Trợ năng (cạnh màn đo trễ §5) và chung menu Thương Xót; khoá giữ tiền tố mercy. chỉ vì vị trí menu (19 §6.1 trỏ tên này), không mang luật cờ:
KhoáTênGiá trị · mặc địnhHệ chạmLuật
mercy.latency_offsetHiệu chỉnh trễ−0.10…+0.10 s bước 0.01 · 0Input.LatencyOffsetdời mốc chấm ĐÁP/phách H12/Đỉnh Hơi theo trễ hiển thị đo được; KHÔNG nới cửa sổ; mọi giá trị (kể cả khác 0) KHÔNG gắn mercy_used, KHÔNG khoá leaderboard (DAILY / Truy Tuần / ENDLESS / BOSS_RUSH), KHÔNG chặn thành tựu Độ Tang; lưu D (theo máy/màn hình); áp ngay, kể cả giữa run, không UI_C_Confirm, không biểu tượng HUD
  • Preset "Chọn cách đi" (19 §6.2; chỉ là bộ điền §9):
PresetSát thương nhậnĐÁPTự ngắmVerb giữPhòng Thủ Tự ĐộngTro NhớTốc gameCờ
Kể Chuyện−50%+0.06 sbậtngười chơi chọn Giữ/Bật50%0100%mercy_used
Đồng Hành−25%+0.03 sbậtngười chơi chọn Giữ/Bậttắtgiữ100%mercy_used
Hành Trình (mặc định)00tắtGiữtắtgiữ100%không
  • Chỉnh tay bất kỳ ô nào → hiện "Tự chỉnh". Ví dụ: H01 Gạt gốc 0.16 s + Kể Chuyện +0.06 = 0.22 s = ceil(0.22 × 60 − 0.001) = 14 tick (≤ kẹp 15) ✓; H12 đúng phách 0.20 + 0.06 = 0.26 → kẹp 0.24 s (11 §3.1).

1210. Preset trợ năng nhanh (Trợ năng › "Preset", không gắn cờ)

PresetBật / đặt
Nhìn kémCỡ chữ 150% · Nền chữ đặc · Tell mù màu · Âm tăng cường (+ tăng tương phản) · Âm tell theo vị trí · Viền hero 3 px · Vòng chân đậm · Mũi tên ngoài màn · Reticle Luôn · Dấu ngắm 3×
Nghe kémPhụ đề + tên người nói · Phụ đề tell · Chú thích tiếng động · Chỉ hình · Rung tell bật · Mũi tên ngoài màn
Mù màucvd_mode hỏi chọn Đỏ–lục / Lam–vàng / Đơn sắc → §3.3
Nhạy sáng & chuyển độngGiảm chớp · Giảm chuyển động · Rung màn 0% · Giảm hạt FX · Viền HP thấp Tĩnh
Vận độnghỏi tay (trái/phải/bàn phím) → preset 1 tay §7.2 · Thời gian giữ ×1.5 · Xem Tro Nhớ kiểu bật · Kỹ năng Chạm-chạm · Đánh kiểu bật · Kiểu xác nhận 2 bước
Nhận thứcĐồng hồ draft Tắt · Giảm nhiễu HUD · Thông báo hoãn · Tự chú giải · Tốc chữ thoại 20
  • Preset cộng dồn (bật preset sau không tắt option preset trước); "Mặc định" theo tab trả về bảng §2–§8.

1311. Xem trước & kiểm thử

  • Mọi option §2–§8 có ảnh/clip minh hoạ 128×72 trong Settings (40 §6.3) + nút "Thử ở Sân Tập" (chỉ ở hub): Sân Tập ST_YARD mở dummy tell Y/P/N từng hạng, Thương Xót xem trước không gắn cờ (Sân Tập không phải run).
#CaĐạt khi
AC-01Mù màu4 mô phỏng §3.4 + xám 50%: người thử nhận đúng Y/P/N ≥ 95% trong 40 tell ngẫu nhiên (5 s/tell) trên B2, B4, 250 quái
AC-02Nhạy sángkiểm tự động §4.2 đạt ở 6 cảnh × 2 chế độ
AC-03Chữ VIảnh chụp mọi màn ở 1280×800 × 3 cỡ chữ: 0 dấu bị cắt, 0 "□", 0 tràn hộp ở 125%, chữ nhỏ nhất ≥ 12 px
AC-04Phụ đề tellmỗi đòn Y/P nhắm hero có 1 dòng đúng tick SFX, đúng hướng 8 chữ
AC-05Thương Xótbật/tắt từng mục giữa run → cờ mercy_used giữ; bảng DAILY từ chối nộp; tiền meta không đổi so với run cùng seed không cờ
AC-06Trợ năng không khoábật mọi option §2–§8 + mercy.latency_offset = +0.10 s và −0.10 s (đổi cả giữa run) → không cờ mercy_used, run vẫn nộp bảng DAILY, mở thành tựu Độ Tang
AC-07Áp ngayđổi từng option khi đang mở màn: UI dựng lại ≤ 1 frame, không khởi động lại
AC-08Lưuđổi máy (Steam Cloud): option S theo người; option D giữ theo máy
AC-091 tay41 CT-14
AC-10Deckmặc định Deck đúng bảng (chữ 125%, FX 70%, Loa nhỏ khi loa trong, Vùng an toàn khoá 0) ở lần chạy đầu

14Quy tắc cho dev/AI

  • Option mới = thêm 1 hàng vào bảng nhóm tương ứng (khoá, tên, giá trị · mặc định PC/Deck, hệ chạm, lưu S/D) + màn Settings 40 §6.3 + chuỗi loc cùng lượt.
  • Option không bao giờ đổi hex tell world, windup, cửa sổ, token, mũi tên công bằng bắt buộc; đổi số gameplay = Thương Xót (cờ) hoặc DEC.
  • Không bộ lọc màu toàn màn; mù màu chỉ thêm hình/mẫu/viền/độ sáng (§3).
  • Mọi chớp mới phải khai báo vào §4.2 kèm bản Giảm chớp và qua kiểm tự động §4.2 trước merge.
  • Chuỗi VI: NFC, đủ dấu, đo hộp ở 125%, không "…" trên chữ gameplay, dấu cách không ngắt trong tên riêng ≤ 3 âm tiết.
  • Đọc option qua AccessibilitySettings/SettingsService + sự kiện AccessibilityChanged(key); cấm PlayerPrefs trực tiếp.

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

#Câu hỏiQuyết địnhLý do
A1Bước Tốc game?2026-11-07 — 5% (11 §4.1, 40 §6.3); lệch 19 §6.1 (10%)doc nền 11 thắng; 7 nấc 70–100
A2Phòng Thủ Tự Động ngẫu nhiên hay tất định?2026-11-07 — tất định luân phiên (11 §4.1); lệch 19 §6.1 (roll 50% luồng ai)doc nền 11 thắng; đoán trước được, không hao RNG
A3Khoảng Hiệu chỉnh trễ?2026-11-07 — ±0.10 s bước 0.01 (11 §4.1, 32 §5.8); lệch 19 §6.1 (±150 ms)doc nền 11 + 32 cùng số
A4Hiệu chỉnh trễ có gắn cờ?2026-11-07 — KHÔNG: mercy.latency_offset không bao giờ gắn mercy_used, không khoá leaderboard/thành tựu Độ Tang (Bible §4.3 DEC-2026-11-07-16, chấp nhận 19 Q7)chỉ bù trễ hiển thị (TV, Deck dock), không nới cửa sổ; khoá leaderboard = phạt người chơi trên màn hình trễ
A5Bộ lọc mù màu toàn màn?không; chỉ lớp hình + bổ sung theo chế độbộ lọc phá INV-01a (dải hue tell, slot hero)
A6Ngưỡng chớp?≤ 3/1.0 s toàn màn, vùng ≥ 160×90 art px; chớp màn ≤ 2/s α ≤ 0.35; cấm chớp đỏ31 R9 + chuẩn an toàn nhạy sáng phổ biến
A7Chớp trắng trúng đòn khi Giảm chớp?giữ, ≤ 1/0.33 s mỗi mục tiêu, α 0.6INV-10 + 31 §6.2 không cắt nháy trắng
A8Thời gian giữ áp INTERACT?có (0.5 s × hệ số); không áp ANSWER_HOLD/attack_hold_ticksINTERACT chỉ khi phòng sạch → không phải gameplay; W là luật INV-11
A9Verb giữ kiểu bật?Thương Xót (cờ), không phải trợ năngBible §4.3 liệt kê trong Thương Xót
A10Mặc định Deck?chữ 125%, FX 70%, Loa nhỏ khi loa trong, fps 60, Vùng an toàn khoá 043 §8.2, 01 §5.1
A11Cảnh báo nhạy sáng?màn 4 s trước chọn ngôn ngữ ở lần chạy đầu, nút mở Trợ năngngười chơi chỉnh trước cảnh chớp đầu tiên
A12Tab, luồng lần đầu, icon Thương Xót, khoá Trí nhớ xuyên run?2026-11-07 — theo 40: tab "Dữ liệu & quyền riêng tư", luồng PhotoWarning → Language → Consent → QuickSetup → Title (40 §3.2), icon nến tắt trong khối MODE (40 §4.1); thêm khoá game.cross_run_memory (14 §9)doc 40 là nguồn màn hình/HUD; option cần khoá để cài đặt