Báo cáo anti-death · Endless / Travel
Chết vì tổ hợp khay, không vì từng khối
Entropy / LessEdge / ClearBoardPro thường chỉ lấp 1–2 ô. Slot fail bị bơm Random. Cứu gốc đòi điều kiện quá chặt nên bỏ qua đúng lúc cần cứu.
ReplaceRandomDieToRandomNoDie chỉ chạy khi cả 3 khối là Random và !isSolvable, rồi còn xác suất Percent mặc định 50%. Khay hỗn hợp (Entropy + Random) không bao giờ vào nhánh cứu này.
Đề xuất dưới chỉ vá lớp ReplaceRandomDie / fill fail trong difficulty_profile.
Chuỗi chết điển hình
Ví dụ case #1–#4: strategy cứng fail slot → fill Random → cứu bị bỏ.
Strategy cứng
Entropy / LessEdge / TravelLessEdge / ClearBoardPro chỉ chọn được 1–2 khối.
Fill fail
UseRandomFillFailedTile ON → slot trống nhận Random (không phải NoDie).
Replace bỏ
Khay hỗn hợp ≠ 3×Random → ReplaceRandomDie return sớm.
Cứu cuối hẹp
Không vào Replace → chỉ còn ép đổi tiles[1] khi cả 3 bí hoặc cả 3 giống nhau.
Đề xuất giải cứu · lớp Replace
Chỉ đụng ReplaceRandomDieToRandomNoDie + fill fail. P1/P3/P4 cần sửa code; P2 chỉ cần RC.
Nới Replace: ≥1 khối Random + !isSolvable
Code: bỏ điều kiện “cả 3 = Random”. Cứu được khay hỗn hợp Entropy/LessEdge + Random (#1–#4). Lệch gốc có kiểm soát.
RC: Percent 50 → 100
Khi cả 3 = Random thuần và không giải được, luôn thay bằng RandomNoDie. Không đụng code. Endless iOS đang ON Percent 50; Travel / Android thường OFF.
Fill fail = RandomNoDie
Khi UseRandomFillFailedTile ON, slot fail nhận NoDie thay vì Random chết. Chặn chết từ nguồn (#1–#4).
Loop regenerate khi !isSolvable
An toàn nhất cho player, lệch gốc nhiều nhất — chỉ khi P1–P3 chưa đủ.
RC / profile gợi ý (P2)
Đưa vào difficulty_profile.funcOverrides.
Endless — bật cứu chắc (Percent 100)
Mirror local hiện: on: true, Percent: "50". Đổi Percent lên 100.
"endless:ReplaceRandomDieToRandomNoDie": {
"on": true,
"params": { "Percent": "100" }
}
Travel — giữ tắt (mặc định)
Travel profile đang on: false. Chỉ bật nếu đo thấy chết khay Travel thật.
"travel:ReplaceRandomDieToRandomNoDie": {
"on": false,
"params": { "Percent": "50" }
}
10 case theo mức nguy
Nguy = khả năng tạo khay không giải được với Replace chặt (đòi 3×Random) + Percent 50.
| # | Combo / case | Nguy | Vì sao bí | Cứu hiện tại | Đề xuất cứu |
|---|---|---|---|---|---|
| 1 | Entropy* + Random | Cao | Entropy chỉ chọn 1–2 khối; slot fail fill Random khi UseRandomFillFailedTile ON. |
ReplaceRandomDie đòi cả 3 = Random → bỏ. |
P1 nới Replace (≥1 Random) hoặc P3 fill fail = RandomNoDie. |
| 2 | LessEdge / FillSortEdge + Random | Cao | Cùng cơ chế fill-fail → Random. |
Như #1. | Như #1. |
| 3 | TravelLessEdge + Random | Cao | Travel mode luôn gọi Random fill cho slot fail. | Như #1. | Như #1; vá Travel riêng nếu cần. |
| 4 | ClearBoardPro + Random | Trung-cao | 1–2 ClearBoardPro; slot còn lại thành Random khi ≥4 ô trống. | Như #1. | Như #1; hoặc cấm Random khi ≥4 slot mà bàn đầy. |
| 5 | Cả 3 = Random thuần | Trung | Random không bảo đảm tổ hợp giải được. |
Replace ON nhưng Percent=50. |
P2: Percent 50→100 (RC). |
| 6 | 3 khối giống nhau | Trung | Dễ tới trạng thái cả 3 không đặt được. | Ép đổi tiles[1]; RandomBlockByEfficientCtrl ON có thể chặn. |
Nới EfficientCtrl khi cả 3 bí. |
| 7 | Entropy + RandomNoDie fill | Trung-thấp | Fill NoDie khi UseRandomFillFailedTile OFF. |
Không đi qua ReplaceRandomDie. | P4 regenerate khi !isSolvable. |
| 8 | EntropyAddWithClear (key mixing) | Thấp | Dùng genTileStrategyKey trộn. |
Replace bỏ qua; cờ OFF trên iOS. | Giữ OFF; nếu bật Android thì áp vá #1. |
| 9 | List fallback Hard → Entropy | Thấp | Chỉ 1 strategy được chọn. | — | Không cần. |
| 10 | Cả 3 = RandomNoDie | Thấp | Mỗi khối đặt được ≥1 chỗ. | Hiếm khi tạo chết. | Không cần. |
Challenge Incoming chỉ là UI cảnh báo độ khó sắp tăng. Không cứu bàn, không thay khối, không gọi isSolvable.
Nguồn: SolutionManager.CheckAllSameOrAllCanNotPut (C# :697–720), pxReplaceRandomDieToRandomNoDie (funcs_ios_replace.cpp:180), UseRandomFillFailedTile (strategy_base.cpp:94).