1Giới thiệu & bản đồ tài liệu
HUB_BELL_TOWER — sơ đồ ô, 8 trạm, vị trí NPC, phòng/khu, palette, tile/prop, ambience, tiến hoá theo Phục Dựng. Phụ thuộc: 00-Design-Bible.md §3 + data/_bible.json (meta.hub, biomes[], npcs[]) · 16-Run-Structure-Map.md §1, §3, §7 · 18-Meta-Hub-Progression.md §1–§3 · 20-World-Lore.md §4, §8 · 30-Art-Direction.md §3, §4, §6 · 31-VFX-Bible.md §2–§6 · 32-Audio-Bible.md §3.7, §5.2, §7.2, §10.1 · 51-Data-Schema.md §4.13–§4.14. Được dùng bởi: data/biomes/HUB.json · data/av/ENV_HUB.json · dev Unity (scene Hub_BellTower, Hub_TowerLoft, RunController DOCK) · agent art (pixelfx env/prop) · agent audio · agent biome B1–B6 (luật nút DOCK, chuyển cảnh).Mục lục chi tiết (## và ###)
- 0. Phạm vi & nguồn sự thật
- 1. Bản đồ thế giới — Xứ Vọng
- 1.1 Sơ đồ (nhìn từ trên, Bắc lên trên; không theo tỉ lệ)
- 1.2 Vùng
- 1.3 Luật thế giới áp cho mọi bản đồ
- 2. Run đi qua các vùng
- 3. Hub HUB_BELL_TOWER — Tháp Chuông Gãy
- 3.1 Lưới & quy đổi toạ độ
- 3.2 Sơ đồ đầy đủ (1 ký tự = 1 ô 16 px màn; Bắc lên trên)
- 3.3 Trạm, NPC, prop (vị trí khoá; ô theo doc 18 §1.1)
- 3.4 Khu/phòng (rooms[] trong HUB.json)
- 4. Mood, ánh sáng, palette
- 4.1 Nguồn sáng
- 4.2 Ramp (token → hex; mọi màu S ≤ 40%)
- 5. Tileset & prop (spec đủ trong av/ENV_HUB.json › env_assets, 73 mục)
- 6. Âm thanh & nhạc
- 7. Tiến hoá hub theo truyện (Phục Dựng + cờ)
- 8. Kể chuyện bằng môi trường (đặt cố định, không thoại)
- 9. VFX & SFX hub (spec đủ trong av/ENV_HUB.json)
- 10. Dữ liệu & dựng Unity
- Quy tắc cho dev/AI
- Quyết định đã chốt
20. Phạm vi & nguồn sự thật
| Nội dung | Nguồn (thắng khi lệch) |
|---|---|
| Tên hub, 8 trạm, 7 NPC, GD1–GD5 + giá | Bible §3 / _bible.json meta.hub |
| Ô trạm (x, y), mở trạm, cảnh GĐ | doc 18 §1.1–§3 |
| Dữ liệu hub (palette, tile, prop, phòng, landmark, ambience) | data/biomes/HUB.json (doc này giải thích) |
| Spec sprite tile/prop + VFX + SFX hub | data/av/ENV_HUB.json |
| Hub = 0 quái, 0 hazard, 0 sát thương | doc này (khoá) |
31. Bản đồ thế giới — Xứ Vọng
Xứ Vọng là khối núi hình chuông úp: chân = đồi làng, sườn = đầm + mỏ đồng, đỉnh = vực + kinh đô treo + Đại Chuông. Sông Tro chảy vòng chân núi (sông vành): bờ trong = Xứ Vọng, bờ ngoài = Bờ Lặng (B6). Kênh Dẫn Hồn chảy từ đỉnh xuống, đổ ra Sông Tro ngay cạnh hub. Run đi từ vành vào tâm, thấp lên cao.
1.1 Sơ đồ (nhìn từ trên, Bắc lên trên; không theo tỉ lệ)
.-----------------------------.
/ [B5] ĐỈNH CHUÔNG CÂM \
/ sân tròn r260 dưới miệng \
/ Đại Chuông · ngai Mũ Chuông \
| ......... Cầu Xích Vua ........... |
| [B4] THÀNH CHUÔNG TREO |
| kinh đô treo xích qua Vực Vọng |
| tháp cờ hiệu · chuồng rồng tro |
| ║ |
mỏ đồng | [B3] LÒ ĐÚC CÂM ║ Lò Mẹ |
(sườn Tây)| băng chuyền khuôn║ kho chuông câm |
| ║ Kênh Dẫn Hồn |
| [B2] ĐẦM VẢI LIỆM (đò ngược kênh) |
| Rừng Đước Liệm · Bến Đò Lật |
| ║ |
| [B1] ĐỒI MỘ TRO ║ |
| Làng Gặt · Nhà Nguyện Chuông Đá |
\ Sân Hầm Tro ║ /
~~~~~~~~~~~~~~~~~~~~\~~[HUB] THÁP CHUÔNG GÃY ═╝~~~~~~~/~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~ SÔNG TRO (sông vành, chảy Đông → Tây) ~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
░░░░░░░░░░░░░░░░ [B6] BỜ LẶNG — bờ ngoài, Bãi Gương ░░░░░░░░░░░░░░░░░░
║ = Kênh Dẫn Hồn (đỉnh → sông) · ═╝ = cửa kênh đổ ra sông cạnh hub
1.2 Vùng
1.3 Luật thế giới áp cho mọi bản đồ
- Tro rơi như tuyết B1–B4, dày dần theo độ cao (hub = 40% mật độ B1); B5 tro lơ lửng/rơi ngược; B6 không tro.
- Không mặt trời: trăng tro xám là nguồn chung, đặt cố định trên-trái; ánh ấm chỉ ở lửa người sống (hub có nhiều nhất).
- Chuông có ở mọi vùng. Chuông phe địch câm/nứt/đục; tiếng ngân trong trẻo chỉ của mảnh lưỡi hero và chuông tháp hub (Chuông Thử 196 Hz, GD5 chuông lớn).
- Nước: hub sông/kênh xám-lam trôi; B2 nước nông; B6 gương phẳng không phản chiếu, không tiếng vọng.
42. Run đi qua các vùng
HUB ──(ST_DOCK: chọn mode, cảnh 6 s)──► B1 Hồi I (R1…R5 → R6 BOS BS_B1)
│ DOCK ≤ 20 s (đò ngược Kênh Dẫn Hồn)
▼
B2 Hồi II (+ Act Mutator) → BS_B2
│ DOCK
▼
B3 Hồi III → BS_B3
│ DOCK
▼
B4 Hồi IV → BS_B4
│ DOCK + leo Cầu Xích Vua (20 s)
▼
B5 Kết: ải 60 s → BS_FINAL ──► ENDING
│ chỉ khi FLAG_SHORE_OPEN: đò cuối xuôi kênh 15 s
▼
B6 Bí mật: ải 45 s → BS_TRUE ──► END_QUIET_SHORE
chết ở bất kỳ đâu / thắng ──► SUMMARY ──► mảnh lưỡi kéo về Lửa Canh ──► HUB (thức dậy ST_HEARTH)
| Chặng | Phương tiện | Thời gian | Màn | Ghi chú |
|---|---|---|---|---|
| HUB → B1 | đò Calla men bờ 3 s + đi bộ lên bậc đá chân đồi 3 s | 6 s (bỏ qua sau 1 s) | Cảnh Xuất Phát RM_HUB_departure | đồng hồ run bắt đầu khi bản đồ Hồi I hiện |
| B1→B2, B2→B3, B3→B4 | đò ngược Kênh Dẫn Hồn | ≤ 20 s | Boong Đò Calla (nút DOCK) RM_HUB_ferry_deck (nút DOCK) | hồi 25% HP · Sạp Rong 4 ô · 1 lần đổi thẻ miễn phí · 1 beat Calla ≤ 6 s |
| B4→B5 | DOCK rồi leo Cầu Xích Vua (không đò) | ≤ 20 s + 20 s | Boong Đò Calla (nút DOCK) RM_HUB_ferry_deck → cảnh cầu (doc biome B5) | không bản đồ ở Kết |
| B5→B6 | đò cuối xuôi kênh ra sông, sang bờ ngoài (Chìa Đò) | 15 s | cảnh (doc biome B6) | chỉ khi Run sau mở B6 sau BS_FINAL (BS_TRUE). FLAG_SHORE_OPEN |
| chết/thắng → HUB | mảnh lưỡi kéo về (HubArrive (vào hub sau chết/thắng) t=0, trước hearth_flare 0.4 s VFX_ENV_HUB_blade_return) | màn tổng kết + 1.2 s thức dậy | scene hub | "Thức Lại" bỏ hub, vào run mới ≤ 5 s |
Nút DOCK dùng chung 1 phòng: Boong Đò Calla (nút DOCK) RM_HUB_ferry_deck (480 × 540 px sàn, camera cố định 480×270). Nền = parallax 3 lớp của biome Hồi kế (0.2× / 0.5× / 0.8×) trượt Tây → Đông 24 px/s; nước kênh tint LUT biome kế. Biome B1–B5 chỉ cung cấp 3 lớp parallax ENV_<Bn>_dock_bg_far|mid|near (đề xuất cho agent biome); nếu thiếu → dùng parallax mặc định sương tro của hub.
Bến (DOCK) của B1–B5 ở doc 20 (Bậc Đá Bến Kênh, Bến Calla, Bến Cống Xỉ, Bến Chân Cầu Xích…) = nơi đò rời bờ, chỉ hiện qua parallax ENV_<Bn>_dock_bg_far|mid|near của phòng Boong Đò Calla (nút DOCK) RM_HUB_ferry_deck; không có phòng DOCK riêng trong biomes/<Bn>.json.
53. Hub HUB_BELL_TOWER — Tháp Chuông Gãy
1 scene Hub_BellTower + 1 sub-scene Hub_TowerLoft. 0 quái · 0 hazard · 0 sát thương (trừ đòn hero vào bù nhìn Sân Tập). Đi bộ tốc hero gốc; dịch chuyển nhanh MAP (Back/Tab) → danh sách trạm đã mở → mờ 0.25 s (FastTravel (MAP → chọn trạm): t=0 ở chỗ cũ, t=0.25 ở trạm đích VFX_ENV_HUB_fast_travel) → đứng trước trạm. Trong r24 px của trạm → nhắc INTERACT (A/E).
3.1 Lưới & quy đổi toạ độ
| Đại lượng | Giá trị |
|---|---|
| Lưới hub | 60 × 34 ô màn 16 px = 960 × 544 art px màn = 960 × 1.088 px sàn (tilt 0.5) |
| Ô (x, y) → px sàn | (16x + 8, 32y + 16) |
| Ô (x, y) → px màn | (16x + 8, 16y + 8) |
| Tile Unity | FLOOR 32×16 màn (cell (2,1)) = 2 × 1 ô hub; PPU 16 |
| Camera | 480×270, theo hero, kẹp trong scene, deadzone 24×12, zoom 1× (menu Lửa Canh 1.25×) |
| VD | Lửa Canh ô (30,14) → sàn (488, 464) · màn (488, 232) |
3.2 Sơ đồ đầy đủ (1 ký tự = 1 ô 16 px màn; Bắc lên trên)
##^^^^^^^^^^^^^^^^^^^^^^^^^^::::^^^^^^^^^^^^^^^^^^^^^^^%%%##
##^^^^^^^^^^^^^^^^^^^^^^^^^^:||:^^^^^^^^^^^^^^^^^^^^^^^%%%##
##^^^^^^^^^^^^^^^^^^^^^^^^^^::::^^^^^^^^^^^^^^^^^^^^^^^%%%##
##.......................s..::::...s..................-%%%##
##...........................GGG......................-%%%##
##....................s...............s...............-%%%##
##............................B.......................-%%%##
##....................................................-%%%##
##....................s....TTTTTTTT...s...............-%%%##
##..............#####......TTTTTTTT.W...#####.........-%%%##
##..............#####......TTTTTTTT./...#####.........-%%%##
##...............FFF.......TTTTTTTT./....LLL..........-%%%##
##...............FFF.......TTTTTTTT/.....LLL..........-%%%##
##............................:.......................-%%%##
##...........................HHH.............e.e.e.e.e-%%%##
##........................o.......o...................-%%%##
##............................S..............e.e.e.e.e-%%%##
##............................:.......................-%%%##
##......::::::::::::o:::::::::::::::::::o::::::::::...-%%%##
##............................:...........o,,,,,,,,,,o-%%%##
##............................:...........,,,,,,,,,,,,-%%%##
##............................:...........,,,,,,,,,,,,-%%%##
##.........#######............:...........,,,,,,,,,,,,-%%%##
##...........MMM..............:...........,,,,,YYY,,,,-%%%##
##...........MMM..............:...........,,,,,YYY,,,,-%%%##
##............................:...........,,,,,,,,,,,,-%%%##
##..........................=====.........,,,,,,,,,,,,-%%%##
##.........................o=====o........,,,,,,,,,,,,-%%%##
##..........................=====.........o,,,,,,,,,,o-%%%##
##,,,,,,,,,,,,,,,,,,,,,,,,,,=====,,,,,,,,,,,,,,,,,,,,,-%%%##
##----r-----r-------r-------=====-----r-------r----r--.%%%##
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~DDD~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~DDD~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.3 Trạm, NPC, prop (vị trí khoá; ô theo doc 18 §1.1)
| Trạm | Ô prop chủ | Prop chủ (cao) | 2 prop phụ | NPC · ô · hướng · idle | Mở | Tương tác → |
|---|---|---|---|---|---|---|
| Lửa Canh ST_HEARTH Lửa Canh | (30,14) | ST_HEARTH prop chủ 64 px: bếp đá tròn, lửa hổ phách 8 frame @8 fps, t… ENV_HUB_hearth_fire 40 px | hearth_bench, hearth_kettle | Bà Ulla NPC_ULLA (28,14) se; ngồi ghế khi idle > 20 s | sẵn | hero/ult/Dạng Rèn/2 kỹ năng khởi đầu · Phục Dựng GD1–GD5 · beat truyện |
| Lò Rèn Vọng ST_FORGE Lò Rèn Vọng | (18,12) | ST_FORGE prop chủ 56 px: lò đá nhỏ + đe sắt; than lò 6 frame @8 fps. … ENV_HUB_forge_anvil 44 px | forge_bellows, forge_quench_tub | Lão Grem NPC_GREM (20,13) sw; rèn mỗi 6–9 s nhịp 3+3+2 | xong run 1 | mở hero (Mảnh Vọng) · AS2/AS3 · UL2/UL3 · công thức Tiến Hoá |
| Sổ Tang ST_LEDGER Sổ Tang | (42,12) | ST_LEDGER prop chủ 48 px: bàn viết dưới hiên, Sổ Tang dày mở, lọ mực,… ENV_HUB_ledger_desk 36 px | ledger_shelves, ledger_memory_altar | Thầy Hol NPC_HOL (43,13) sw; lật trang 8–12 s | xong run 1 | codex ~120 trang · lịch sử run · bia mộ · Sổ Thù · Bàn Thờ Ký Ức (gột Sẹo 200) |
| Chuông Thử ST_TEST_BELL Chuông Thử | (30,6) | ST_TEST_BELL prop chủ 56 px: khung gỗ + chuông nhỏ đồng (vành 20 px).… ENV_HUB_test_bell 56 px | test_bell_lantern, mourning_band_rack | Nhóc Lem NPC_LEM (31,7) s; ngồi bậc từ đầu (trước GD1 chỉ thoại, ≤ 3 beat) | GD1 | Tro Hồn → Nến Canh 100:1 · Mắt Tro · Khăn Tang (sau END_BELL_TOLL) |
| Chợ Đò ST_MARKET Chợ Đò | (14,24) | ST_MARKET prop chủ 56 px: sạp gỗ mái vải tang, hộp giấy lời trăng trố… ENV_HUB_market_stall 56 px | market_word_strings, market_scale (+ market_stall_b GD2) | Bà Mott NPC_MOTT (16,24) se; đếm tiền 10–14 s | xong run 2 | mở Edge chung/Relic vào pool · Lễ Vật · nâng Đổi/Xoá/Giữ |
| Bến Đò ST_DOCK Bến Đò | (30,30) | ST_DOCK prop chủ 64 px cao gồm sào: đò gỗ dài, đèn mũi, nhấp nhô 8 fr… ENV_HUB_dock_ferry 32 px (+ sào) | dock_mooring_post, dock_lantern_pole | Calla NPC_CALLA (31,31) n, mũi đò chống sào | sẵn | chọn mode (STANDARD/DAILY/Truy Tuần/ENDLESS/BOSS_RUSH/CUSTOM) · xuất phát · Chìa Đò |
| Sân Tập ST_YARD Sân Tập | (48,24) | ST_YARD prop chủ 44 px = cọc + Bù Nhìn Răm (NPC). Clip hurt 9 frame @… ENV_HUB_yard_dummy 44 px (= Bù Nhìn Răm NPC_RAM) | yard_weapon_rack (43,20), yard_tell_post (52,20) | Bù Nhìn Răm NPC_RAM là bù nhìn trên cọc | xong run 3 | tell dummy · bài tập ĐÁP · replay 10 s · frame data · đo DPS · TT1–TT5 |
| Tủ Áo Tang ST_WARDROBE Tủ Áo Tang | (36,9) neo cửa loft | ST_WARDROBE prop chủ 48 px trong loft: rương áo kinh đô nắp mở, vải t… ENV_HUB_wardrobe_chest 36 px | wardrobe_mirror, wardrobe_rail | — | GD4 | skin (LUT trong slot) · trang trí tháp · loadout |
- Trạm chưa mở: prop có mặt, phủ vải xám (biến thể 0), không đèn, không nhắc
INTERACT; NPC chưa xuất hiện (trừ Lem). Mở lần đầu → StationUnlocked (lần đầu trạm mở: FORGE/LEDGER sau run 1, MARKET run … VFX_ENV_HUB_station_unveil + StationUnlocked SFX_ENV_HUB_station_unveil + camera pan 0.6 s tới trạm rồi trả. - NPC không bao giờ chắn lối: va chạm NPC = elip r8, đứng ngoài lối
:; bark ≤ 1 dòng khi hero đi qua r48 (cooldown 30 s/NPC) + BarkShown speaker=NPC_* (1 lần khi bark mở) SFX_HUB_npc_murmur. - Trang trí đặt được (doc 18 §8): 6 bệ tượng sân trên · 3 kệ hộp nhạc + 10 khung tranh trong loft · nến trên bia.
3.4 Khu/phòng (rooms[] trong HUB.json)
| Id | Khu | Ô | Cỡ sàn px | Prop chính | Camera / ghi chú |
|---|---|---|---|---|---|
| Scene Hub_BellTower (toàn cảnh) RM_HUB_bell_tower | toàn scene | 0–59 × 0–33 | 960 × 1.088 | tháp, đèn, lau sậy | sơ đồ §3.2 |
| Sân Lửa Canh RM_HUB_hearth_court | Sân Lửa Canh | 24–36 × 13–17 | 208 × 160 | lửa, ghế, ấm, bàn Lem | zoom 1.25× khi menu, letterbox 12 px |
| Sân Trên — Chuông Gãy RM_HUB_upper_yard | Sân Trên — Chuông Gãy | 18–42 × 3–8 | 400 × 192 | chuông gãy, Chuông Thử, 6 bệ | tháp mờ α 0.45 khi hero sau tháp; camera lệch lên 16 px |
| Chái Lò Rèn RM_HUB_forge_wing | Chái Lò Rèn | 12–24 × 9–15 | 208 × 224 | đe, bễ, thùng tôi | vũng lò r56 α 0.22 |
| Hiên Sổ Tang & Hàng Bia RM_HUB_ledger_porch | Hiên Sổ Tang & Hàng Bia | 38–53 × 9–17 | 256 × 288 | bàn, kệ, bàn thờ, 10 bia | — |
| Bờ Chợ Đò RM_HUB_market_bank | Bờ Chợ Đò | 8–20 × 21–28 | 208 × 256 | 2 sạp, dây lời, cân | — |
| Sân Tập RM_HUB_training_yard | Sân Tập | 42–53 × 19–28 | 192 × 320 | dummy, giá, cột nhịp | vùng sạch tell r96 quanh (48,24); khoá camera khi bài tập |
| Bến Đò RM_HUB_dock | Bến Đò | 22–38 × 26–33 | 272 × 256 | đò, cọc, đèn, cống kênh | — |
| Tầng Ba Tháp (Tủ Áo Tang) RM_HUB_tower_loft | Tầng Ba Tháp | sub-scene | 320 × 352 | rương, gương, giá áo, kệ nhạc, tranh | cửa ở (36,10); mờ 0.25 s |
| Cổng Đồi RM_HUB_hill_gate | Cổng Đồi | 26–33 × 0–4 | 128 × 160 | cổng đá | sương chặn; hero nói "Chưa. Bến Đò trước." 1 lần/phiên |
| Boong Đò Calla (nút DOCK) RM_HUB_ferry_deck | Boong đò (nút DOCK) | cảnh riêng | 480 × 540 | đò lớn 288×96 màn | camera cố định; §2 |
| Cảnh Xuất Phát RM_HUB_departure | Cảnh xuất phát | cảnh riêng | 960 × 256 | đò, lau sậy, bậc đồi | 6 s, camera trượt 96 px/s |
- Schema bắt
objectives≥ 1 vànode_types≥ 1 cho mọi phòng: phòng hub ghi["TRIAL"]/["DOCK"]làm giá trị giữ chỗ.RoomPickercủa nútDOCKchỉ được chọn Boong Đò Calla (nút DOCK) RM_HUB_ferry_deck; mọiRM_HUB_*khác chỉ dùng trong scene hub;MapGen/Directorbỏ qua file HUB. spawn_edgesở hub = hướng người chơi đi vào khu (không có quái spawn).
64. Mood, ánh sáng, palette
Mood: nơi nghỉ duy nhất — ấm, chậm, buồn không tuyệt vọng. Thời điểm: đêm vĩnh viễn, trăng tro sau mây, tro rơi mỏng 40% B1.
4.1 Nguồn sáng
| Nguồn | Token | Hex | Vũng | Khi |
|---|---|---|---|---|
| Trăng tro (toàn cảnh, trên-trái) | light_moon | #a9b0c4 | phủ α 0.10; dải cửa sổ α 0.12 | luôn |
| Lửa Canh | light_hearth | #d9b48c | r96 α 0.25, nhấp nháy 1.5 Hz ±0.04 | luôn (tắt ở cảnh END_QUIET_SHORE) |
| Lò rèn | light_forge | #d4a284 | r56 α 0.22, +0.03 mỗi nhát búa 0.2 s | ST_FORGE mở |
| Đèn lồng trạm/cột | light_lantern | #d9c7a0 | r40 α 0.18 | trạm mở; cột sáng = 1 + GĐ |
| Chuông tháp GD5 | light_bell | #c8c0b0 | toàn sân r240 α 0.08 | GD5 |
- Color grading
LUT_HUB: shadow nâng về#23212a, highlight +3% R, bão hoà ×0.95. V sàn base: GD0 0.17 → +0.02/GĐ → GD5 0.27 (luôn < V hero / 1.35). - Vũng sáng động tối đa trong hub: 12 (≤ trần 24, doc 31 §6.1).
4.2 Ramp (token → hex; mọi màu S ≤ 40%)
| Nhóm | Tông (sáng → sâu) |
|---|---|
Sàn (mortar dark base alt alt2 lit) | #1b1819 #221e1f #2c2728 #292425 #2f2a2b #352f30 |
| Tường/đá w0..w3 | #6e6662 #544d4a #403a38 #2f2a29 |
| Gỗ bến | #a8998a #7a6d62 #54493f #382f29 |
| Vải tang ngà | #e0dccf #aaa69a #77746b #4c4a44 |
| Đồng chuông xỉn | #b8a888 #8a7c62 #5e5442 #3d362b |
| Sông Tro | #8c9298 #666b72 #464a51 #2e3036 |
| Phụ | đất tro #3a3533 · rêu chết #5f6656 · than #d4a284 · void #15131d · ink #0b0a10 |
Cấm (forbidden hues): vàng tell hue 32–62° S ≥ 45% (chỉ #ffd84a) · tím tell 260–290° S ≥ 45% (chỉ #b14cff) · đỏ thẫm 340–10° S > 30% · mọi pixel môi trường S > 40% · tâm slot 12 hero ±10° với S > 30% trên đèn/prop phát sáng · vòng chấm #e8e4f0 + gạch chéo trên tile/decal · #f2ead8 (dành ◆ Tro Nhớ).
75. Tileset & prop (spec đủ trong av/ENV_HUB.json › env_assets, 73 mục)
| Loại | Số | Id (ENV_HUB_…) | Autotile / anim |
|---|---|---|---|
| FLOOR | 5 bộ × 8 | floor_quay floor_plank floor_ash_soil floor_tower floor_path | ngẫu nhiên theo seed ô, 60/40; ash_soil↔quay RuleTile 16; path RuleTile 16 |
| FLOOR_DETAIL | 4 × 8 | detail_crack detail_ash detail_moss detail_pebble | ≤ 30% ô; Sân Tập ≤ 5% |
| EDGE | 2 | edge_river edge_cliff | RuleTile 47 (blob 8 hướng), mặt rơi 24 px |
| WALL_N / WALL_S | 2 / 1 | wall_n_tower wall_n_bank / wall_s_rail | RuleTile 16; WALL_N mờ α 0.45 khi che |
| LIQUID | 2 | liquid_ash_river liquid_canal | 8 frame @8 fps loop |
| DECAL | 8 | decal_ash_drift wax_drip footprints scorch paper_scraps chalk_lines bell_dent puddle | lớp Map, ≤ 120/scene |
| LIGHT | 4 | light_hearth light_lantern light_forge light_moon_shaft | shader SpriteAdd elip pixel |
| PROP / PROP_ANIM | 45 | 8 prop chủ trạm + 16 phụ + 21 cảnh (tháp, chuông gãy/treo, bệ, bia, đèn, lau sậy, đò lật, khăn, thùng, củi, bụi, cổng, cống, cầu thang, nến, giàn Phục Dựng, bàn Lem, sạp 2, hộp nhạc, tranh) | xem từng mục |
- Phá huỷ: hub không có vật phá được, không rơi đồ, không tiền. Tương tác chỉ qua
INTERACT(trạm, bia, bệ, chuông gãy, kệ hộp nhạc) hoặc chạm (lau sậy, bụi khô rung + HeroOverlap ENV_HUB_river_reeds / ENV_HUB_ash_shrub (+ là spot) SFX_ENV_HUB_reed_rustle). - Ngoại lệ chiều cao: Thân Tháp Chuông Gãy 176 px (LMK_HUB_bell_tower), ô (27–34, 8–12). 6 … ENV_HUB_tower_body 176 px (hub không là sân đấu → trần 64 px doc 30 §6.2 không áp); che hero → α 0.45 + x-ray.
- Hazard: 0 (schema
HZ_chỉ cho B1–B6). Lý do: hub là nơi an toàn tuyệt đối; tương tác môi trường thay hazard = prop phản ứng (lau sậy, bụi, chuông gãy, dummy).
86. Âm thanh & nhạc
| Lớp | Id | Luật |
|---|---|---|
| Bed | SceneLoaded Hub_BellTower (phát suốt; lớp GD1–GD5 bật theo FLAG Phục … SFX_HUB_amb_bed 90 s stereo, −30 LUFS-I | lửa + sông + gió tháp; +1 lớp mỗi GĐ (crossfade 2 s) |
| Spot (7) | AmbienceSpot hub (1 spot/6–14 s chung cho cả nhóm spot hub, pan ngẫu … SFX_ENV_HUB_river_lap tower_creak ash_gust rope_knock reed_rustle fire_pop far_bell_hum | 1 spot / 6–14 s, pan ±0.6, không lặp loại liền |
| Loop vị trí | Positional loop tại ENV_HUB_canal_sluice (suy giảm r 320 px) SFX_ENV_HUB_canal_flow (cống kênh, r320) · Loop khi đò chạy (RM_HUB_departure, RM_HUB_ferry_deck) — gắn VFX_ENV_… SFX_ENV_HUB_ferry_creak (đò chạy) | — |
| Nhạc | HUB · HUB_BELL_TOWER Tháp Chuông Gãy (mọi trạm ST_*) · S0 + stem GĐ Phục Dựng đã mở (GD1–… MUS_hub_bell_tower 72 3/4 F Lydian (GD5 → D); S0 + 5 stem GĐ; stinger depart, hero_<Hxx> | snapshot SN_HUB (Music −6 dB, Ambience −4 dB) |
| Nhạc DOCK | DOCK · Bến Giữa Hồi (nút DOCK sau boss Hồi I–IV, ≤ 20 s, Sạp Rong + chở đò Calla sang Hồi… MUS_dock_crossing 84 6/8 D Dorian | crossfade 8 s sang cue Hồi kế |
| Hộp nhạc (18) | phát lại 18 cue canon trong loft, thay stem hub khi đang phát | 1 hộp/lần |
- Cấm trong hub: âm tell (chuông đục 1 tiếng, "tinh", rít tím) ngoài Sân Tập; reverb > 1.2 s; tiếng ngân trong ngoài TestBellStruck (INTERACT Chuông Thử, đổi Nến Canh, buộc Khăn Tang) SFX_HUB_test_bell (196 Hz), ForgeUnlock (rèn mở hero): 3 nhát cách 0.3 s + tôi nước t=0.9 s SFX_HUB_forge_unlock (đuôi mảnh lưỡi), GD5 cảnh treo chuông (t=6 s) SFX_ENV_HUB_bell_raise, hum GD5 98 Hz.
97. Tiến hoá hub theo truyện (Phục Dựng + cờ)
| Mức | Điều kiện | Thay đổi hình (cộng dồn) | Đèn / âm / nhạc |
|---|---|---|---|
| GD0 | mới | tầng trệt tối, chóp tháp gãy; chỉ Lửa Canh + Bến Đò sáng; trạm khác phủ vải; Lem ngồi cạnh chuông tối | 1 cột đèn; bed gốc; S0 |
| run 1 / 2 / 3 | xong run | mở FORGE + LEDGER / MARKET / YARD (lột vải) | đèn trạm bật |
| GD1 · 500 | ST_TEST_BELL sáng đèn; lớp sáng tầng trệt. FLAG_LEM_LIGHT | Chuông Thử sáng, đèn lồng cột, nến chân chuông; cảnh Lem gõ thử 8 s | +lớp bấc đèn; stem hộp nhạc LM_LEM |
| GD2 · 1.200 | +12 mục pool ở Chợ Đò. FLAG_MARKET_WIDE | sạp thứ 2, 6 dây lời trăng trối, ván mới ở chợ | +chợ lầm rầm; stem đàn nguyệt |
| GD3 · 2.500 | MRN11–MRN15 khả dụng sau END_BELL_TOLL; Relic tối đa 4/run. FLAG_MOURNING_DEEP | tầng hai cửa sổ sáng; 5 dải khăn tang quanh lan can | +lò rèn xa; stem kèn bầu |
| GD4 · 4.000 | Mở ST_WARDROBE; Lửa Gửi 2/run. FLAG_WARDROBE_OPEN | tầng ba sáng, cầu thang mở, loft + Tủ Áo Tang | +vải phần phật; stem dây |
| GD5 · 6.000 | Chuông tháp treo lại; 1/4 điều kiện FLAG_SHORE_OPEN. FLAG_BELL_HUNG | chuông lớn treo chóp; chuông gãy biến mất → decal_bell_dent; 6 cột đèn sáng; vòng sáng toàn sân | hum 98 Hz; stem LM_BELL; key → D |
| END_BELL_TOLL | kết 1 | tro rơi chậm 20%; giá Khăn Tang có dải | — |
| END_QUIET_SHORE | kết thật | Ulla tắt Lửa Canh; dây lời trăng trối trống; Lem vắng; biến thể "bình minh xám" (cảnh kết) | nhạc ENDING · END_QUIET_SHORE Bến Bình Yên (hạ BS_TRUE ở B6) · 210 s tuyến tính đi cùng 12 thẻ… MUS_end_quiet_shore |
- Mỗi GĐ = 1 lớp prop + 1 đèn (α ≤ 0.25) + 1 lớp ambience + 1 stem; KHÔNG 5 bộ art (Bible §3). Cảnh GĐ: giàn
restore_scaffold4 s + RestoreStageBought GD1–GD5 (cảnh 6–12 s, VFX chạy 0–4 s) VFX_ENV_HUB_restore_stage + RestoreStageBought GD1–GD5 (t=0 cảnh) SFX_HUB_restore_stage (biến thể n = GĐ n).
108. Kể chuyện bằng môi trường (đặt cố định, không thoại)
- Hàng Bia 10 bia gỗ: 8 tên Kẻ Thức đã ngã trước người chơi + 2 bia trống Hol để sẵn.
- Chuông Gãy 13 vết khía vành = 13 mảnh lưỡi; vết 13 sâu hơn.
- Bến Đò 4 cọc, 3 gãy; chỉ cọc của Calla còn dây mới.
- Dây lời trăng trối tăng theo GĐ; sau kết thật trống trơn (Mott trả lại hết).
- Bát cháo của Lem luôn đầy, nguội — em không ăn; gương loft không phản chiếu Lem.
- Mũ sắt của Răm khắc tên Đời Một không khớp Sổ Tang (không giải ở 1.0).
- Dấu chân tro trên bậc Cổng Đồi: +1 cặp/run, tối đa 24.
- Bờ kia chỉ là dải sương phẳng không phản chiếu; có Run sau mở B6 sau BS_FINAL (BS_TRUE). FLAG_SHORE_OPEN → 1 đốm bạc nhợt nhấp nháy 0.25 Hz.
- Giá Khăn Tang số dải = Độ Tang đang buộc / 3.
119. VFX & SFX hub (spec đủ trong av/ENV_HUB.json)
| Nhóm | VFX (VFX_ENV_HUB_…) | SFX |
|---|---|---|
| Khí quyển (loop) | ash_snow hearth_embers river_mist dust_motes canal_foam far_shore_glint | bed + 7 spot + canal_flow |
| Trạm | hearth_flare forge_sparks forge_quench test_bell_ring ledger_dust paper_flutter straw_burst cloth_shake scar_cleanse candle_light plinth_place | HubWake: hero ngồi dậy cạnh Lửa Canh (t=0 frame 0 clip wake) SFX_HUB_hearth_wake forge_strike forge_unlock test_bell ledger_page market yard_dummy wardrobe · ScarCleansed SFX_ENV_HUB_scar_cleanse candle_light plinth_place |
| Tiến trình | station_unveil restore_stage bell_raise | StationUnlocked SFX_ENV_HUB_station_unveil · RestoreStageBought GD1–GD5 (t=0 cảnh) SFX_HUB_restore_stage · GD5 cảnh treo chuông (t=6 s) SFX_ENV_HUB_bell_raise |
| Chuyển cảnh | blade_return fast_travel ferry_wake act_fog | HubArrive t=0 (mảnh lưỡi kéo về lửa) SFX_ENV_HUB_blade_return · FastTravel t=0 (rời chỗ cũ) SFX_HUB_fast_travel · DepartConfirmed ở ST_DOCK (t=0 cảnh 6 s) SFX_HUB_dock_depart · Loop khi đò chạy (RM_HUB_departure, RM_HUB_ferry_deck) — gắn VFX_ENV_… SFX_ENV_HUB_ferry_creak · Chuyển cảnh màn tro (VFX_ENV_HUB_act_fog) t=0 SFX_ENV_HUB_act_fog |
| NPC | — | BarkShown speaker=NPC_* (1 lần khi bark mở) SFX_HUB_npc_murmur (7 bộ giọng không lời) |
- Mọi VFX hub:
owner_classENV,tintBIOME, dirs 1, không hitbox, LOD L1 (khí quyển) / L2 (trạm),act_fognever. Cấm vòng/elip sàn viền 2 px và sóng vòng (Chuông Thử = vạch rung dọc). - Hub không có encounter, wave script, event
EVT_:encounter_scripts/encounters/eventsđể trống có chủ ý.
1210. Dữ liệu & dựng Unity
| Việc | File / class |
|---|---|
| Scene | Assets/_Project/Scenes/Hub_BellTower.unity + Hub_TowerLoft.unity (additive) |
| Đọc dữ liệu | HubBiomeData ← data/biomes/HUB.json; prop trạm ← meta.json stations[].env_prop |
| Lớp Phục Dựng | HubRestorationLayers: 6 GameObject gốc GD0..GD5, bật cộng dồn theo FLAG_*; mỗi lớp chứa prop + Light2D/vũng + AudioSource lớp bed |
| Trạm | HubStation (id ST_*, ô, r24 nhắc INTERACT, trạng thái khoá = vải xám) |
| Dịch chuyển nhanh | HubFastTravel (mờ 0.25 s, đích = ô trước prop +1 y) |
| Nút DOCK | RunController state DOCK → load Boong Đò Calla (nút DOCK) RM_HUB_ferry_deck (prefab DockFerryDeck), parallax từ biome Hồi kế |
| Sort | prop/NPC Y-sort GamePlayLayer1 pivot chân; tường WALL_N che → OcclusionFader α 0.45 / 0.15 s |
13Quy tắc cho dev/AI
- Hub = 0 quái, 0 hazard, 0 sát thương, 0 rơi đồ. Không thêm combat vào hub (trừ đòn hero vào Bù Nhìn Răm NPC_RAM, không thưởng).
- Vị trí trạm/NPC dùng đúng ô §3.3; đổi ô = sửa doc 18 §1.1 + doc này +
HUB.jsoncùng lượt. - Tiến hoá hub chỉ bằng lớp cộng dồn (prop + đèn α ≤ 0.25 + 1 lớp ambience + 1 stem nhạc) theo
FLAG_*; cấm làm bộ art thứ 2 cho tháp. - Mọi pixel môi trường hub S ≤ 40%; không vàng/tím tell, không đỏ thẫm, không vòng chấm/gạch chéo; chạy
inv01_check.py --kind env= 0 lỗi trướcart-style-reviewer. - Tiếng chuông trong trẻo chỉ ở 4 nguồn (§6); mọi chuông khác trong hub câm.
RoomPickernútDOCKchỉ chọn Boong Đò Calla (nút DOCK) RM_HUB_ferry_deck;MapGen/HordeDirectorkhông đọcbiomes/HUB.json.- Id mới của hub: VFX/SFX
VFX_ENV_HUB_<slug>/SFX_ENV_HUB_<slug>; 13 idSFX_HUB_*canon doc 32 §7.2 giữ nguyên tên và cũng nằm trongav/ENV_HUB.json. - Tham chiếu chéo trong
HUB.jsonchỉ tớiENV_HUB_*,VFX/SFX_ENV_HUB_*,SFX_HUB_*,SHARED/UI, HUB · HUB_BELL_TOWER Tháp Chuông Gãy (mọi trạm ST_*) · S0 + stem GĐ Phục Dựng đã mở (GD1–… MUS_hub_bell_tower. - Thêm prop hub → thêm
env_assetstrongav/ENV_HUB.json+ id vàoHUB.json props+ validate cả 2 file. - Ô hub (x, y) ↔ px theo §3.1; không trộn ô 16 px với tile FLOOR 32×16.
14Quyết định đã chốt
| Ngày | Câu hỏi | Quyết định | Lý do |
|---|---|---|---|
| 2026-11-07 | Hub có hazard? | Không (hazards: []); schema HZ_ chỉ B1–B6 | hub an toàn tuyệt đối; tương tác thay bằng prop phản ứng |
| 2026-11-07 | objectives/node_types bắt buộc cho phòng hub | giữ chỗ ["TRIAL"] / ["DOCK"]; chỉ Boong Đò Calla (nút DOCK) RM_HUB_ferry_deck là phòng DOCK thật | schema minItems 1, không thêm enum |
| 2026-11-07 | Nút DOCK ở đâu? | 1 phòng chung Boong Đò Calla (nút DOCK) RM_HUB_ferry_deck trong file HUB, nền parallax biome Hồi kế | đò Calla là tài sản hub; tiết kiệm 4 bộ art |
| 2026-11-07 | Xuất phát: đò (doc 16) hay đi bộ lên đồi (doc 20)? | cả hai trong 6 s: đò men bờ 3 s + bước lên bậc chân đồi 3 s; Cổng Đồi Bắc chỉ là cảnh (sương chặn) | khớp cả doc 16 §1 và doc 20 §4.3 |
| 2026-11-07 | Id SFX hub | giữ 13 SFX_HUB_* canon doc 32 §7.2; âm mới SFX_ENV_HUB_*; VFX mới VFX_ENV_HUB_* | không đổi tên canon; validator chấp nhận cả 2 tiền tố cho chủ ENV_HUB |
| 2026-11-07 | Tầng ba / Tủ Áo Tang | sub-scene Hub_TowerLoft qua cửa (36,10), neo dịch chuyển (36,9) | 3/4 không vẽ được nội thất tầng 3 trong cùng mặt phẳng |
| 2026-11-07 | Trần cao 64 px | ngoại lệ cho Thân Tháp Chuông Gãy 176 px (LMK_HUB_bell_tower), ô (27–34, 8–12). 6 … ENV_HUB_tower_body 176 px | hub không là sân đấu; vẫn mờ khi che |
| 2026-11-07 | Lớp nhạc theo GĐ | 5 stem GĐ theo doc 32 §3.7 #2 (gỡ [ASSUMED] doc 18 §1.1) | doc 32 đã chốt |
| 2026-11-07 | NPC actor spec ở đâu? | 7 actor NPC_* trong av/ENV_HUB.json › actors (tier npc, biped, cao 34–44 px, clip idle 48 / talk 24 / react 24 / action 30–60; Răm thêm hurt 9, windup_y/p, strike; portrait por_npc_<x>_bust 128² × 3 biểu cảm) | doc 51 §2: actor NPC thuộc chủ ENV_HUB |
| 2026-11-07 | Bến của từng biome (doc 20) có phải phòng DOCK riêng? | Không: bến B1–B5 doc 20 = nơi đò rời bờ, chỉ là parallax ENV_<Bn>_dock_bg_far|mid|near của Boong Đò Calla (nút DOCK) RM_HUB_ferry_deck; biomes/<Bn>.json không có phòng DOCK | 1 phòng DOCK duy nhất (HUB.json); gỡ mơ hồ giữa doc 20 và doc 23 |
| 2026-11-07 | Bia mộ | 10 bia, 8 khắc + 2 trống | kể chuyện: chỗ chờ cho người chơi |