1Giới thiệu & bản đồ tài liệu
GDD/Full/. Ngôn ngữ: tiếng Việt có dấu; id/field/identifier giữ tiếng Anh.21. GDD này là gì
- Tài liệu thiết kế toàn bộ game Bladewake 1.0: action roguelite hack & slash, pixel art góc nhìn 3/4 từ trên xuống (pixelfx), bầy 150–250 kẻ địch, PC Steam trước (premium), tay cầm trước + bàn phím/chuột đủ, Steam Deck.
- Mục tiêu: đội người + agent AI dựng được cả game không cần hỏi lại — mọi luật, số, id, asset, âm thanh, UI, kiểm thử đều có ở đây.
- Cấu trúc 3 lớp:
docs/*.md— luật viết tay (vì sao, công thức, quy trình, bảng tham chiếu).data/**/*.json— nguồn sự thật duy nhất cho mọi số/id/nội dung; kiểm bằngtools/schema/*.schema.json(draft 2020-12,additionalProperties: false).- Bản render (không sửa tay):
docs/generated/,data/_unity/,data/_merged.json,site/,Design/ArtSpecs/.
- GDD demo (
GDD/*.md,GDD/Data/*.csv) là lịch sử — Full thắng khi lệch.
32. Thứ bậc canon
docs/00-Design-Bible.md+data/_bible.json(id, tên, số canon; prose ≠ JSON → bug, sửa cả hai cùng lượt, số/id theo JSON).- Doc nền:
01,10–17,20,30–32,51. - Dữ liệu nội dung
data/**/*.jsonvà các doc còn lại (18,19,21,23,40–43,50,60). - Phán đoán của người/agent — chỉ khi 3 tầng trên im lặng, và phải ghi dòng quyết định (§8).
Thuật ngữ khoá (tên Bible thắng): Khăn Tang / Độ Tang Tro Dày MRN01–Tro Sống MRN15 · Act Mutator Trăng Tro MUT01–Gương Tro MUT12 · Dạng Rèn (aspect) · Dư Âm (ULT_GAUGE) · phòng thủ = chạm ĐÁP + verb giữ riêng của hero · Then Chốt = Edge E37–E40 · trạng thái STS_<NAME> · trạm hub ST_<NAME> · đòn địch mang adaptive_source BASE|ASH.
43. Mục lục tài liệu (docs/)
| File | Mục đích |
|---|---|
00-Design-Bible.md | Canon: logline, trụ cột, INV-01..INV-18, cấu trúc run, meta, độ khó, roster 12 hero, kiến trúc nâng cấp, biome/kẻ địch, Tro Nhớ, truyện, ngân sách mốc, quy ước ID (§11), nhật ký quyết định (§12) |
01-Roadmap.md | Lộ trình 2026-11 → 1.0 Steam → console/mobile: mốc, phạm vi theo ID, KPI thoát mốc, rủi ro, công sức |
10-Combat-Core.md | Lõi chiến đấu: tick 60 Hz, hitbox, chỉ số, công thức sát thương, Thế/khựng/đẩy, STS_, cảm giác trúng đòn, i-frame |
11-Defense-Tells.md | Phòng thủ & tell: ngôn ngữ tell vàng/tím/không màu, loại đạn, hợp đồng ĐÁP/verb giữ/Lướt/Né Hoàn Hảo/Phản, luật công bằng |
12-Hero-Framework.md | Hợp đồng hero H01–H12: bản đồ nút, kit, tài nguyên, kỹ năng/ult/Dạng Rèn, Thông Thạo, frame data/huỷ đòn, mechanics (§9–§10) |
13-Upgrades-Builds.md | Nâng cấp trong run: draft, thuật toán chào thẻ, Edge, Then Chốt, Cộng Hưởng, Tiến Hoá, Relic, affix, mẫu câu thẻ |
14-Adaptive-AI.md | AI kẻ địch S/M/L/XL + Tro Nhớ (AshMemory): hồ sơ PSP A01–A12, MICRO/MESO/MACRO, thế đáp _CV |
15-Horde-Director-Encounters.md | Đạo diễn bầy: ngân sách đe doạ (TP), mẫu spawn, mục tiêu phòng, trần mật độ/hiệu năng, kịch bản sóng |
16-Run-Structure-Map.md | Cấu trúc run: bộ sinh bản đồ mỗi Hồi, 11 loại nút, thưởng, hồi phục, thời lượng, seed |
17-Economy-Balance.md | Kinh tế & cân bằng: đường cong sức mạnh, XP, phong bì hero, ngân sách đòn/kẻ địch, tiền tệ — số kiểm bằng balance_calc.py |
18-Meta-Hub-Progression.md | Vòng meta: hub HUB_BELL_TOWER, 8 trạm ST_, Phục Dựng GD1–GD5, UP_*, Lễ Vật LV01–LV06, mở khoá, Thông Thạo |
19-Difficulty-Modes.md | Khăn Tang MRN01–MRN15, Act Mutator MUT01–MUT12, Ấn Tinh Anh EM01–EM16, 5 mode, Thương Xót |
20-World-Lore.md | Lore Xứ Vọng: lịch sử, địa lý, phe, phản diện, gốc 12 Kẻ Thức, NPC, quy ước đặt tên |
21-Story-Narrative.md | Truyện trong roguelite: cờ FLAG_, StoryDirector, cảnh, 3 kết END_, điểm cắm thoại/codex |
23-World-Map-Hub.md | Bản đồ thế giới + hub Tháp Chuông Gãy: sơ đồ ô, vị trí trạm/NPC, palette, tiến hoá theo Phục Dựng |
30-Art-Direction.md | Art direction: camera & tỉ lệ pixel, sở hữu màu (INV-01), viền/bóng/ánh sáng, mẫu actor/tile/prop, pipeline pixelfx |
31-VFX-Bible.md | VFX: đọc được giữa bầy, phép chiếu 3/4, ngôn ngữ thời gian, hạng cỡ, ngân sách hiệu năng, VFX_<ownerId>_<slug> |
32-Audio-Bible.md | Âm thanh & nhạc: SFX, mix, LUFS, danh sách cue MUS_ (§3), bark, nhạc thích nghi, nối Unity |
40-UI-UX-HUD.md | UI/UX & HUD: UI kit, token màu, font tiếng Việt, mọi màn hình, HUD trong bầy, điều hướng |
41-Controls-Camera.md | Input & camera: action map, bảng nút 4 thiết bị, ngắm, buffer, remap, glyph, camera pixel |
42-Accessibility-Options.md | Mọi tuỳ chọn người chơi: khoảng, mặc định, hệ chạm tới (mù màu, nhạy sáng, phụ đề, vận động, Thương Xót) |
43-Steam-Platform.md | Steam: trang cửa hàng, demo/Next Fest, Early Access, thành tựu, stats/leaderboard, cloud, Deck |
50-Tech-Architecture.md | Kiến trúc Unity 6: module, đường dữ liệu JSON → Unity, lưu/di trú, hiệu năng 250 quái, tất định seed |
51-Data-Schema.md | Hợp đồng dữ liệu: bản đồ file (§1), quy ước ID (§2), chữ (§3), bảng field (§4), tham chiếu chéo (§5), render CSV (§8) |
60-QA-Telemetry-Playtest.md | QA, telemetry, playtest, chứng nhận: chiến lược test theo mốc, giao thức playtest, dashboard, cổng mốc |
generated/ | Bản render từ JSON (INDEX.md, heroes/, enemies/, bosses/, catalogs/) — chỉ để đọc, không sửa |
54. Mục lục dữ liệu (data/)
Chi tiết field: doc 51 §4. Chỉ sửa JSON; tệp/thư mục bắt đầu bằng _ (trừ _bible.json) là render/nháp.
| File / thư mục | Mục đích |
|---|---|
_bible.json | Canon máy đọc: id, tên, số lượng, số khoá (chỉ đọc; đổi = DEC) |
tuning.json | Núm tinh chỉnh theo section (combat, defense, draft, director, ai, ash, run, economy, meta, platform, audio, vfx…) |
curves.json | Đường cong CRV_ (XP, hệ số Hồi, sức mạnh, HP/sát thương địch, may rarity, vàng, Thông Thạo) |
mechanics.json | Từ vựng đóng mechanic/mechanic_key: trigger, primitive, lãnh thổ 12 hero (doc 12 §9–§10) |
statuses.json · tags.json · psp_axes.json | 12 trạng thái STS_ · tag verb + sub-tag · 12 trục lối chơi A01–A12 |
currencies.json | 4 tiền tệ CUR_: nguồn, đích, nhân theo mode |
heroes/H01..H12.json | Kit từng hero: chỉ số, tài nguyên, đòn, 8 kỹ năng, 3 ult, 3 Dạng Rèn, Thông Thạo, phòng thủ |
hero_upgrades/H01..H12.json | 40 Edge/hero (E37–E40 Then Chốt), 6 Cộng Hưởng, 4 Tiến Hoá |
shared_edges.json · shared_resonances.json | Edge chung SE001–SE072 · Cộng Hưởng chung SRS01–SRS11 |
relics.json · affixes.json | Relic RL001–RL060 · affix AF01–AF24 |
elite_modifiers.json | Ấn Tinh Anh EM01–EM16 |
enemies/B1,B2,B3,B4,B6.json | Quái thường EN_ + Tinh Anh EL_ theo biome, kèm đòn _Ann |
bosses/*.json | 7 mini-boss MB_, 4 boss Hồi Người Gác Chuông BS_B1–Thống Lĩnh Yvra & Rồng Khàn BS_B4, Vua Dravos, Mũ Chuông BS_FINAL, Cái Lặng BS_TRUE |
biomes/B1..B6.json · biomes/HUB.json | Môi trường, palette, tile, prop, hazard, phòng, landmark, ambience, nhạc |
encounters.json | Mục tiêu, mẫu spawn, hồ sơ Director, bảng TP, wave_scripts[] |
run_map.json | 6 Hồi (I..VI; V = Kết B5, VI = Bí mật B6), lưới, loại nút, khuôn làn, bảng thưởng, giá Sạp |
events.json | Sự kiện EVT_<Bn>_nn |
mourning_bands.json · mutators.json · modes.json | Khăn Tang MRN01–MRN15 · Act Mutator MUT01–MUT12 · 5 mode |
meta.json | Hub, 8 trạm, Phục Dựng, UP_*, Lễ Vật, nút mở khoá, Thông Thạo, cờ, kinh tế meta |
npcs.json · dialogue.json · endings.json · codex.json | 7 NPC + arc · thoại DLG_ · 3 kết END_ · trang codex CDX_ |
music.json | Cue MUS_ + leitmotif LM_ (danh sách doc 32 §3) |
achievements.json | 60 thành tựu ACH_ |
av/<OwnerId>[__<part>].json | Spec nghe-nhìn của 1 chủ: actor, env asset, vfx[], sfx[], barks[] (hero, EN_B*, MB_, BS_, ENV_*, SHARED, UI) |
_unity/ | Render cho Unity (CSV/JSON: đòn hero, Edge, đòn địch, Director, run map, audio, PlatformTuning) — doc 51 §8 |
_merged.json | Toàn bộ data gộp 1 file (render) |
65. Công cụ (tools/) và bản render
| File | Mục đích |
|---|---|
validate.py | Kiểm schema + nội file + tham chiếu chéo + coverage + từ cấm (doc 51 §6) |
audit_gdd.py | Cổng toàn vẹn G01–G13: schema, ids, refs, av coverage, counts, mechanic uniqueness, tells, palettes, economy, banned terms, text, build, balance |
balance_calc.py | Máy tính cân bằng doc 17 (xp, power, heroes, skill, enemy, enemies, gold, meta, hours, rarity, director) + --check-data |
build_gdd.py | JSON → docs/generated/*.md, data/_unity/*, Design/ArtSpecs/, data/_merged.json |
build_site.py · site/ · check_site.py | Dựng web tĩnh GDD/Full/site/ (API module: tools/site/API.md) · kiểm site trước khi phát hành |
schema/*.schema.json | Schema từng loại file (common.schema.json = kiểu dùng chung) |
76. Bản đồ phụ thuộc hệ thống
00 Design Bible + data/_bible.json (canon)
|
+-------------+--------------+-------------+--------------+
| | | | |
01 Roadmap 51 Data Schema 20 Lore 30 Art Dir 50 Tech Arch
| (schema/*) | | |
| | 21 Story 31 VFX 41 Controls
| | 23 Map/Hub 32 Audio 42 Access.
| | | | 43 Steam
| 10 Combat Core ------+-------------+
| | |
| 11 Defense 12 Hero Framework -- mechanics.json
| Tells |
| \ |
| 13 Upgrades/Builds -- 17 Economy/Balance (balance_calc.py)
| | |
| 14 Adaptive AI -----> 15 Horde Director/Encounters
| | |
| +----> 16 Run Structure/Map
| |
| 18 Meta/Hub <-> 19 Difficulty/Modes
| |
+------------------> 40 UI/UX/HUD
|
60 QA/Telemetry/Playtest (kiểm mọi tầng)
data/**/*.json --validate/audit--> build_gdd.py --> docs/generated, data/_unity, Design/ArtSpecs
build_site.py --> site/
Đọc: đường đi xuống = doc dưới phụ thuộc doc trên. Mỗi doc ghi đủ phụ thuộc ở dòng Phụ thuộc đầu file.
87. Thứ tự đọc theo vai
| Vai | Thứ tự đọc |
|---|---|
| Designer (gameplay/nội dung) | 00 → 10 → 11 → 12 → 13 → 17 → 14 → 15 → 16 → 19 → 18 → 51 → file data của mảng mình |
| Lập trình viên gameplay | 00 (§1 INV, §11 ID) → 50 → 51 → 10 → 11 → 12 → 41 → 14 → 15 → 16 → 13 → 18 → 19 → data/_unity/ |
| Tools / agent AI | README này → 00 §0 + §11 → 51 (§0–§3, §5, §8) → tools/schema/ → mechanics.json → doc sở hữu file mình sửa → chạy validate.py --file |
| Pixel artist | 00 §1 (INV-01/02) + §5 + §7 → 30 → .claude/docs/ArtStyle.md → 20 → 23 → av/*.json (actors, env) → Design/ArtSpecs/ |
| VFX | 00 §1 → 30 → 31 → 11 (tell) → 10 §6 → av/*__vfx.json + av/SHARED__vfx.json |
| Audio | 00 §1 → 32 → 11 (tell âm thanh) → 10 §6 → music.json → av/*__actor_sfx.json, SHARED__sfx.json, UI.json |
| Writer | 00 §9 → 20 → 21 → 23 → npcs.json, dialogue.json, endings.json, codex.json, events.json |
| QA | 00 §1 (INV) → 60 → 42 → 41 → 11 → 19 → 51 §5 → chạy audit_gdd.py |
| Producer | 00 §0–§2 + §10 + §12 → 01 → 43 → 60 → 17 (tóm tắt) → site/index.html |
98. Kiểm tra, kiểm toàn vẹn, dựng (chạy từ gốc repo)
Danh sách từ cấm nằm ngoài repo: truyền --banned-terms <file|thư mục> hoặc đặt env BW_BANNED_TERMS.
py -3 GDD/Full/tools/validate.py --file GDD/Full/data/heroes/H03.json --banned-terms <thư mục từ cấm> # sau mỗi lần sửa 1 file
py -3 GDD/Full/tools/validate.py --all --banned-terms <thư mục từ cấm> # trước merge: 0 ERROR
py -3 GDD/Full/tools/audit_gdd.py --banned-terms <thư mục từ cấm> # cổng G01–G13; --only G03,G05 · --file <data> · --json <báo cáo>
py -3 GDD/Full/tools/balance_calc.py --selftest # ví dụ doc 17 + --check-data
py -3 GDD/Full/tools/build_gdd.py # md, csv, art, merged (--only md,csv · --schema-check)
py -3 GDD/Full/tools/build_site.py # web tĩnh → GDD/Full/site/
py -3 GDD/Full/tools/check_site.py --banned "<glob file từ cấm>" # kiểm site trước phát hành
Python = py -3, UTF-8, chỉ stdlib + jsonschema. Không bao giờ để JSON hỏng trên đĩa; bản render luôn dựng lại từ JSON, không sửa tay.
109. Đổi canon
- Không sửa dữ liệu trước. Ghi mục quyết định có ngày ở Bible §12:
DEC-YYYY-MM-DD-nn— mục bị thay · cũ → mới · lý do · người duyệt. - Sửa
00-Design-Bible.md+data/_bible.jsoncùng lượt; đổi INV cần quyết định riêng + chạy lại kiểm màu INV-01 + test 5 s. - Doc/dữ liệu con lệch canon: thêm dòng quyết định có ngày vào ghi chú của chính file đó, dạng
2026-11-07 - <cũ → mới, lý do>(doc: mục "Quyết định đã chốt"; JSON: field ghi chú*_vigần nhất). - Thêm LOẠI thực thể, đổi số lượng, tạo id ngoài dải canon (Edge 41+, SE073+, RL061+…), thêm field (sửa
tools/schema+ doc 51 §4), thêm keymechanics.json(sửa doc 12 §9/§10) → đều cần DEC. - Chạy
validate.py --all+audit_gdd.pyđến exit 0, rồibuild_gdd.py+build_site.py. - Không ghi tên game, studio, nhà phát hành, thương hiệu hay nhân vật có thật vào bất kỳ file nào trong repo.