Có chia nhánh rung không? Máy khác nhau thế nào?
Hai tầng khác nhau: nhánh sự kiện (app quyết định có rung / sóng nào) và máy/OS (chỉ scale feel, không đổi timing app gửi). Dưới là sóng từ số dump thật.
Câu trả lời ngắn
Có — chia nhánh sự kiện
Cùng một máy, cùng toggle rung ON: nút / đặt khối / xoá ≥4 / all-clear không cùng một đường. Mỗi nhánh có trait + gate L6 riêng → sóng khác hoặc im.
- Nút vs place: cùng trait, place thêm
boardOpShake - Clear ≥4: trait khác, one-shot ms theo lines+combo
- All-clear/skin: trait khác nữa
Không — không chia nhánh theo máy/OS
App không gửi waveform khác theo Samsung vs OnePlus hay Android 12 vs 14. Máy chỉ nhận cùng số → motor/OS scale amp (MEDIA). Khác máy cảm giác khác, timing app giống.
- Khác cohort server = khác config trait (không phải khác OS)
- API <26: path chính
vibrateRepeat26chết (im)
Nhánh sự kiện trên 1 máy (cohort dump)
Config thật trên máy dump: chỉ ButtonClick + isOpenVibrate; boardOpShake false. Cột phải = kết quả quan sát / suy ra từ gate.
shakeGPboardOpShake = falseEliminationVibrationTier — cohort sau refresh không cóShakeNativeByChangSkin — không có trên cohort dumpboardOpShake true → cùng sóng nútĐiểm then chốt: “máy khác” rung khác thường vì server gán cohort khác (bật/tắt trait + đổi số), không vì code Android chọn nhánh theo model máy.
Đồ thị sóng (số dump)
Trục X = ms. Cao = biên độ 0–255 (dumpsys ≈ /255). Khối xám = nghỉ (amp 0).
Cùng sóng A — nhưng L6 chặn
EliminationVibrationTier — one-shot
ShakeNativeByChangSkin → pulses lặp
Hai máy dump — khác gì?
OnePlus 9R (Android 14) và Samsung A05s. So đúng tầng.
Giống nhau (app gửi)
- Cùng method
vibrateRepeat26 - Cùng timing/amp từ props trait
- Cùng 6 lớp cổng logic
- Không có bảng “nếu Samsung thì sóng X”
Khác nhau (không phải nhánh app)
- Cohort server có thể khác → bật/tắt trait khác
- Motor + scale OS (MEDIA) → feel dumpsys khác dù cùng strength
hasAmplitudeControl()→ một số path phụ flatten amp- API <26 (không có trong 2 máy dump) → path chính im
Hiểu nhanh: nhìn sóng A/B/C/D = khác kịch bản. Nhìn 2 máy cùng cohort = cùng sóng số; khác cảm giác tay = OS/motor. Nhìn 2 máy khác cohort = có thể im vs rung vì server, không vì model.
Config đang chạy (máy dump)
| Feature | Props | Hệ quả |
|---|---|---|
ButtonClickAddShakeid 331816003 |
shakeTimes [0,10,10,30,5,15]shakeStrength [0,230,0,255,0,255]boardOpShake false |
Nút = sóng A Place = im |
isOpenVibrateid 167900002 |
defaultStatus 1, firing 1 |
L3 mặc định cho phép rung (user vẫn tắt được) |
| Elimination / ChangSkin | — không có trên cohort sau refresh | Clear / all-clear im trên máy này |
Server có config: A/B features[] trong jsb.sqlite. Schema ~221 tên / 76 bundle; máy chỉ nhận ít biến thể theo phân khúc. 10× clear data trên cohort này vẫn 2 feature trên.
SDK cắt gì (không phải “máy A vs B”)
| SDK | Path nút/place | Ý nghĩa |
|---|---|---|
| < 26 | vibrateRepeat26 return | Im hoàn toàn trên đường chính |
| ≥ 26 | createWaveform(timings, amp, -1) | Cùng số JS gửi |
| ≥ 29 / 31 | sub-game / RN / Frequency | Không đổi nút/place lobby |