# FREEEXILE ASSET ECOSYSTEM SURVEY & PRODUCTION GAP ANALYSIS (2026)

**Auditor**: `explorer_survey_assets`  
**Working Directory**: `c:/Projects/FreeExile/.agents/teamwork/explorer_survey_assets/`  
**Target Root**: `client/webapp/assets/`  
**Pipeline Root**: `tools/asset_pipeline/`  
**Timestamp**: 2026-10-01T22:12:00Z  

---

## 1. TỔNG QUAN HỆ THỐNG ASSET HIỆN HỮU (EXECUTIVE SUMMARY)

Kho tài nguyên đồ họa `client/webapp/assets/` hiện tại có tổng cộng **288 tệp**, tổng dung lượng **100.22 MB** phân bổ trên 15 danh mục con:

| Danh Mục (Directory) | Số Lượng Tệp | Dung Lượng (MB) | Trọng Tâm Nghiệp Vụ | Đánh Giá Tình Trạng Hiện Tại |
| :--- | :---: | :---: | :--- | :--- |
| `monsters/` | 32 | 20.24 | 12 Mobs + 2 Bosses, concept sheets | Đủ sprite tĩnh 512x512, **thiếu 10 mob + 2 boss animation** |
| `map/` | 21 | 14.11 | Terrains, props, astral portals | **Vượt budget nghiêm trọng** (tile > 2MB), thiếu dungeon & arena |
| `ui/` | 64 | 12.57 | HUD, dialogue, ascendancy, stash | Thiếu Passive Tree nodes, Trade Bazaar, Tooltip, Status icons |
| `animations/` | 27 | 10.93 | Atlases, normal maps, manifests | 7 nhân vật + 2 mob; **vi phạm 2^n** (1280x960, 1280x480) |
| `characters/` | 37 | 8.33 | 6 Hero classes, 5 NPCs | Standee vi phạm 2^n (320x480), **thiếu portrait** cho NPC |
| `trailer/` | 2 | 7.64 | Cinematic trailer video assets | Video MP4 tham chiếu |
| `shop/` | 26 | 7.52 | MegaShop catalog, chest, skins | `megashop_catalog_atlas_normal.png` (2.45MB) vượt budget |
| `vltk1/` | 9 | 5.97 | Legacy prototype assets | Tài nguyên mẫu đối soát |
| `skills/` | 4 | 4.26 | 1 Shared martial skills atlas | **Thiếu hoàn toàn** 15 atlases riêng biệt cho 5 class x 3 skill |
| `currencies/` | 31 | 3.72 | Bloodstones, relics, seal icons | Đã có 13 icon, cần chuẩn hóa 12 loại tiền tệ & đá chế tác |
| `weapons/` | 21 | 2.60 | Divine weapons & blades | Đủ 8 phôi vũ khí thần binh kèm normal map |
| `banners/` | 3 | 0.84 | Deadlands, crypt, shore panoramas | Kích thước 1376x768 (không phải 2^n) |
| `portraits/` | 6 | 0.79 | 6 Character class portraits | Đủ 6 class (256x256 2^n chuẩn) |
| `loading/` | 2 | 0.58 | Crypt, shore loading screens | Kích thước 1376x768 (không phải 1024x1024 2^n) |
| `savage_vfx/` | 3 | 0.12 | 1 Shared combat VFX atlas | Normal map B mean = 127.00 (**lỗi < 128**), thiếu hit/dissolve/nums |
| **TỔNG CỘNG** | **288** | **100.22 MB** | Toàn bộ client webapp | **51 tệp Non-PoT, 20 vi phạm budget, 1 lỗi normal** |

---

## 2. KHẢO SÁT CHI TIẾT DANH MỤC QUÁI VẬT (`monsters/`)

Thư mục `client/webapp/assets/monsters/` chứa 32 tệp (20.24 MB).

### 2.1. Danh Sách 12 Mobs & 2 Bosses Hiện Hữu
Đã có đầy đủ sprite tĩnh 512x512 RGBA kèm normal map 512x512 RGBA cho 10 chủng quái độc lập + 2 boss lớn, cùng 2 mob khởi đầu dùng chung sprite:

| # | Khóa Định Danh (ID) | Tên Quái / Boss | Hệ | File Albedo (512x512) | File Normal (512x512) | Trạng Thái Animation |
| :-: | :--- | :--- | :-: | :--- | :--- | :--- |
| **B1** | `boss_blood_bone_ravager` | Huyết Khô Lâu Ma (Dungeon Boss) | Hỏa | `boss_blood_bone_ravager.png` (555KB) | `boss_blood_bone_ravager_normal.png` (690KB) | **CHƯA CÓ** (Static only) |
| **B2** | `boss_abyssal_tyrant` | U Tối Ma Hoàng (High Overlord) | Thủy | `boss_abyssal_tyrant.png` (649KB) | `boss_abyssal_tyrant_normal.png` (756KB) | **CHƯA CÓ** (Static only) |
| **M1** | `mob_skeleton_warrior` | Hủ Cốt Chiến Binh | Kim | `mob_skeleton_warrior.png` (490KB) | `mob_skeleton_warrior_normal.png` (587KB) | **ĐÃ CÓ** (1280x480 atlas) |
| **M2** | `mob_feral_hellhound` | Cuồng Khuyển Dị Biến | Hỏa | `mob_feral_hellhound.png` (571KB) | `mob_feral_hellhound_normal.png` (717KB) | **ĐÃ CÓ** (1280x480 atlas) |
| **M3** | `mob_rot_crawler` | Huyết Trùng Hủ Độc | Mộc | `mob_rot_crawler.png` (568KB) | `mob_rot_crawler_normal.png` (698KB) | **CHƯA CÓ** (Static only) |
| **M4** | `mob_shadow_wraith` | U Minh Dạ Bộc | Thủy | `mob_shadow_wraith.png` (493KB) | `mob_shadow_wraith_normal.png` (624KB) | **CHƯA CÓ** (Static only) |
| **M5** | `mob_primal_cannibal` | Man Tộc Đoạt Mệnh | Thổ | `mob_primal_cannibal.png` (520KB) | `mob_primal_cannibal_normal.png` (654KB) | **CHƯA CÓ** (Static only) |
| **M6** | `mob_ironhide_behemoth` | Hắc Giáp Ngưu Ma | Thổ | `mob_ironhide_behemoth.png` (573KB) | `mob_ironhide_behemoth_normal.png` (726KB) | **CHƯA CÓ** (Static only) |
| **M7** | `mob_corrupted_raptor` | Huyết Dực Tà Điểu | Kim | `mob_corrupted_raptor.png` (537KB) | `mob_corrupted_raptor_normal.png` (680KB) | **CHƯA CÓ** (Static only) |
| **M8** | `mob_bramble_treant` | Mộc Yêu Thụ Tinh | Mộc | `mob_bramble_treant.png` (645KB) | `mob_bramble_treant_normal.png` (772KB) | **CHƯA CÓ** (Static only) |
| **M9** | `mob_tomb_lord` | Cổ Mộ Thi Vương | Thủy | `mob_tomb_lord.png` (587KB) | `mob_tomb_lord_normal.png` (727KB) | **CHƯA CÓ** (Static only) |
| **M10** | `mob_flesh_abomination` | Huyết Nhục Cự Thú | Hỏa | `mob_flesh_abomination.png` (538KB) | `mob_flesh_abomination_normal.png` (670KB) | **CHƯA CÓ** (Static only) |
| **M11** | `mob_starter_hound` | Thi Cẩu Hoang Dã (Lv.1) | Hỏa | Dùng chung `mob_feral_hellhound.png` | Dùng chung normal | Dùng chung atlas |
| **M12** | `mob_starter_skeleton`| Hủ Cốt Tàn Binh (Lv.2) | Kim | Dùng chung `mob_skeleton_warrior.png`| Dùng chung normal | Dùng chung atlas |

*(Tài liệu tham chiếu thêm: `mob_trash_bone_hound` và `mob_trash_ghost_sword_thrall` trong `wiki/vi/MONSTERS_AND_BOSSES_SPECS.md`).*

### 2.2. Tài Nguyên Dùng Chung & Shader
- `monster_base_skeletons_atlas.png` + `_normal.png` (1024x1024, 1.06MB / 1.31MB)
- `monster_genus_concept_sheet.png` + `_normal.png` (1024x1024, 1.43MB / 1.86MB)
- `monster_attachments_atlas.png` + `_normal.png` (512x512, 3.4KB / 9.4KB)
- `monster_system_metadata.json` (922 bytes, cấu hình anchor sockets HEAD, BACK, HAND_L, HAND_R, CHEST)
- `monster_palette_instancing.metal` (1.7KB, Metal compute shader instancing)

### 2.3. Khoảng Trống Cần Bổ Sung (Gaps)
- **10 Mobs + 2 Bosses** đang hoàn toàn thiếu animation atlas và manifest trong `animations/`.
- Cần sản xuất bộ 3: `[name]_anim_atlas.png` + `[name]_anim_atlas_normal.png` + `[name]_anim_manifest.json` cho cả 12 thực thể còn lại với 6 states (idle, walk/run, attack, cast, stun/hurt, die).

---

## 3. KHẢO SÁT CHI TIẾT DANH MỤC HOẠT ẢNH (`animations/`)

Thư mục `client/webapp/assets/animations/` gồm 27 tệp (10.93 MB).

### 3.1. Các Gói Nhân Vật Hiện Hữu (7 Packages)
Tất cả 6 nhân vật + 1 alias `hero` đều có kích thước lưới **1280x960** (frame 160x192, 8 cột x 5 hàng), gồm 33 frames và 6 animation clips:

| Package Prefix | Atlas PNG (1280x960) | Normal PNG (1280x960) | Manifest JSON | Dung Lượng Albedo | Dung Lượng Normal |
| :--- | :--- | :--- | :--- | :-: | :-: |
| `char_feral_berserker` | `char_feral_berserker_anim_atlas.png` | `..._normal.png` | `..._manifest.json` | 588.3 KB | 714.0 KB |
| `char_glacial_lancer` | `char_glacial_lancer_anim_atlas.png` | `..._normal.png` | `..._manifest.json` | 775.2 KB | 891.0 KB |
| `char_shadow_assassin` | `char_shadow_assassin_anim_atlas.png` | `..._normal.png` | `..._manifest.json` | 639.8 KB | 768.4 KB |
| `char_sword_maiden` | `char_sword_maiden_anim_atlas.png` | `..._normal.png` | `..._manifest.json` | 663.9 KB | 796.6 KB |
| `char_sword_master` | `char_sword_master_anim_atlas.png` | `..._normal.png` | `..._manifest.json` | 726.2 KB | 885.1 KB |
| `char_wild_archer` | `char_wild_archer_anim_atlas.png` | `..._normal.png` | `..._manifest.json` | 614.8 KB | 751.6 KB |
| `hero` (Master Alias) | `hero_anim_atlas.png` | `..._normal.png` | `..._manifest.json` | 726.2 KB | 885.1 KB |

**Cấu trúc 6 Clips trong Character Manifest**:
- `idle`: 4 frames (fps=6, loop=true)
- `run`: 8 frames (fps=12, loop=true, stride_length_world=2.8, footsteps=[0, 4])
- `attack_slash`: 6 frames (fps=15, loop=false, hit_frame=2)
- `skill_whirlwind`: 6 frames (fps=18, loop=true)
- `dodge`: 6 frames (fps=20, loop=false)
- `hurt`: 3 frames (fps=12, loop=false)

### 3.2. Các Gói Quái Vật Hiện Hữu (2 Packages)
- `mob_feral_hellhound`: Atlas 1280x480 (147.7 KB), Normal 1280x480 (184.2 KB), Manifest (5.2 KB). 23 frames (160x160): `idle` (4), `run` (6), `attack` (5, hit_frame=2), `hurt` (3), `death` (5).
- `mob_skeleton_warrior`: Atlas 1280x480 (164.3 KB), Normal 1280x480 (206.9 KB), Manifest (5.2 KB). Cùng cấu trúc 23 frames (160x160).

### 3.3. Vi Phạm Kỹ Thuật (Critical Technical Issue)
- **Kích thước 1280x960 và 1280x480 vi phạm chuẩn lũy thừa 2 (Non-PoT)**: GPU mobile (Apple Metal / WebGL) yêu cầu texture kích thước $2^n \times 2^m$ (ví dụ: 1024x1024, 2048x1024, 2048x2048) để tạo mipmap hardware và sample chính xác không tốn thêm VRAM decompress.

---

## 4. KHẢO SÁT CHI TIẾT KỸ NĂNG & CHIÊU THỨC (`skills/`)

Thư mục `client/webapp/assets/skills/` gồm 4 tệp (4.26 MB):
- `martial_skills_atlas.png` (1024x1024, 1863.4 KB)
- `martial_skills_atlas_normal.png` (1024x1024, 2495.3 KB — **Vượt budget 2MB**)
- `martial_skills_metadata.json` (3.1 KB)
- `elemental_particles.metal` (4.0 KB)

### 4.1. Thực Trạng
Atlas hiện tại chỉ là một bảng ghép tĩnh 10 icon kỹ năng kích thước 256x256 (2 chiêu cho mỗi hành Ngũ Hành: Kim, Mộc, Thủy, Hỏa, Thổ). **Không có hoạt ảnh chiêu thức frame-by-frame.**

### 4.2. Yêu Cầu Sản Xuất Mới Theo R3
Cần xây dựng **15 Atlases Kỹ Năng Độc Lập** (5 Hệ Phái $\times$ 3 Chiêu Thức) với bảng màu chuẩn Ngũ Hành:

| Hệ Phái (Class) | Chiêu Thức 1 | Chiêu Thức 2 | Chiêu Thức 3 | Hệ Ngũ Hành | Bảng Màu Chủ Đạo |
| :--- | :--- | :--- | :--- | :---: | :--- |
| **Kiếm Khách** (`char_sword_master`) | Cửu Tiêu Lôi Kiếm | Thanh Phong Vạn Kiếm | Trảm Lôi Quyết | **KIM** | Bạc, Ánh Kim, Trắng Bạch Ngân |
| **Kiếm Cơ** (`char_sword_maiden`) | Băng Phách Hàn Quang | Băng Tiễn Xuyên Tâm | Hàn Băng Kiếm Vũ | **THỦY** | Lam Đậm, Cyan, Hắc Thủy |
| **Cuồng Chiến** (`char_feral_berserker`)| Liệt Hỏa Toàn Phong | Liệt Diễm Bộc Khí | Cuồng Nộ Bạo Huyết | **HỎA** | Đỏ Cam, Lửa Dung Nham, Đỏ Huyết |
| **Du Hiệp** (`char_wild_archer`) | U Minh Huyết Độc | Thiên Ma Bộc Độc | Độc Vũ Tiễn Trận | **MỘC** | Xanh Lục Rừng Rậm, Ngọc Bích, Độc Dược |
| **Thương Thủ** (`char_glacial_lancer`)| Kim Cang Truy Địa | Bất Hoại Thể Phách | Nham Thạch Xung Kích | **THỔ** | Hoàng Thổ, Hổ Phách, Nâu Đất Cổ |

Mỗi chiêu thức là 1 atlas riêng biệt kích thước $2^n$ (ví dụ: $512\times 512$ hoặc $1024\times 1024$), có albedo + normal + manifest, tuân thủ dung lượng $\le 2\text{ MB}$.

---

## 5. KHẢO SÁT CHI TIẾT NHÂN VẬT & NPC (`characters/`)

Thư mục `client/webapp/assets/characters/` gồm 37 tệp (8.33 MB).

### 5.1. Nhân Vật Hero (6 Classes)
- Sprite gốc: `char_feral_berserker.png`, `char_glacial_lancer.png`, `char_shadow_assassin.png`, `char_sword_maiden.png`, `char_sword_master.png`, `char_wild_archer.png` kèm normal maps.
- Kích thước: **512x600** (vi phạm 2^n: chiều cao 600 không phải lũy thừa 2).

### 5.2. NPC Hiện Hữu (`characters/npcs/`)
Đã có 5 NPC được định nghĩa trong `feral_npc_cast_metadata.json`:
1. `npc_doc_co` (Lão Độc Cốt / War Chief): Avatar 128x128, Standee 320x480.
2. `npc_cau_khau` (Gian Thương Cẩu Khấu / Outcast Scavenger): Avatar 128x128, Standee 320x480.
3. `npc_huyet_do` (Thiết Tượng Huyết Đồ / Bone Blacksmith): Avatar 128x128, Standee 320x480.
4. `npc_huyet_vu` (Huyết Vu Bà Bà / Blood Shaman): Avatar 128x128, Standee 320x480.
5. `npc_cuong_nhan` (Cuồng Nhân Bão Cát / Savage Hermit): Avatar 128x128, Standee 320x480.

### 5.3. Khoảng Trống Cần Bổ Sung
- Standee NPC hiện tại là **320x480** (Non-PoT).
- Toàn bộ 5 NPC hiện hữu **thiếu portrait** chuyên dụng cho hộp thoại hội thoại (dialogue portrait).
- Yêu cầu R3: Cần bổ sung **$\ge 5$ NPC mới** (mỗi NPC đầy đủ bộ 3: Avatar $128\times 128$ + Standee $256\times 512$ + Portrait $256\times 256$, phong cách Cổ Võ Hoang Dã).

---

## 6. KHẢO SÁT ĐỊA HÌNH & BẢN ĐỒ (`map/`)

Thư mục `client/webapp/assets/map/` gồm 21 tệp (14.11 MB).

### 6.1. Thực Trạng & Vi Phạm Budget Nghiêm Trọng
- Hầu hết các tile địa hình hiện tại là file $512\times 512$ hoặc $1024\times 1024$ không nén, khiến dung lượng vượt xa trần cho phép ($50\text{ KB}$):
  * `tile_stone.png`: **1971.5 KB** (vượt $39.4\times$ budget!)
  * `tile_stone_normal.png`: **2997.7 KB** (gần 3 MB cho 1 tile normal!)
  * `tile_dirt.png` (551 KB), `tile_dirt_normal.png` (669 KB)
  * `tile_lava.png` (510 KB), `tile_lava_normal.png` (651 KB)
  * `tile_snow.png` (561 KB), `tile_snow_normal.png` (661 KB)
  * `tile_swamp.png` (502 KB), `tile_swamp_normal.png` (632 KB)
  * `tile_water.png` (474 KB), `tile_water_normal.png` (606 KB)
  * Duy nhất `tile_grass.png` (64x32, 0.4 KB) đạt chuẩn dung lượng.

### 6.2. Thiếu Hụt Danh Mục Cốt Lõi Theo R3
- **Dungeon Stone Wall**: Cần 4 biến thể (`tile_dungeon_wall_v1..v4`, isometric tile $64\times 64$ hoặc $128\times 128$, dung lượng $\le 50\text{ KB}$).
- **Dungeon Floor**: Cần 4 biến thể (`tile_dungeon_floor_v1..v4`, $64\times 32$ hoặc $128\times 64$, $\le 50\text{ KB}$).
- **Boss Arena Floor**: Cần 2 themes:
  1. Dung nham nung máu (`tile_boss_arena_lava`)
  2. Bãi tha ma cổ cốt (`tile_boss_arena_bone`)

---

## 7. KHẢO SÁT GIAO DIỆN NGƯỜI DÙNG (`ui/`)

Thư mục `client/webapp/assets/ui/` gồm 64 tệp (12.57 MB) phân chia qua các tiểu mục:
- `agent_orb/`: 13 tệp (atlas 1280x256, 5 tiers static icons)
- `ascendancy/`: 7 tệp (altar frame, portal, classes icons, node sprites)
- `combat/`: 5 tệp (HUD combat atlas 512x256, dual orbs frame)
- `dialogue/`: 6 tệp (avatar frame, choice button, dialogue box 640x320)
- `endgame_atlas/`: 16 tệp (8 encounters albedo + normal)
- `guild/`: 3 tệp (stash atlas 512x512)
- `meridian/`: 1 tệp (`flesh_bone_matrix_bg.jpg` 1376x768)
- `quests/`: 3 tệp (quest scroll atlas 512x512)
- `security/`: 3 tệp (security shield atlas 256x256)
- `stash/`: 3 tệp (remove-only stash icon)

### 7.1. Khoảng Trống Nghiêm Trọng Cần Bổ Sung
1. **Passive Tree / Meridian (Huyết Cốt Ma Đồ)**:
   - 5 loại node sprites chuyên biệt: `Passive Small`, `Notable Medium`, `Keystone Large`, `Socket Gem`, `Connector Line`.
   - Texture chòm sao nền vũ trụ hoang dã (`constellation_background_1024x1024.png`).
2. **Trade / Bazaar UI Panels**:
   - Hiện chưa có thư mục `ui/bazaar/` hay `ui/trade/`. Cần frame cửa sổ giao dịch, bảng niêm yết vật phẩm, nút xác nhận 2 bên.
3. **Item Tooltip Frame**:
   - Khung viền tooltip hiển thị thuộc tính trang bị, phân cấp độ hiếm (Normal, Magic, Rare, Unique, Corrupted).
4. **Inventory Equip Slot UI**:
   - Khung ô trang bị nhân vật (Weapon Main, Offhand, Helm, Body Armor, Gloves, Boots, Amulet, Ring 1, Ring 2, Belt).
5. **Status Effect Icons (Animated $\ge 6$)**:
   - Cần thư mục `ui/status_effects/` với các biểu tượng hiệu ứng động: `Burn`, `Freeze`, `Stun`, `Poison`, `Bleed`, `Shock`.

---

## 8. KHẢO SÁT TIỀN TỆ & ĐÁ CHẾ TÁC (`currencies/`)

Thư mục `client/webapp/assets/currencies/` gồm 31 tệp (3.72 MB).

### 8.1. Thực Trạng
Đã có 13 biểu tượng albedo + normal:
- `curr_black_primordial_shard`, `curr_blood_soul_gem`, `curr_chaos_bloodstone`, `curr_chaos_stone`, `curr_corrupted_demon_stone`, `curr_life_bone_marrow`, `curr_nether_bone_nail`, `curr_primal_bone_seal`, `curr_void_mirror_shard`, `destiny_rune`, `primal_chaos_stone`, `sovereign_sigil`, `void_mirror_relic`.

### 8.2. Yêu Cầu Chuẩn Hóa Danh Mục Tiền Tệ PoE2
Cần cấu trúc rõ ràng $\ge 12$ loại tiền tệ cốt lõi theo `server/economy/economy_types.py` và `docs/game_design/ITEM_CRAFTING_AND_AFFIX_GUIDE.md`:
1. **Primal Bloodstones (5 Tiers)**: Huyết Hồn Thạch T1 đến T5
2. **Bone Relics**: Cổ Cốt Di Vật (Cổ Cốt Ấn)
3. **Salvage Dust**: Bụi Huyết Cốt (20 Bụi = 1 Huyết Hồn Thạch)
4. **6 Loại Crafting Orbs**:
   - Hắc Sơ Thạch (Crude Flint / Transmutation)
   - Đá Mài Huyết Ngân (Blood Whetstone / Augmentation)
   - Uẩn Ma Thạch (Feral Amber / Alchemy)
   - U Minh Cốt Đinh (Wraithbone Spike / Exalted Slam)
   - Cốt Đao Tước Đoạt (Bone Cleaver / Annulment)
   - Tịnh Hóa Huyết Thạch (Divine Reroll within Tier)
   - Tà Huyết Dị Biến Thạch (Feral Corruption Vaal Orb)
   - Huyết Ảnh Cổ Kính (Savage Blood Mirror)

*Lưu ý dung lượng: Một số normal map trong currencies (183KB) đang vượt mức trần UI Icon 150KB.*

---

## 9. KHẢO SÁT HIỆU ỨNG CHIẾN ĐẤU & TẾ CỐT (`savage_vfx/`)

Thư mục `client/webapp/assets/savage_vfx/` gồm 3 tệp (0.12 MB):
- `savage_vfx_atlas.png` (512x512, 26.3 KB)
- `savage_vfx_atlas_normal.png` (512x512, 92.2 KB) — **B mean = 127.00**
- `savage_vfx_atlas.json` (2.8 KB)

### 9.1. Lỗi Normal Map
- Kênh Blue mean của `savage_vfx_atlas_normal.png` là $127.00 \le 128$. Tangent-space normal map chuẩn yêu cầu vector pháp tuyến hướng ra ngoài ($Z \ge 0$), tương ứng kênh B phải có giá trị trung bình $> 128$.

### 9.2. Thiếu Hụt VFX Theo R3
- **Combat VFX**:
  1. Hạt va chạm đòn đánh (`hit_impact_particle`)
  2. Hiệu ứng tan biến khi quái chết (`death_dissolve_vfx`)
  3. Hạt số sát thương nhảy vọt (`damage_numbers_atlas`)
- **Agent Orb Activation VFX**:
  - Hiệu ứng kích hoạt Thần Thức 3 bậc (Sơ Cấp Thanh Đồng, Trung Cấp Bạch Ngân, Vô Song Hoàng Kim).

---

## 10. KHẢO SÁT MÀN HÌNH NỀN & PARALLAX (`loading/`, `banners/`)

### 10.1. Màn Hình Tải Game (`loading/`)
- Hiện tại: `loading_eldritch_crypt.jpg` (1376x768), `loading_forsaken_shore.jpg` (1376x768).
- **Vấn đề**: Kích thước 1376x768 không phải $2^n$.
- **Yêu cầu R3**: Loading screen art isometric Cổ Võ Hoang Dã chuẩn $1024\times 1024$ full-bleed.

### 10.2. Màn Hình Đăng Nhập Parallax
- **Hiện tại**: Chưa có tệp layer parallax nào.
- **Yêu cầu R3**: Bộ 3 layers nền đăng nhập:
  1. `login_parallax_bg.png` (Hư không, bầu trời u ám, núi xa)
  2. `login_parallax_mid.png` (Vách đá tàn xương, đền đài hoang phế)
  3. `login_parallax_fore.png` (Bụi gai, đầu lâu, khói đen tiền cảnh)

---

## 11. BÁO CÁO KIỂM TOÁN RÀNG BUỘC KỸ THUẬT (TECHNICAL AUDIT REPORT)

### 11.1. Thống Kê 51 Tệp Vi Phạm Chuẩn Lũy Thừa 2 (Non-Power-of-Two)
Toàn bộ danh sách 51 tệp có chiều rộng hoặc chiều cao không phải lũy thừa 2:

1. `animations/char_feral_berserker_anim_atlas.png` (1280x960)
2. `animations/char_feral_berserker_anim_atlas_normal.png` (1280x960)
3. `animations/char_glacial_lancer_anim_atlas.png` (1280x960)
4. `animations/char_glacial_lancer_anim_atlas_normal.png` (1280x960)
5. `animations/char_shadow_assassin_anim_atlas.png` (1280x960)
6. `animations/char_shadow_assassin_anim_atlas_normal.png` (1280x960)
7. `animations/char_sword_maiden_anim_atlas.png` (1280x960)
8. `animations/char_sword_maiden_anim_atlas_normal.png` (1280x960)
9. `animations/char_sword_master_anim_atlas.png` (1280x960)
10. `animations/char_sword_master_anim_atlas_normal.png` (1280x960)
11. `animations/char_wild_archer_anim_atlas.png` (1280x960)
12. `animations/char_wild_archer_anim_atlas_normal.png` (1280x960)
13. `animations/hero_anim_atlas.png` (1280x960)
14. `animations/hero_anim_atlas_normal.png` (1280x960)
15. `animations/mob_feral_hellhound_anim_atlas.png` (1280x480)
16. `animations/mob_feral_hellhound_anim_atlas_normal.png` (1280x480)
17. `animations/mob_skeleton_warrior_anim_atlas.png` (1280x480)
18. `animations/mob_skeleton_warrior_anim_atlas_normal.png` (1280x480)
19. `banners/banner_deadlands_panorama.jpg` (1376x768)
20. `banners/banner_eldritch_crypt.jpg` (1376x768)
21. `banners/banner_forsaken_shore.jpg` (1376x768)
22. `characters/char_feral_berserker.png` (512x600)
23. `characters/char_feral_berserker_normal.png` (512x600)
24. `characters/char_glacial_lancer.png` (512x600)
25. `characters/char_glacial_lancer_normal.png` (512x600)
26. `characters/char_head.png` (40x40)
27. `characters/char_shadow_assassin.png` (512x600)
28. `characters/char_shadow_assassin_normal.png` (512x600)
29. `characters/char_sword_maiden.png` (512x600)
30. `characters/char_sword_maiden_normal.png` (512x600)
31. `characters/char_sword_master.png` (512x600)
32. `characters/char_sword_master_normal.png` (512x600)
33. `characters/char_torso.png` (48x64)
34. `characters/char_wild_archer.png` (512x600)
35. `characters/char_wild_archer_normal.png` (512x600)
36. `characters/savage_primal_exile.png` (512x600)
37. `characters/savage_primal_exile_normal.png` (512x600)
38. `characters/npcs/npc_cau_khau_standee.png` (320x480)
39. `characters/npcs/npc_cuong_nhan_standee.png` (320x480)
40. `characters/npcs/npc_doc_co_standee.png` (320x480)
41. `characters/npcs/npc_huyet_do_standee.png` (320x480)
42. `characters/npcs/npc_huyet_vu_standee.png` (320x480)
43. `loading/loading_eldritch_crypt.jpg` (1376x768)
44. `loading/loading_forsaken_shore.jpg` (1376x768)
45. `ui/agent_orb/agent_orb_atlas.png` (1280x256)
46. `ui/agent_orb/agent_orb_atlas_normal.png` (1280x256)
47. `ui/dialogue/feral_dialogue_box_bg.png` (640x320)
48. `ui/dialogue/feral_dialogue_box_bg_normal.png` (640x320)
49. `ui/meridian/flesh_bone_matrix_bg.jpg` (1376x768)
50. `vltk1/vltk1_swordsman.png` (512x600)
51. `vltk1/vltk1_swordsman_normal.png` (512x600)

*Khuyến nghị khắc phục*: Pad canvas lên kích thước $2^n$ gần nhất (ví dụ: $1280\times 960 \rightarrow 2048\times 1024$, $512\times 600 \rightarrow 512\times 1024$ hoặc $512\times 512$, $320\times 480 \rightarrow 512\times 512$ hoặc $256\times 512$).

### 11.2. Kiểm Tra Định Dạng Normal Map (B Mean > 128)
- Đã quét toàn bộ **119 tệp normal map** trong dự án.
- **118/119 tệp** đạt chuẩn tangent-space tuyệt đối (B mean phân bổ từ $206.74$ đến $253.05$).
- **1 tệp duy nhất vi phạm**: `savage_vfx/savage_vfx_atlas_normal.png` (B mean = $127.00 \le 128$). Cần tái tạo lại qua Sobel filter với hệ số $Z > 0$.

### 11.3. Thống Kê 20 Tệp Vượt Ngân Sách Dung Lượng (Budget Violations)
Ngân sách tiêu chuẩn:
- Character spritesheet / Atlas $\le 2\text{ MB}$ (2048 KB)
- UI Icon $\le 150\text{ KB}$
- Map Tile $\le 50\text{ KB}$

| Loại Vi Phạm | Tệp Vi Phạm | Dung Lượng Thực Tế | Ngưỡng Cho Phép | Mức Độ Vượt |
| :--- | :--- | :---: | :---: | :---: |
| **Map Tile > 50KB** | `map/tile_stone_normal.png` | **2997.7 KB** | 50 KB | **$60.0\times$** |
| **Atlas > 2MB** | `skills/martial_skills_atlas_normal.png` | **2495.3 KB** | 2048 KB | $1.22\times$ |
| **Atlas > 2MB** | `shop/megashop_catalog_atlas_normal.png` | **2452.2 KB** | 2048 KB | $1.20\times$ |
| **Map Tile > 50KB** | `map/tile_stone.png` | **1971.5 KB** | 50 KB | **$39.4\times$** |
| **Map Tile > 50KB** | `map/tile_dirt_normal.png` | **669.5 KB** | 50 KB | $13.4\times$ |
| **Map Tile > 50KB** | `map/tile_snow_normal.png` | **661.6 KB** | 50 KB | $13.2\times$ |
| **Map Tile > 50KB** | `map/tile_lava_normal.png` | **651.7 KB** | 50 KB | $13.0\times$ |
| **Map Tile > 50KB** | `map/tile_swamp_normal.png` | **632.1 KB** | 50 KB | $12.6\times$ |
| **Map Tile > 50KB** | `map/tile_water_normal.png` | **606.8 KB** | 50 KB | $12.1\times$ |
| **Map Tile > 50KB** | `map/tile_snow.png` | **561.5 KB** | 50 KB | $11.2\times$ |
| **Map Tile > 50KB** | `map/tile_dirt.png` | **551.4 KB** | 50 KB | $11.0\times$ |
| **Map Tile > 50KB** | `map/tile_lava.png` | **510.3 KB** | 50 KB | $10.2\times$ |
| **Map Tile > 50KB** | `map/tile_swamp.png` | **502.5 KB** | 50 KB | $10.1\times$ |
| **Map Tile > 50KB** | `map/tile_water.png` | **474.1 KB** | 50 KB | $9.5\times$ |
| **UI Icon > 150KB** | `currencies/curr_nether_bone_nail_normal.png` | **183.4 KB** | 150 KB | $1.22\times$ |
| **UI Icon > 150KB** | `currencies/curr_black_primordial_shard_normal.png` | **183.2 KB** | 150 KB | $1.22\times$ |
| **UI Icon > 150KB** | `currencies/curr_primal_bone_seal_normal.png` | **182.1 KB** | 150 KB | $1.21\times$ |
| **UI Icon > 150KB** | `currencies/void_mirror_relic_normal.png` | **177.6 KB** | 150 KB | $1.18\times$ |
| **UI Icon > 150KB** | `currencies/curr_corrupted_demon_stone_normal.png` | **177.0 KB** | 150 KB | $1.18\times$ |
| **UI Icon > 150KB** | `currencies/curr_chaos_stone_normal.png` | **162.6 KB** | 150 KB | $1.08\times$ |

---

## 12. PHÂN TÍCH TÍCH HỢP PIPELINE & CÔNG CỤ R&D CẦN TRIỂN KHAI

### 12.1. Đánh Giá Hiện Trạng `tools/asset_pipeline/animation_pipeline.py`
- Hàm `build_atlas_and_manifest`: Đã có cơ chế tổng hợp albedo, tính normal map bằng Sobel, và xuất manifest JSON.
- Hạn chế hiện hữu:
  1. Chỉ hỗ trợ hardcoded 6 hero classes và 2 mobs (`mob_feral_hellhound`, `mob_skeleton_warrior`).
  2. Kích thước xuất ra đang bị Non-PoT (1280x960, 1280x480).
  3. Thiếu kinematic profile cho các quái thể hình đặc biệt (khổng lồ như Behemoth, bay lượn như Raptor, bầy đàn như Crawler).
  4. Chưa tích hợp tạo chuỗi mipmap hardware.
- Khuyến nghị nâng cấp:
  * Thêm tham số hóa dòng lệnh `--mob-all` để tự động duyệt qua toàn bộ 12 mobs + 2 bosses.
  * Tùy chọn canvas padding về kích thước $2^n$ gần nhất.
  * Tích hợp tự động gọi mipmap chain generator.

### 12.2. Các Công Cụ R&D Cần Triển Khai Mới (R2 Deliverables)
Kiểm tra thực tế xác nhận **cả 3 công cụ R&D đều chưa tồn tại**:
1. `tools/asset_pipeline/lod_generator.py`: Chưa có. Cần tạo 3 mức LOD (100%, 50%, 25%) bằng Pillow/Lanczos, đảm bảo LOD-2 $\le 40\%$ dung lượng gốc.
2. `tools/asset_pipeline/texture_compressor.py`: Chưa có. Cần nén batch PNG sang WebP đạt mức giảm $\ge 50\%$ VRAM footprint.
3. `tools/asset_pipeline/viewport_culling_utils.py`: Chưa có. Cần module frustum/AABB culling kèm test case pytest.
4. `docs/research/RENDERING_OPTIMIZATION_TECH_REPORT.md`: Chưa có. Cần tài liệu $\ge 300$ dòng tổng hợp benchmark số liệu thực nghiệm.

### 12.3. Quy Trình DRQ với `design_pipeline_manager.py`
- Lệnh `python -m tools.asset_pipeline.design_pipeline_manager report` đã hoạt động tốt, hiện quản lý 18 DRQ cũ (100% Approved).
- Cần tiếp nhận các DRQ mới từ các phòng ban vào thư mục `docs/design_requests/inbox/` theo chuẩn template `docs/design_requests/templates/DESIGN_REQUEST_TEMPLATE.md` để đạt tiêu chí $\ge 20$ DRQ mới.
