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.

Luận điểm. 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ỏ.

01

Strategy cứng

Entropy / LessEdge / TravelLessEdge / ClearBoardPro chỉ chọn được 1–2 khối.

02

Fill fail

UseRandomFillFailedTile ON → slot trống nhận Random (không phải NoDie).

03

Replace bỏ

Khay hỗn hợp ≠ 3×Random → ReplaceRandomDie return sớm.

04

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.

P1

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.

code · #1–#4
P2

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.

RC · #5
P3

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).

code · #1–#4
P4

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 đủ.

code · mọi case

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).