# Arknights: tài liệu tham khảo cho Titan Blood

Tài liệu nghiên cứu nội bộ, viết ngày 2026-10-14. Viết cho người **chưa từng chơi Arknights**. Mục tiêu là hiểu cách Arknights làm cho đường đi của quái "động" (người chơi đổi được đường) và lấy ra những gì đưa được vào một game thủ thành kiểu Kingdom Rush.

- Số liệu map và quái lấy từ dữ liệu game thật (repo `Kengxxiao/ArknightsGameData_YoStar`, bản `en_US`). Luật chơi lấy từ wiki cộng đồng (arknights.wiki.gg, arknights.fandom.com). Mỗi khẳng định quan trọng có link ở cuối đoạn hoặc ở mục 6.
- Chỗ nào là suy đoán của người viết thì ghi **(suy luận)**.
- Dữ liệu lưới để vẽ SVG: `data/arknights-maps.json`. Ảnh: `assets/ak-*.png`, nguồn ghi trong `assets/SOURCES.md`.

---

## 0. Tóm tắt nhanh

1. Arknights không có "tháp". "Tháp" là **nhân vật (operator)** mà người chơi kéo thả lên từng ô của một bàn cờ ô vuông. Operator cận chiến đứng ở ô mặt đất, nơi quái đi qua, để **chặn quái** (block). Operator tầm xa đứng ở ô cao (high ground), nơi quái không đi tới được.
2. Tiền trong trận là **DP**, tự tăng **1 DP mỗi giây**. Giết quái không cho tiền, trừ vài lớp operator đặc biệt. Đặt lại một operator đã rút về sẽ đắt hơn (×1,5 rồi ×2).
3. Quái đi theo **route** do người làm map định sẵn: điểm xuất phát, điểm đích và có thể có các checkpoint. **Giữa hai checkpoint, game tự tìm đường ngắn nhất trên lưới.** Vì vậy khi người chơi đặt **Roadblock** (vật cản giá 5 DP) lên ô đường, quái tính lại đường và đi vòng. Không bịt kín được mọi lối: fandom nói game cấm đặt, wiki.gg nói quái sẽ đập Roadblock để mở đường (xem 2.7).
4. Trước mỗi đợt quái, game vẽ **vạch đỏ** cho thấy đường quái sắp đi (vạch vàng cho quái bay). Đây là thứ giúp người chơi đọc được đường đi động.
5. Bài học lớn nhất cho Titan Blood: nếu muốn thêm đường đi động thì cần ba thứ đi cùng nhau: (a) đồ thị đường có nhiều nhánh, (b) vật cản người chơi đặt được, kèm luật "luôn còn một lối", (c) hiển thị trước đường quái sẽ đi. Xem mục 5.

---

## 1. Tổng quan

| Mục | Thông tin |
|---|---|
| Thể loại | Thủ thành (tower defense) pha nhập vai chiến thuật |
| Nhà phát triển | Hypergryph (Studio Montagne). Bản Global do Yostar phát hành |
| Ra mắt | Trung Quốc 2019-05-01, Global (EN/JP/KR) 2020-01-16 |
| Nền tảng | Android, iOS, Windows |
| Mô hình | Gacha (quay nhân vật), có "Sanity" (thể lực) để vào màn |

Nguồn: https://arknights.wiki.gg/wiki/Arknights

### 1.1 Vòng lặp của một màn, từ lúc vào đến lúc thắng hoặc thua

1. **Chọn đội (squad).** Mặc định đội có 13 chỗ, tính cả **1 Support Unit** (operator mượn của bạn bè). Tức là 12 operator của mình cộng 1 operator mượn ([Support Unit](https://arknights.wiki.gg/wiki/Support_Unit)).
2. **Vào trận.** Màn hình là bàn cờ ô vuông nhìn chéo 3D. Ví dụ màn 1-7 rộng 11 × 7 ô. Đội chờ ở thanh dưới màn hình (Deployment Waiting Zone). Mỗi thẻ operator ghi giá DP.
3. **DP ban đầu và DP tăng theo thời gian.** Ở màn 1-7 người chơi có 10 DP lúc đầu, mỗi giây được thêm 1 DP, tối đa 99 (dữ liệu màn: `initialCost 10`, `costIncreaseTime 1.0`, `maxCost 99`).
4. **Đặt operator.** Kéo thẻ vào một ô hợp lệ. Operator cận chiến chỉ đặt được ở ô mặt đất, operator tầm xa chỉ đặt được ở ô cao. Sau đó vuốt để **chọn hướng nhìn** (trên, dưới, trái, phải). Hướng quyết định vùng tấn công và **không đổi được** sau khi đặt. Số operator đứng trên sân cùng lúc bị giới hạn bởi **Unit Limit** (1-7: 8; 4-4: 9; TR-8: 10).
5. **Quái ra theo đợt** từ các ô "Incursion Point" (ô đỏ). Ngay trước khi quái ra, game vẽ vạch đỏ cho thấy đường nó sẽ đi ([Pathing](https://arknights.fandom.com/wiki/Pathing)).
6. **Skill.** Mỗi operator có skill nạp bằng SP. SP hồi theo một trong ba kiểu: 1 SP/giây, mỗi lần đánh +1, hoặc mỗi lần bị đánh +1. Có skill phải bấm tay, có skill tự bật ([Skill Point](https://arknights.wiki.gg/wiki/Skill_Point), [Skill](https://arknights.wiki.gg/wiki/Skill)).
7. **Rút và đặt lại.** Có thể rút (retreat) một operator. Người chơi được hoàn **50% DP** hiện tại, trừ vài lớp đặc biệt ([Charger Vanguard](https://arknights.wiki.gg/wiki/Charger_Vanguard)). Operator phải chờ **thời gian redeploy**, thường là 70 giây, rồi mới đặt lại được, và lần sau sẽ đắt hơn (mục 2.1).
8. **Life Points (LP).** Mỗi quái lọt vào ô đích (Protection Objective, ô xanh) trừ LP. Quái thường trừ 1, boss trừ nhiều hơn: Crownslayer trừ 2 (`lifePointReduce`). Hết LP là thua. Màn 1-7 có 10 LP, màn 4-4 chỉ có 3.
9. **Thắng** khi giết hoặc đếm đủ hết quái của màn (1-7: 41 quái).
10. **Sao.** Thắng mà không mất LP được 3 sao. Mất LP được 2 sao. Thắng **Challenge Mode** (luật khó hơn, thường chỉ 1 LP) được 4 sao. Ăn 3 sao mà không dùng Support Unit thì mở được **Auto Deploy**: game tự chơi lại theo đúng cách đặt quân lần trước ([Operation](https://arknights.wiki.gg/wiki/Operation)).

**Khác Kingdom Rush ở đâu:**

- Không có slot tháp cố định. Mọi ô cùng loại đều đặt được.
- Không có vàng theo kill. Tiền chảy đều theo thời gian.
- Lính chặn không tự chạy ra đánh quái. Operator đứng yên trên ô của mình, quái phải đi vào ô đó mới bị chặn.
- Rút quân và đặt lại là một phần chiến thuật, nhưng có giá và thời gian chờ.

---

## 2. Cơ chế cốt lõi

### 2.1 DP (Deployment Point) và giá operator

| Luật | Giá trị | Nguồn |
|---|---|---|
| DP tự hồi | 1 DP/giây | [Deployment Point](https://arknights.wiki.gg/wiki/Deployment_Point) |
| DP tối đa | 99 (Annihilation: 999) | như trên |
| Đặt lại lần 1 | giá ×1,5 | [Attribute/Cost](https://arknights.wiki.gg/wiki/Attribute/Cost) |
| Đặt lại lần 2 trở đi | giá ×2, không vượt 99 | như trên |
| Rút quân | hoàn 50% giá **hiện tại**. Charger Vanguard hoàn giá gốc, Merchant không hoàn | [Charger Vanguard](https://arknights.wiki.gg/wiki/Charger_Vanguard) |
| Redeploy | 70 giây. Executor (Specialist đặt nhanh) 18 giây. Merchant 25 giây. Operator 1★ 200 giây | [Redeployment time](https://arknights.wiki.gg/wiki/Attribute/Redeployment_time) |
| Device (Roadblock…) | giá không tăng khi đặt lại, không tính vào Unit Limit, số lượng có hạn | [Deployable device](https://arknights.wiki.gg/wiki/Deployable_device) |

Ví dụ giá thật, lấy từ `character_table.json`. Mỗi cột là một bậc nâng cấp: E0 → E1 → E2.

| Operator | Lớp | Giá DP | Block | Redeploy |
|---|---|---|---|---|
| Myrtle | Vanguard (Standard Bearer) | 8 → 10 → 10 | 1 | 70s |
| Texas | Vanguard (Pioneer) | 11 → 13 → 13 | 2 | 70s |
| Melantha | Guard | 13 → 15 | 1 | 70s |
| Cuora | Defender | 17 → 19 → 21 | 3 | 70s |
| Kroos | Sniper | 9 → 11 | (1) | 70s |
| Lava | Caster (AoE) | 27 → 30 | (1) | 70s |
| Projekt Red | Specialist (Executor) | 7 → 9 → 9 | 1 | **18s** |

Giá trung vị theo lớp, tính trên toàn bộ operator ở bậc cao nhất: Vanguard ~12,5. Specialist và Supporter ~13. Medic ~18. Guard và Sniper ~20. Defender và Caster ~23.

Các màn có thể đổi luật DP:

- Challenge Mode của 0-1 tắt DP tự hồi.
- Challenge Mode của 1-7 hồi DP chậm một nửa (1 DP mỗi 2 giây).
- **Annihilation tắt hẳn DP tự hồi.** Chernobog cho 50 DP lúc đầu, tối đa 999 (dữ liệu: `costIncreaseTime 999999`). Muốn có thêm DP thì phải dùng Vanguard. Ví dụ Charger Vanguard được +1 DP mỗi khi tự tay giết một quái ([Deployment Point – fandom](https://arknights.fandom.com/wiki/Deployment_Point)).

### 2.2 Ô mặt đất và ô cao

Mỗi ô trong dữ liệu màn có ba thuộc tính:

- `heightType`: `LOWLAND` (mặt đất) hoặc `HIGHLAND` (cao).
- `buildableType`: `MELEE` (đặt được cận chiến), `RANGED` (đặt được tầm xa) hoặc `NONE` (không đặt được).
- `passableMask`: `ALL` (quái mặt đất đi qua được) hoặc `FLY_ONLY` (chỉ quái bay qua được).

Ví dụ ở màn 1-7:

- `tile_road`: LOWLAND, MELEE, ALL. Đây là đường quái đi, operator cận chiến đứng lên được.
- `tile_wall`: HIGHLAND, RANGED, FLY_ONLY. Đây là ô cao: operator tầm xa đứng được, quái mặt đất không lên được.
- `tile_floor`: LOWLAND, NONE, ALL. Quái đi qua được nhưng không đặt được gì.
- `tile_forbidden`: không đặt được, quái mặt đất không đi qua.

Hệ quả:

- Quái mặt đất chỉ đi trên ô LOWLAND có `passableMask ALL`. Ô cao chính là "tường" của mê cung.
- Operator tầm xa đứng trên tường nên không bao giờ bị chặn đường. Nhưng quái tầm xa vẫn bắn được họ, ví dụ Crossbowman có tầm 1,9 ô.
- Thiết kế màn của Arknights thực chất là **thiết kế một mê cung ô vuông**: ô đường cho cận chiến, ô tường cho tầm xa.

### 2.3 Block (chặn quái)

- Operator cận chiến **chặn** quái khi quái đi vào đúng ô của họ. Mỗi operator có **block count**: chặn tối đa bao nhiêu quái cùng lúc. Quái thứ n+1 **đi xuyên qua** ([Block](https://arknights.wiki.gg/wiki/Block)).
- Theo lớp ([Class](https://arknights.wiki.gg/wiki/Class)): Defender chặn 2–3 (Duelist chỉ 1). Guard chặn 1–3. Vanguard chặn 1–2. Specialist chặn 0–2. Lớp tầm xa không chặn trong điều kiện thường. Ví dụ dữ liệu thật: Cuora chặn 3, Texas 2, Myrtle 1.
- Một số quái **cần nhiều suất chặn**: loại 2 (Direswine, Ursus Raider…), loại 3 (Bulldozer, Bully…), loại 4 (Theater Golem…). Chỉ operator còn đủ suất chặn trống mới giữ được chúng.
- Một số quái **không chặn được**: Waregeist (dạng thật), quái đang Fear… Volatile Originium Slug chỉ bị Construct chặn.
- Quái bay chỉ bị operator ở trạng thái đặc biệt chặn (Take Off, hoặc ô Levitatable được nâng lên) ([Aerial](https://arknights.wiki.gg/wiki/Aerial_unit)).

### 2.4 Hướng đặt và hình vùng tấn công

Vùng tấn công là một **hình ô cố định**, xoay theo hướng người chơi chọn lúc đặt. Dữ liệu `range_table.json`, vẽ khi operator quay sang phải (`@` là ô operator đứng):

```
Defender (0-1)    Guard (1-1)    Sniper E0 (3-1)    Sniper E1 (3-3)    Supporter Orchid (y-2)
   @                 @#            ###.               ####               ####
                                   @###               @###               #@##
                                   ###.               ####               ####
```

Defender chỉ đánh được ô mình đứng. Guard đánh ô mình và ô trước mặt. Sniper phủ 3 hàng trước mặt. Chọn sai hướng là operator đứng nhìn quái đi qua. Đây là một lớp quyết định mà Kingdom Rush không có, vì tầm tháp của Kingdom Rush là hình tròn.

### 2.5 Tám lớp operator

| Lớp | Đứng ở | Vai trò | Ghi chú |
|---|---|---|---|
| **Vanguard** | đất | Mở màn, tạo DP | Rẻ (~10–13 DP), chặn 1–2. Skill hoặc trait tạo thêm DP |
| **Guard** | đất | Cận chiến gây sát thương | Chặn 1–3, 14 nhánh |
| **Defender** | đất | Tanker, chặn nhiều | Chặn 2–3, máu và giáp cao, đắt |
| **Sniper** | cao | Bắn vật lý xa | Ưu tiên bắn quái bay (nhánh Marksman). Có nhánh bắn lan |
| **Caster** | cao | Bắn phép (Arts), xuyên giáp | Hiệu quả với quái DEF cao. Đắt (~23+) |
| **Medic** | cao | Hồi máu | 7 nhánh |
| **Supporter** | cao (đa số) | Làm chậm, debuff, buff, triệu hồi | Ví dụ Orchid làm chậm |
| **Specialist** | đất hoặc cao | Chức năng đặc biệt | **Push/Pull** (đẩy hoặc kéo quái, ném xuống hố), Executor đặt lại nhanh, Ambusher né… |

Nguồn: https://arknights.wiki.gg/wiki/Class

### 2.6 Các loại quái quan trọng cho thiết kế

Chỉ số gốc (level 0) lấy từ `enemy_database.json`. Từng màn có thể ghi đè chỉ số. Tốc độ tính bằng ô/giây.

| Quái | HP | ATK | DEF | Tốc độ | Kiểu di chuyển | Ghi chú |
|---|---|---|---|---|---|---|
| Originium Slug | 550 | 130 | 0 | 1,0 | WALK | quái yếu nhất |
| Soldier | 1650 | 200 | 100 | 1,1 | WALK | |
| Hound | 820 | 190 | 0 | **1,9** | WALK | quái chạy nhanh |
| Crossbowman | 1400 | 240 | 100 | 0,9 | WALK | bắn operator từ 1,9 ô |
| Monster (drone) | 800 | 0 | 50 | 0,9 | **FLY** | quái bay |
| Heavy Defender | 6000 | 600 | 800 | 0,75 | WALK | DEF rất cao, phải dùng Caster |
| Crownslayer | 6000 | 400 | 120 | 1,4 | WALK | boss, trừ **2 LP**, có skill **blink** vượt qua operator đang chặn |
| Mudrock Colossus | 100000 (CC: 50000) | 3000 | 700 | 0,4 | WALK | được script cho đi **xuyên Rubble** và đập vỡ nó |

Các nhóm hành vi:

- **Quái bay (aerial/drone):** bay qua ô cao, tường, operator và địa hình nguy hiểm. **Chỉ đòn tầm xa đánh trúng được.** Hầu như không bị chặn, không bị đẩy kéo. Xuất hiện ở ô "Aerial Incursion Point" (ký hiệu `s` trong JSON). Vạch báo đường của quái bay màu vàng ([Aerial](https://arknights.wiki.gg/wiki/Aerial_unit), [Pathing](https://arknights.fandom.com/wiki/Pathing)).
- **Quái tàng hình (Invisible):** Lurker, Invisible Crossbowman… Không bị nhắm trúng trừ khi đang **bị chặn**, hoặc bị lộ bởi skill hay thiết bị dò ([Invisible](https://arknights.wiki.gg/wiki/Invisible)).
- **Quái thả dù:** Airborne Soldier, Ursus Assault Crossbowman. Chúng rơi thẳng xuống một ô trên bản đồ, không ra từ Incursion Point và thường không có vạch báo trước ([Pathing](https://arknights.fandom.com/wiki/Pathing)).
- **Quái vượt chặn:** Crownslayer blink qua operator đang chặn mình, skill có hồi chiêu. Cách xử lý phổ biến là đặt một operator "mồi" phía trước để cô ta dùng blink vào đó ([gamewith 4-4](https://gamewith.net/arknights/article/show/15518)).
- **Quái phá vật cản:** quái đập Roadblock nếu Roadblock chặn đúng chỗ nó đang đứng. Colossus được script đi xuyên Rubble. Lava Crack phun dung nham phá Roadblock ([Rubble – fandom](https://arknights.fandom.com/wiki/Rubble), [Terrain](https://arknights.wiki.gg/wiki/Terrain)).
- **Trọng lượng (weight):** dùng cho đẩy và kéo, xem mục 2.8.

### 2.7 Pathing: quái tìm đường thế nào (phần quan trọng nhất)

**Dữ liệu một route** (trong file level, mảng `routes`):

```json
{"motionMode": "WALK",            // WALK = mặt đất, FLY = bay
 "startPosition": {"row":1,"col":10},
 "endPosition":   {"row":3,"col":0},
 "checkpoints": [ {"type":"MOVE","position":{"row":1,"col":4}},
                  {"type":"WAIT_FOR_SECONDS","time":3.0}, ... ],
 "allowDiagonalMove": true, "visitEveryTileCenter": false, ...}
```

Các kiểu checkpoint gặp trong dữ liệu đã tải:

- `MOVE`: đi tới một ô.
- `WAIT_FOR_SECONDS`: đứng chờ một số giây.
- `WAIT_CURRENT_FRAGMENT_TIME`: chờ tới một mốc thời gian của đợt quái.

Mỗi lệnh spawn trong `waves` gắn với một `routeIndex`.

**Cách game đi giữa các điểm.** Theo [Pathing – fandom](https://arknights.fandom.com/wiki/Pathing), quái đi từ điểm này tới điểm kế tiếp. Game dùng **thuật toán SPFA (Shortest Path Faster Algorithm)** để tìm đường ngắn nhất trên lưới. Tức là:

- Route **có checkpoint** thì quái phải đi qua lần lượt từng checkpoint. Giữa hai checkpoint, game vẫn tự tìm đường ngắn nhất.
- Route **không có checkpoint** thì quái tự tìm đường ngắn nhất từ cửa ra tới ô đích. Ví dụ: cả 4 route chính của màn **4-4** đều không có checkpoint (đã kiểm trong dữ liệu). Vì vậy 10 Roadblock của người chơi đổi đường quái thật sự.

**Khi người chơi đặt Roadblock** (theo cùng nguồn):

- Nếu đường của quái bị Roadblock hoặc Static Roadblock chặn, quái chuyển sang lệnh **"Return"**: đi qua vùng **không bị chặn gần nhất** để tới đích. Lệnh này ghi đè đường gốc.
- Ngoại lệ 1: đặt Roadblock **ngay lên ô quái đang đứng**. Quái bị chặn tại chỗ, sẽ đánh Roadblock. Roadblock chỉ có 100 HP nên vỡ ngay.
- Ngoại lệ 2: màn có script cho quái đi xuyên Roadblock, bằng tham số `ReachOffset` hoặc bằng checkpoint đi qua chính ô đó (ví dụ AF-7, Abandoned Mine).
- Ngoại lệ 3: route có checkpoint bắt buộc (ví dụ CB-EX2: quái phải chạm bốn góc). Nếu Roadblock chắn lối tới checkpoint, quái sẽ đánh Roadblock thay vì đi vòng.
- **Luật chống bịt kín:** "người chơi không thể đặt Roadblock nếu nó đóng mọi lối tới Protection Objective" ([Roadblock – fandom](https://arknights.fandom.com/wiki/Roadblock)).
  - **Lưu ý: hai wiki ghi khác nhau** (người tổng hợp kiểm lại 14/10/2026). Fandom: *"the player cannot deploy a Roadblock if it would close off all possible paths to a Protection Objective"*. arknights.wiki.gg: *"if the player deploys a Roadblock in such a way that it would close off all possible paths to a Protection Objective, the enemies will simply attack and destroy a Roadblock to make a path"* ([Roadblock – wiki.gg](https://arknights.wiki.gg/wiki/Roadblock)). Hai câu cùng dẫn tới một ý cho thiết kế: chặn kín không phải lời giải. Chưa kiểm chứng trong game xem bản hiện tại cấm đặt hay cho đặt rồi để quái đập.
- Nếu quái bị Roadblock vây quanh, nó sẽ đi qua (và phá) cái gần ô đích nhất.

**Thông số Roadblock** ([Roadblock – fandom](https://arknights.fandom.com/wiki/Roadblock)): giá 5 DP, HP 100, block 3, chỉ đặt trên ô cận chiến, chỉ đổi đường quái mặt đất. Số lượng theo màn: TR-8 có 3, 4-4 có 10 (`tokenCards: trap_001_crate`).

**Bằng chứng trong dữ liệu (Abandoned Mine, CC Lead Seal).** Route đông quái nhất có checkpoint `[9,6] → [1,6]`, tức là một đường thẳng dọc hàng dưới. Nhưng hàng đó có sẵn 3 khối **Rubble** ở `[6..8,6]`. Lúc chạy, quái buộc phải đi vòng lên trên. Theo mô phỏng (suy luận), đường dài 12 ô khi không có Rubble và 22 ô khi có. Contract "Rubble Cleanup" xoá Rubble, và khi đó quái đi đường ngắn nhất ([Abandoned Mine guide – fandom](https://arknights.fandom.com/wiki/Abandoned_Mine_(Contingency_Contract)/Guide)).

**Mô phỏng xấp xỉ của tài liệu này (suy luận).** Dùng Dijkstra 8 hướng, chỉ cho đi chéo khi cả hai ô cạnh đều mở. Đây không phải code của game. Kết quả nằm trong `rerouteSims` của JSON:

| Map | Tình huống | Độ dài đường (ô) |
|---|---|---|
| TR-8 | cửa phải → đích, không Roadblock | 4 |
| TR-8 | đặt 1 Roadblock ở `[6,4]` (ô game gợi ý, `tile_rcm_crate`) | **16,8** |
| 4-4 | cửa trên-trái → đích trái, không Roadblock | 5 |
| 4-4 | 10 Roadblock đặt tham lam để kéo dài tổng đường | **31** |
| Abandoned Mine | cửa phải → đích, có / không Rubble | 22 / 12 |

Kết luận cho thiết kế: **một vật cản đặt đúng ô có thể gấp 4–6 lần quãng đường quái phải đi.** Đây vừa là sức mạnh của cơ chế, vừa là rủi ro cân bằng (mục 5).

**Vạch báo đường.** Khi một đợt sắp ra, game vẽ vạch đỏ (vàng cho quái bay) từ cửa tới đích, có biểu tượng đồng hồ ở chỗ quái dừng và lá cờ ở checkpoint. Ảnh `assets/ak-map-4-4-nerves-of-steel.png` cho thấy vạch đỏ của Crownslayer: ra ở trái → dừng → đi tới ô Active Originium (lá cờ) → vào đích phải. Dữ liệu khớp với ảnh: route của Crownslayer có checkpoint `[1,7]` chờ 15 giây, rồi `[7,6]` (ô Active Originium) chờ 15 giây.

### 2.8 Ô đặc biệt và đẩy kéo

| Ô / thiết bị | Tác dụng | Nguồn |
|---|---|---|
| **Hole** (hố) | Quái mặt đất rơi vào là **chết ngay**, kể cả boss. Quái không tự đi vào, phải bị đẩy hoặc kéo vào. Quái bay đi qua bình thường | [Hole](https://arknights.wiki.gg/wiki/Hole) |
| **Active Originium** | Ai đứng hoặc đi qua: +50% ATK, +50 ASPD, nhưng mất 180 (4-4) hoặc 150 (CC) máu mỗi giây, trong 300 s (4-4) hoặc 1000 s (CC) | dữ liệu `tile_infection`, [4-4 – fandom](https://arknights.fandom.com/wiki/4-4) |
| **Stun Generator** | Thiết bị đặt sẵn. Trả 10 DP để nổ EMP gây sát thương Arts và làm choáng quái xung quanh. Sau khi nổ, ô của nó có thể mở thành đường | [Stun Generator – fandom](https://arknights.fandom.com/wiki/Stun_Generator) |
| **Fence** | Operator cận chiến đứng được, quái không đi qua được | [Terrain](https://arknights.wiki.gg/wiki/Terrain) |
| Medical / Defense / Anti-Air Rune | Hồi máu / tăng DEF / tăng sát thương lên quái bay cho operator đứng trên | như trên |
| **Lava Crack** | Phun dung nham lên 8 ô quanh nó, **phá Roadblock** | như trên |
| Tunnel | Đưa quái từ cửa hầm này sang cửa hầm kia sau một lúc | như trên |
| Specialist Tactical Point | +1 lực đẩy/kéo cho operator đứng trên | như trên |

**Đẩy và kéo (Shift).** Lực thực = lực của skill − trọng lượng quái. Lực thực 0, 1, 2, 3 đẩy quái đi lần lượt 1,7 / 2,14 / 2,96 / 3,53 ô. Lực thực −3 trở xuống thì không đẩy được ([Shift](https://arknights.wiki.gg/wiki/Shift)). Lối chơi điển hình: đặt Specialist Push cạnh hố để đẩy quái nặng xuống chết ngay. Guide Chernobog dùng đúng cách này với hàng hố ở trên cùng bản đồ.

---

## 3. Các chế độ và nhóm map

| Chế độ | Mô tả ngắn | Ví dụ tên thật |
|---|---|---|
| **Main Story** | Episode 0 → 15 trong dữ liệu EN, mỗi episode khoảng 10+ màn. Có màn hướng dẫn **TR-x** | 0-1 Collapse, 1-7 The Tyrant, 4-4 Nerves of Steel, TR-8 Obstructions |
| **Annihilation** | 400 quái, 10 LP, **không hồi DP**. Hết LP vẫn tính là "hoàn thành", thưởng theo số quái đã giết. Là nguồn Orundum hằng tuần | Permanent: **Chernobog, Lungmen Outskirts, Lungmen Downtown**. Rotating: The Grand Knight Territory Outskirts, Frozen Abandoned City, Abandoned Mine, Flooded Seashore, Watery Tidehollow, … Grand Bazaar (31 màn trong stage_table EN) |
| **Contingency Contract (CC)** | Mỗi mùa có một map Permanent và các map Rotating đổi theo ngày. Người chơi tự chọn "contract" (điều kiện khó), tổng cấp gọi là **Risk** | Mùa: Barrenland (#0), Pyrite (#1), Blade (#2), Cinder (#3), **Lead Seal (#4, permanent: Abandoned Mine)**, Spectrum, Wild Scales, Pine Soot, Dawnseeker, Deepness, Ashring, Fake Waves, Base Point. Từ 2024 đổi thành "Battleplan": Pyrolysis, Underdawn, Extinguished Sins, Arclight… |
| **Integrated Strategies (IS)** | Roguelike: 6 tầng node, bắt đầu với 6 "Hope" để tuyển operator, có Collectible | Ceobe's Fungimist (bản thử), **Phantom & Crimson Solitaire**, **Mizuki & Caerula Arbor**, **Expeditioner's Jǫklumarkar**, **Sarkaz's Furnaceside Fables**, Sui's Garden of Grotesqueries |
| **Stationary Security Service (SSS)** | Kiểu "deck-building": đội tới 20 người, rút quân như rút bài, thiết bị chiến thuật theo lớp | — |
| **Reclamation Algorithm (RA)** | Kéo dài 5 tuần: khám phá bản đồ, xây căn cứ, thủ căn cứ trước các đợt Raid | — |
| Event / Side Story | Màn sự kiện có cơ chế riêng | AF-7, CB-EX2… (đều có Roadblock) |

Nguồn: [Annihilation – fandom](https://arknights.fandom.com/wiki/Annihilation), [Annihilation – wiki.gg](https://arknights.wiki.gg/wiki/Annihilation), [Contingency Contract](https://arknights.wiki.gg/wiki/Contingency_Contract), [Integrated Strategies](https://arknights.wiki.gg/wiki/Integrated_Strategies), [SSS – fandom](https://arknights.fandom.com/wiki/Stationary_Security_Service), [RA – fandom](https://arknights.fandom.com/wiki/Reclamation_Algorithm). Danh sách Annihilation đối chiếu với `stage_table.json`.

---

## 4. Phân tích 6 map tiêu biểu

**Cách đọc lưới.** Hàng trên cùng trong khối code là hàng trên màn hình (y=0). Toạ độ ghi là `[x,y]`.

Ký hiệu:

| Ký hiệu | Ý nghĩa |
|---|---|
| `S` | cửa quái mặt đất |
| `s` | cửa quái bay |
| `E` | ô đích (Protection Objective) |
| `r` | đường, đặt được cận chiến |
| `F` | đường, quái đi được nhưng không đặt được gì |
| `H` | ô cao, đặt được tầm xa |
| `X` | cấm, quái mặt đất không đi |
| `O` | hố |
| `A` | Active Originium |
| `c` | ô game gợi ý đặt Roadblock |

Guide trên wiki dùng hệ toạ độ khác, kiểu `{{Pos|D9}}`. Chữ cái là hàng **tính từ dưới lên** (A = hàng dưới cùng), số là x+1. Đã kiểm chéo trên 0-1, TR-8 và Chernobog, cùng ảnh `assets/ak-gridmap-1-7-the-tyrant.png`.

### 4.1 `0-1` Collapse: màn đầu tiên (levelId `Obt/Main/level_main_00-01`)

```
x  012345678
y0 XXXXXXXXX
y1 XHHHHHHHX
y2 ErHrrrrrX
y3 XrrrHrrrS
y4 XHHHHHHHX
y5 XXXXXXXXX
```

- **Thông số:** 1 cửa (`[8,3]`), 1 đích (`[0,2]`). 11 quái (10 Originium Slug, 1 Soldier). 20 LP, 10 DP, Unit Limit 8.
- **Bố cục:** hai ô cao `[4,3]` và `[2,2]` chen giữa đường làm quái đi zigzag: `[8,3]` → lên hàng 2 → `[3,2]` → xuống `[3,3]` → `[1,3]` → `[1,2]` → đích. Route trong dữ liệu có đúng các checkpoint này.
- **Chiến thuật (guide):** đặt một Vanguard trên một ô cận chiến bất kỳ, quay phải. Đặt Sniper ở `[4,3]` hoặc `[2,2]`, quay phải. Map này không thể thua ([0-1/Guide – fandom](https://arknights.fandom.com/wiki/0-1/Guide)).
- **Vì sao đáng xem:** trong 9 × 6 ô, màn này dạy cả ba ý chính: đường zigzag do ô cao tạo ra, Sniper đứng ở ô cao giữa đường phủ được hai đoạn đường, và chặn ở góc cua.

### 4.2 `TR-8` Obstructions: màn dạy Roadblock (`Obt/Training/level_training_8`)

```
x  012345678
y0 XXXXXXXXX
y1 SrrrrrrHX
y2 XrrXHHrHX
y3 XrXXXXEXX
y4 XrrXrXcXX
y5 XrrrrrrrS
y6 XXXXXXXXX
```

- **Thông số:** 2 cửa (`[0,1]` trên-trái, `[8,5]` dưới-phải), 1 đích `[6,3]` ở giữa. 9 quái, **1 LP**, 20 DP, 3 Roadblock.
- **Kịch bản (guide):** đặt Fang `[6,1]` và Kroos `[7,1]`, cả hai quay trái, để giữ lối vào từ trên. Sau đó Soldier ra từ cửa dưới-phải, chỉ cách đích 3 ô qua `[6,4]`, mà không còn operator nào để đặt. Lời giải là đặt Roadblock ở `[6,4]` (game tô sẵn ô này là `tile_rcm_crate`). Quái phải vòng qua hàng dưới, lên cột x=1, đi dọc hàng trên, và gặp đúng chỗ Fang với Kroos đang đứng ([TR-8/Guide – fandom](https://arknights.fandom.com/wiki/TR-8/Guide)).
- **Đường đi (mô phỏng):** 4 ô thành 16,8 ô.
- **Vì sao đáng xem:** đây là **mẫu nhỏ nhất của đường đi động**. Có hai lối vào đích. Người chơi khoá một lối để dồn mọi quái vào một điểm phòng thủ duy nhất. Rất hợp làm màn hướng dẫn cho Titan Blood.

Ảnh: `assets/ak-map-tr-8-obstructions.png`.

### 4.3 `1-7` The Tyrant (`Obt/Main/level_main_01-07`)

```
x  01234567890
y0 XXXXXXXXXXX
y1 XHHHrrrrrFS
y2 XHrrrHHHHXX
y3 ErrXrrrrrFS      [3,3] = Stun Generator (đặt sẵn)
y4 XHrrrHHHHXX
y5 XHHHrrrrrFS
y6 XXXXXXXXXXX
```

- **Thông số:** **3 cửa** ở mép phải (`[10,1]`, `[10,3]`, `[10,5]`), 1 đích `[0,3]`. 41 quái: 23 Slug α, 7 Soldier, 4 Rioter, 4 Cocktail Thrower, 2 Junkman, 1 Shielded Soldier. 10 LP, 10 DP, Unit Limit 8 ([1-7 – wiki.gg](https://arknights.wiki.gg/wiki/1-7)).
- **Ba làn:**
  - Làn trên đi thẳng tới cột x=4, rẽ xuống `[4,2]`, sang `[2,2]`, rồi vào hành lang `[2,3]` → `[1,3]` → đích.
  - Làn dưới đối xứng, đi qua `[4,4]` và `[2,4]`.
  - Làn giữa bị ô `[3,3]` (có Stun Generator) chắn, nên tách ra vòng lên hoặc vòng xuống. Dữ liệu có 2 route cho làn giữa, mỗi route 9 quái.
- **Điểm nghẽn:** `[2,3]` và `[1,3]`, nơi ba làn gộp lại. Tiếp theo là `[2,2]` và `[2,4]`.
- **Chiến thuật (suy luận, wiki không có guide chi tiết):**
  - Defender chặn 3 ở `[2,3]`, quay phải.
  - Medic và Sniper ở `[1,2]` và `[1,4]`.
  - Caster ở `[5,2]` và `[5,4]` phủ hai làn mỗi người.
  - Bấm Stun Generator (10 DP) khi quái dồn cục quanh `[2..4, 2..4]`.
  - Briefing của màn cũng nói phải "kết hợp hoả lực với Stun Generator".
- **Vì sao đáng xem:**
  - Đây là ví dụ chuẩn về **"nhiều cửa → một phễu"**: thiết kế đối xứng, dễ đọc.
  - Có một thiết bị trên bản đồ mà người chơi trả tiền để kích hoạt.
  - Màn này nổi tiếng là nơi farm Orirock Cube hiệu quả nhất theo Sanity, nên người chơi lặp lại nó rất nhiều lần ([1-7 – wiki.gg](https://arknights.wiki.gg/wiki/1-7)).

Ảnh: `assets/ak-map-1-7-the-tyrant.png`, `assets/ak-gridmap-1-7-the-tyrant.png`.

### 4.4 `4-4` Nerves of Steel: Roadblock và hai đích (`Obt/Main/level_main_04-04`)

```
x  0123456789012
y0 XXXXXXXXXXXXX
y1 SrrrrrrrHHHrS
y2 XrXXrXXrrrrrX
y3 XrHXrHXrHXXrX
y4 ErrrArrrrErrX      2 đích: [0,4] và [9,4]
y5 XrHXrHXrHXXrX
y6 XrXXrXXArrrrS
y7 SrrrrrrrHHHXX
y8 XXXXXXXXXXXXX
```

- **Thông số:**
  - **4 cửa** ở 4 góc, **2 đích**.
  - **Chỉ 3 LP.** 9 Unit Limit, 10 DP, **10 Roadblock**.
  - 63 quái: 43 Soldier, 13 Sarkaz Greatswordsman, 4 Sarkaz Crossbowman, 2 Veteran Logger, 1 Crownslayer.
  - Hai ô Active Originium ở `[4,4]` và `[7,6]`.
  - Nguồn: [4-4 – fandom](https://arknights.fandom.com/wiki/4-4) và dữ liệu.
- **Route** (đều không có checkpoint, nên quái tự tìm đường):

  | Từ cửa | Tới đích | Số quái |
  |---|---|---|
  | `[0,1]` | `[0,4]` | 28 |
  | `[0,7]` | `[9,4]` | 24 |
  | `[12,1]` | `[0,4]` | 7 |
  | `[12,6]` | `[9,4]` | 3 |

  Riêng Crownslayer có checkpoint: dừng 15 giây ở `[1,7]`, rồi 15 giây trên ô Active Originium `[7,6]`, rồi vào đích phải.
- **Vấn đề của map:** cửa `[0,1]` cách đích `[0,4]` **chỉ 5 ô** (xuống thẳng cột x=1). Nhiều quái nhất đi route này. Không dùng Roadblock thì gần như không có thời gian để giết chúng.
- **Chiến thuật:**
  - Guide gamewith: dùng tối đa 10 Roadblock để "bẻ" làn quái, kết hợp với Active Originium để kéo dài đường và tăng sát thương theo thời gian. Đặt Supporter làm chậm gần các ô này. Đặt một operator phía trước làm mồi cho Crownslayer ([gamewith 4-4](https://gamewith.net/arknights/article/show/15518)).
  - Mô phỏng (suy luận): chặn `[1,2]` và `[1,3]` buộc quái từ `[0,1]` chạy hết hàng trên, xuống cột x=11, rồi chạy hết hàng dưới mới tới đích trái. Thuật toán tham lam 10 Roadblock (xem JSON) kéo đường này từ **5 lên 31 ô**, còn đường `[12,1]` → `[0,4]` từ 15 lên 21 ô.
  - Với bố cục đó, mọi quái về đích trái đi qua `[1,5]` → `[1,4]`. Đặt Defender ở đó (suy luận).
- **Vì sao đáng xem:**
  - Đây là map rõ nhất về **đường đi động do người chơi tạo ra**: bố cục dạng lưới ô bàn cờ có nhiều lối song song, nên vật cản tạo ra mê cung.
  - Hai đích, và mỗi quái được gán một đích riêng. Theo [Pathing](https://arknights.fandom.com/wiki/Pathing), quái đi xuyên qua đích không phải của mình mà không vào.
  - Ô Active Originium vừa có lợi vừa có hại, cho cả hai phe.

Ảnh: `assets/ak-map-4-4-nerves-of-steel.png`.

### 4.5 Chernobog (Annihilation, permanent) (`Obt/Campaign/level_camp_01`)

```
x  01234567890
y0 XXXXXOOOOOX      hàng hố [5..9,0]
y1 EFrrrrrFrrS      đích trái [0,1] ← cửa phải [10,1]
y2 XXHHrHXHFHX
y3 XHHHFHHHrHX
y4 SrFFrrrrrFE      cửa trái [0,4] → đích phải [10,4]
y5 sHHFHHrrHHX      cửa bay [0,5]
y6 SrFFrrrrHXX      cửa trái [0,6] → lên [6,5] → [7,4] → đích phải
y7 XXXXXXXXXXX
```

- **Thông số:**
  - **400 quái**, 10 LP, Unit Limit 9. 50 DP ban đầu, **không hồi DP**, tối đa 999.
  - Thành phần quái: 62 Soldier, 62 Slug, 47 Slug α, 43 Cocktail Thrower, 20 Monster (drone), 20 Junkman, 20 Shielded Soldier… 1 Crownslayer.
  - Dữ liệu khớp từng con số với [Chernobog (Annihilation) – fandom](https://arknights.fandom.com/wiki/Chernobog_(Annihilation)).
- **Bố cục:**
  - Hai luồng quái **ngược chiều**. Trái → phải ở hàng 4 và 6 có 271 quái mặt đất cộng 20 drone. Phải → trái ở hàng 1 có 78 quái.
  - Cột x=4 (`[4,2]`, `[4,3]`) nối hai hàng. Khoảng 31 quái đi tắt qua đây để sang đích bên kia.
  - Drone bay từ `[0,5]` thẳng tới đích phải.
  - Hàng trên cùng có 5 ô hố.
  - Dữ liệu có 25 route khác nhau sau khi gộp; JSON giữ 14 route nhiều quái nhất.
- **Chiến thuật (guide của YouTuber Just3c trên wiki, toạ độ đã đổi):**
  1. Pioneer Vanguard ở `[8,4]`, Charger Vanguard ở `[6,4]`, cả hai quay trái. Charger giết quái để lấy DP. Splash Caster ở `[7,3]` phải đứng ngoài vùng giết của Charger để khỏi "cướp kill".
  2. Đặt theo thứ tự: Sniper `[8,5]`, Medic `[8,6]`, Bombardier `[5,2]`, **Push Specialist `[9,2]` quay lên (đẩy quái hàng 1 xuống hố)**, Medic 2 `[7,2]`, Defender `[8,1]` chặn luồng phải → trái. Sau đó rút Charger, đặt Defender mạnh nhất ở `[7,4]`. **Thứ tự đặt quan trọng**, vì quái tầm xa nhắm vào operator được đặt sau cùng.
  3. Khoảng kill 340–350, Caster Leader đi "đường tắt" lên trên-trái qua `[4,4]`. Chỉ đặt Sniper ở `[2,2]` khi chúng đã rẽ lên, không đặt sớm hơn.
  4. Crownslayer: đặt Guard ở `[5,4]` **sau khi** cô ta đã dừng ở `[4,4]`, để cô ta không blink qua được.

  Nguồn: [Chernobog (Annihilation)/Guide – fandom](https://arknights.fandom.com/wiki/Chernobog_(Annihilation)/Guide).
- **Vì sao đáng xem:**
  - Nền kinh tế đảo ngược: **DP chỉ đến từ việc giết quái**, giống vàng theo kill của Kingdom Rush.
  - Hố cộng với đẩy là cách tiêu diệt bằng địa hình.
  - Hai luồng ngược chiều buộc phải chia quân.
  - Thời điểm đặt quân là một phần chiến thuật, vì có aggro và blink.

Ảnh: `assets/ak-map-chernobog-annihilation.png`.

### 4.6 Abandoned Mine (CC #4 Lead Seal, Permanent Site) (`Obt/Rune/level_rune_06-01`, suy ra)

```
x  012345678901
y0 XXXSXXXXXXSX      2 cửa trên: [3,0], [10,0]
y1 XFFFXrrrrFFX
y2 XrXHrrHHHXrX
y3 XrrrrrrrrrrX      Rubble ở [8,3], [9,3]
y4 XXXHrrHrHXrX
y5 EFHHHrXrXFFX      đích [0,5]
y6 XrrrrrrArFFS      Rubble ở [6,6], [7,6], [8,6]; cửa phải [11,6]
y7 XXXXXXXXXXXX
```

- **levelId:** CC không có trong `stage_table.json`. Tôi khớp file `level_rune_06-01` bằng số liệu: Unit Limit 9, 3 LP, 10 DP, 39 quái, 5 Rubble (`trap_027_stone`), quái họ Mudrock. Tất cả trùng với trang [Abandoned Mine (CC) – fandom](https://arknights.fandom.com/wiki/Abandoned_Mine_(Contingency_Contract)).
- **Quái:** 23 Shielded Guard, 6 Mudrock Matterllurgist, 4 Mudrock Zealot, **2 Mudrock Colossus** (50.000 HP, 600 DEF, **đi xuyên Rubble**), 2 Defense Crusher, boss **Big Bob và Mudrock**.
- **Bố cục:**
  - 3 cửa, 1 đích ở góc dưới-trái.
  - 5 Rubble cắt hai hành lang ngang (hàng 3 và hàng 6). Mọi quái thường bị ép qua **kênh dọc x=5** (`[5,1]` → `[5,6]`), rồi theo hàng dưới về `[1,6]` → đích.
  - Colossus có route riêng, checkpoint đi đúng qua các ô Rubble. Nó dừng lại đập vỡ Rubble, và khi đó **đường tắt mở ra** cho quái khác đi sau.
- **Chiến thuật:**
  - Guide wiki chỉ nói chung: chỗ đặt cận chiến chật. Colossus chậm nhưng một đòn có thể giết gần như mọi operator, nên hãy câu giờ nó và tập trung giết quái khác.
  - Contract "Rubble Cleanup" xoá Rubble, và khi đó quái đi đường ngắn nhất ([Abandoned Mine guide – fandom](https://arknights.fandom.com/wiki/Abandoned_Mine_(Contingency_Contract)/Guide)).
  - Đề xuất (suy luận): Defender ở `[1,6]`. Medic hoặc Caster ở `[2..4,5]`. Một tuyến chặn ở kênh `[5,3..5]`, với Sniper ở `[6,4]`.
- **Vì sao đáng xem:**
  - Đây là ví dụ về **đường đi đổi theo thời gian do quái gây ra**, không phải do người chơi.
  - Contract (mutator) bật tắt được vật cản để tạo một biến thể khó hơn trên cùng bản đồ.

Ảnh: `assets/ak-map-abandoned-mine-cc.png`.

---

## 5. Bài học cho Titan Blood

Titan Blood là game kiểu Kingdom Rush: đường quái vẽ sẵn, tháp đặt vào slot, barracks có lính chặn. Phần dưới gợi ý cách chuyển từng cơ chế, theo thứ tự ưu tiên.

### 5.1 Nên làm

1. **Đồ thị đường có nhánh, và quái tìm đường lại khi đồ thị đổi.**
   - Không cần lưới ô vuông như Arknights. Với bản đồ vẽ tay kiểu Kingdom Rush, nên mô hình hoá đường là **đồ thị nút (ngã ba) và cạnh (đoạn đường)**. Mỗi quái có "đích" và có thể có checkpoint bắt buộc, giống `routes` của Arknights.
   - Khi một cạnh bị chặn, chạy lại Dijkstra cho quái đang đi. Quái đang ở giữa một cạnh thì đi nốt tới nút kế tiếp rồi mới rẽ, giống lệnh "Return" (suy luận về cách cài).
   - Cho phép hai loại route: **free** (tự tìm đường, như 4-4) và **via-checkpoints** (bám kịch bản, như 1-7). Người làm map trộn hai loại để kiểm soát độ khó.
2. **Vật cản đặt được (Barricade), theo luật Roadblock.**
   - Rẻ, ví dụ 5 trên 99 DP, và số lượng giới hạn theo màn (3 ở màn hướng dẫn, 10 ở màn khó).
   - Chỉ đặt ở các "ô chặn" được đánh dấu trên ngã ba, giống `tile_rcm_crate`. Như vậy hợp với bản đồ vẽ tay và tránh bùng nổ tổ hợp.
   - **Cấm bịt kín mọi lối tới đích.** Kiểm tra bằng thuật toán tìm đường ngay lúc người chơi thả vật cản.
   - Đặt đè lên quái thì quái đập vỡ.
   - Có thể thêm quái chuyên phá vật cản (Colossus) và hazard phá vật cản (Lava Crack) để vật cản không vĩnh viễn.
3. **Luôn hiển thị đường quái trước mỗi đợt.** Vạch đỏ cho quái mặt đất, vạch vàng cho quái bay, biểu tượng đồng hồ ở chỗ quái dừng. Phải cập nhật **ngay khi người chơi đặt vật cản**. Thiếu cái này thì đường đi động chỉ khiến người chơi bối rối. Arknights làm điều này ở mọi màn.
4. **Màn hướng dẫn kiểu TR-8.** Hai lối vào đích, một cái vật cản, đặt xong là quái phải vòng cả bản đồ để đi qua đúng tuyến lính. Dạy cơ chế trong khoảng 1 phút.
5. **Block count cho lính barracks, kèm quái "nặng".**
   - Mỗi lính giữ 1 suất. Quái lớn chiếm 2–3 suất ([Block](https://arknights.wiki.gg/wiki/Block)).
   - Quái vượt quá số suất thì **đi xuyên qua**. Đây là áp lực tự nhiên để người chơi chặn nhiều tầng.
   - Kết hợp với đường động: dồn quái vào một ngã có barracks mạnh, đúng như TR-8 và 4-4.
6. **Quái bay đi đường riêng** (cửa bay riêng, không bị vật cản và lính ảnh hưởng). Chúng phá thế "khoá mê cung" và buộc người chơi giữ tháp tầm xa ở gần đích.

### 5.2 Nên cân nhắc

7. **Checkpoint có WAIT, tức quái dừng có chủ đích.** Ví dụ Crownslayer dừng 15 giây trên ô buff. Người làm map dùng cái này để dàn nhịp đợt quái và tạo cảnh "boss tiếp sức trên ô nguy hiểm".
8. **Ô vừa có lợi vừa có hại (Active Originium)** và **hố cộng đẩy kéo**. Titan Blood đã có cơ chế "hố" và "dụ quái" ở level 4 (theo commit gần đây về luring vào pit). Bảng lực đẩy trừ trọng lượng của Arknights (mục 2.8) là một mẫu tham số có sẵn cho "quái nhẹ bị đẩy xa, boss gần như không nhúc nhích".
9. **Nhiều đích, mỗi quái gán một đích** (4-4, Chernobog). Tạo áp lực chia quân. Kết hợp với LP theo loại quái (boss trừ 2 LP).
10. **Kinh tế.** Arknights dùng DP theo thời gian, còn Annihilation đảo lại thành DP theo kill. Kingdom Rush dùng vàng theo kill. Có thể thử một biến thể màn hoặc mutator "thu nhập theo thời gian" để đổi nhịp (suy luận). Không nên bỏ vàng theo kill ở màn chính, vì đó là cảm giác cốt lõi của thể loại.
11. **Mutator kiểu Contingency Contract.** Bật tắt vật cản có sẵn (Rubble Cleanup), tăng tốc quái (Challenge 4-4: tốc độ ×2), giảm hồi tiền. Làm được nhiều biến thể độ khó trên cùng một bản đồ mà không cần vẽ thêm.

### 5.3 Rủi ro

- **Mê cung suy biến.** Một vật cản đặt đúng chỗ có thể kéo dài đường 4–6 lần (TR-8: 4 → 16,8; 4-4: 5 → 31). Cân bằng phải tính cả cấu hình xấu nhất. Cách giảm: giới hạn số vật cản, chỉ cho đặt ở ô định sẵn, có quái phá vật cản, có quái bay.
- **Người chơi không đọc được đường.** Bắt buộc phải có preview, cập nhật tức thì, kể cả trên màn hình điện thoại nhỏ. Đây là chi phí UI lớn nhất.
- **Hình ảnh bản đồ vẽ tay.** Mọi nhánh đường thay thế phải được vẽ thành đường thật. Arknights dùng lưới 3D nên không gặp vấn đề này; Kingdom Rush thì có.
- **Lính barracks chạy đi đánh** (khác operator đứng yên của Arknights). Nếu lính rời vị trí, vật cản và block count có thể xung đột. Cần luật rõ: lính chỉ giữ một khoảng quanh điểm tập kết.
- **Tính toán.** Đồ thị vài chục nút thì Dijkstra mỗi lần đổi vật cản là không đáng kể (suy luận). Phải đảm bảo kết quả tất định (deterministic) nếu game có replay hoặc kiểm tra parity.
- **Quái bị kẹt hoặc đi lùi.** Lệnh "Return" của Arknights cho quái đi tới vùng mở gần nhất. Cần test trường hợp đặt vật cản ngay trước mặt một đám quái đông.

---

## 6. Nguồn

**Dữ liệu game:** repo [Kengxxiao/ArknightsGameData_YoStar](https://github.com/Kengxxiao/ArknightsGameData_YoStar), thư mục `en_US/gamedata`. Các file đã tải (bản gốc lưu ở `.scratch/td-references/ak-raw/`):

- Level: `levels/obt/main/level_main_00-01.json`, `level_main_01-07.json`, `level_main_04-04.json`, `levels/obt/campaign/level_camp_01.json` (Chernobog), `level_camp_02.json` (Lungmen Outskirts, tải nhưng chưa phân tích), `levels/obt/training/level_training_8.json`, `levels/obt/rune/level_rune_*.json` (30 file CC, dùng `level_rune_06-01`).
- Bảng: `excel/stage_table.json`, `excel/character_table.json`, `excel/range_table.json`, `excel/enemy_handbook_table.json`, `levels/enemydata/enemy_database.json`.

**Wiki và guide:**

- Pathing (SPFA, lệnh Return, ReachOffset): https://arknights.fandom.com/wiki/Pathing
- Roadblock (5 DP, block 3, cấm bịt kín): https://arknights.fandom.com/wiki/Roadblock
- Static Roadblock: https://arknights.fandom.com/wiki/Static_Roadblock
- Rubble: https://arknights.fandom.com/wiki/Rubble
- Deployable device: https://arknights.wiki.gg/wiki/Deployable_device
- Deployment Point: https://arknights.wiki.gg/wiki/Deployment_Point và https://arknights.fandom.com/wiki/Deployment_Point
- Cost: https://arknights.wiki.gg/wiki/Attribute/Cost
- Redeployment time: https://arknights.wiki.gg/wiki/Attribute/Redeployment_time
- Charger Vanguard (hoàn 50%): https://arknights.wiki.gg/wiki/Charger_Vanguard
- Operation (sao, Auto Deploy): https://arknights.wiki.gg/wiki/Operation
- Support Unit (đội 13): https://arknights.wiki.gg/wiki/Support_Unit
- Block: https://arknights.wiki.gg/wiki/Block
- Class: https://arknights.wiki.gg/wiki/Class
- Aerial: https://arknights.wiki.gg/wiki/Aerial_unit
- Invisible: https://arknights.wiki.gg/wiki/Invisible
- Camouflage: https://arknights.wiki.gg/wiki/Camouflage
- Hole: https://arknights.wiki.gg/wiki/Hole
- Shift: https://arknights.wiki.gg/wiki/Shift
- Terrain: https://arknights.wiki.gg/wiki/Terrain
- Skill: https://arknights.wiki.gg/wiki/Skill
- Skill Point: https://arknights.wiki.gg/wiki/Skill_Point
- Stun Generator: https://arknights.fandom.com/wiki/Stun_Generator
- Màn 0-1: https://arknights.fandom.com/wiki/0-1 và https://arknights.fandom.com/wiki/0-1/Guide
- Màn 1-7: https://arknights.wiki.gg/wiki/1-7, https://arknights.fandom.com/wiki/1-7 và https://arknights.fandom.com/wiki/1-7/Guide
- Màn 4-4: https://arknights.wiki.gg/wiki/4-4, https://arknights.fandom.com/wiki/4-4, https://arknights.fandom.com/wiki/4-4/Guide và https://gamewith.net/arknights/article/show/15518
- Màn TR-8: https://arknights.fandom.com/wiki/TR-8 và https://arknights.fandom.com/wiki/TR-8/Guide
- Chernobog: https://arknights.fandom.com/wiki/Chernobog_(Annihilation) và https://arknights.fandom.com/wiki/Chernobog_(Annihilation)/Guide
- Lungmen Outskirts: https://arknights.fandom.com/wiki/Lungmen_Outskirts
- Abandoned Mine: https://arknights.fandom.com/wiki/Abandoned_Mine_(Contingency_Contract) và https://arknights.fandom.com/wiki/Abandoned_Mine_(Contingency_Contract)/Guide
- Annihilation: https://arknights.fandom.com/wiki/Annihilation và https://arknights.wiki.gg/wiki/Annihilation
- Contingency Contract: https://arknights.wiki.gg/wiki/Contingency_Contract
- Integrated Strategies: https://arknights.wiki.gg/wiki/Integrated_Strategies
- SSS: https://arknights.fandom.com/wiki/Stationary_Security_Service
- RA: https://arknights.fandom.com/wiki/Reclamation_Algorithm
- Thông tin chung về game: https://arknights.wiki.gg/wiki/Arknights

---

## 7. Phụ lục: file dữ liệu và những gì chưa xác minh

**`data/arknights-maps.json`** có 6 map: 0-1, 1-7, 4-4, Chernobog, TR-8, Abandoned Mine. **Map nào cũng có grid.** Các trường chính:

- `grid`: hàng trên màn hình trước.
- `routes`: đã gộp các route trùng start, end và checkpoint MOVE. Mỗi route có `spawns` (số quái dùng nó), `pathfind` (`free` hoặc `via-checkpoints`) và `hasWait`.
- `devices`, `deployableCards`, `enemies`, `options`: thông số DP, LP, Unit Limit.
- `chokepoints` và `suggested`: có `source` khi lấy từ guide, có `inferred: true` khi là suy luận.
- `rerouteSims`: mô phỏng xấp xỉ.

Script tạo file nằm ở `.scratch/td-references/ak_build.py` và `ak_spec.json`, chạy bằng `python3 -I`.

**Chưa xác minh được:**

- Thuật toán thật của game, gồm trọng số đi chéo và luật cắt góc. Wiki chỉ nói "SPFA". Phần mô phỏng của tài liệu là xấp xỉ.
- Wiki không ghi rõ hệ số nhân giá có reset về giá gốc hay không.
- Vị trí đặt quân cho 1-7, 4-4 và Abandoned Mine. Wiki và gamewith không có guide toạ độ cho các màn này (prts.wiki chặn truy cập tự động), nên các vị trí trong mục 4 là suy luận.
- levelId của Abandoned Mine là suy ra bằng cách khớp số liệu, vì CC không có trong `stage_table`.
- Ô Active Originium: data 4-4 ghi `buildableType NONE`, nhưng mô tả màn nói "operator đứng trên đó". Có thể ở map khác ô này đặt được.
