Lumo — Một câu đố nhẹ nhàng mỗi ngày
Numberlink puzzle daily — nối các cặp chấm cùng màu, lấp đầy ô lưới, giữ chuỗi. Offline, không account, không pressure.
Thách thức
Thị trường puzzle mobile bị chia làm hai cực.
Một bên là Flow Free, Numberlink — hàng nghìn level, chơi hoài không hết, nhưng dễ rơi vào "grind" và mất thói quen quay lại. Một bên là Wordle, NYT Connections — một câu đố mỗi ngày, ritual rõ ràng, share dễ — nhưng đa phần là từ ngữ, không có gameplay logic spatial.
Lumo lấp khoảng giữa: một numberlink puzzle mỗi ngày, không từ ngữ, không cần network, không account, không pressure.
Hướng tiếp cận
Ba nguyên tắc design lock từ ngày đầu:
- Whisper, not scream. Không screen shake, không white flash, không chromatic aberration. Animation tối đa 400ms cho mọi feedback (trừ board clear: 800–1200ms). Haptic chỉ khi đúng — sai chỉ là một sắc đỏ nhẹ.
- Offline-first, không account. Không backend. Không Firebase. Không analytics SDK. Toàn bộ tiến trình, streak, lịch sử run nằm trên thiết bị qua Hive. Mất điện vẫn chơi được.
- Daily seed cross-platform. Daily puzzle cùng một seed cho mọi player toàn cầu mỗi ngày. Dùng xorshift32 + FNV-1a tự viết (không
dart:math.Random) để đảm bảo deterministic giữa các phiên bản Dart.
Cách chơi
- Vẽ đường — chạm và kéo từ chấm này tới chấm cùng màu, qua các ô trống.
- Lấp đầy lưới — mọi ô phải được phủ.
- Không giao đường — hai đường khác màu không được cắt nhau.
- Hoàn thành bảng — khi tất cả cặp được nối và lưới đầy, bạn thắng.
- Giữ chuỗi — giải Daily Seed trước nửa đêm (giờ địa phương) để giữ streak.
Hai chế độ chơi
Daily Seed Challenge
Một câu đố mỗi ngày. Cùng seed cho tất cả người chơi. Hoàn thành trước nửa đêm theo giờ máy bạn để giữ streak. Share kết quả dưới dạng ảnh qua share sheet — không leaderboard, không pressure.
Endless Run
Sau mỗi bảng giải xong, bảng mới xuất hiện ngay. Combo multiplier (×1 → ×8) thưởng cho việc giải tập trung, không lỗi. Run summary sau mỗi run hiển thị combo cao nhất + tổng số board.
So sánh
| Tiêu chí | Lumo | Flow Free | Wordle | NYT Connections |
|---|---|---|---|---|
| Cơ chế | Numberlink | Numberlink | Word guess | Word grouping |
| Daily ritual | Có | Không | Có | Có |
| Chế độ vô tận | Có | Có | Không | Không |
| Offline-first | Có | Một phần | Không | Không |
| Không account | Có | Có | Không | Không |
| Streak | Có | Không | Có | Có |
| Share image | Có | Không | Có | Có |
Kỹ thuật nổi bật
- Engine — Flutter +
CustomPainterthuần (không Flame). - State —
ValueNotifier+setState, không Riverpod / BLoC. - Persistence — Hive, một persistence branch duy nhất.
- Audio —
flutter_soloud(latency thấp, không 80–150ms nhưaudioplayers). - Puzzle pipeline — Python + Z3 solver tự viết, sinh + verify pack offline.
- A11y — Bảng màu Okabe-Ito (color-blind safe) + symbol option, reduced motion, haptic toggle.
Chi tiết dự án
| Hạng mục | Giá trị |
|---|---|
| Vai trò | Solo dev — design, code, audio, content, marketing |
| Timeline | 5–6 tuần full-time tới TestFlight |
| Stack | Flutter, Dart, Python (puzzle gen), Z3 solver |
| Monetization | Free + interstitial/rewarded ads · IAP Remove Ads một lần $3.99 |
| Trạng thái | v1.0.0 — TestFlight 2026-Q2 |
Tải ứng dụng
Trải nghiệm native.
