Made By BangMade By Bang
iOS + AndroidFlutterDartMobileiOSAndroid

HOLDLINE — Một cú chạm. Giữ vững thần kinh.

Game reflex-puzzle one-tap về cảm giác biết khi nào không nên chạm — mỗi cú TICK đổi switch và đốt năng lượng.

HOLDLINE — Một cú chạm. Giữ vững thần kinh.

Thách thức

Thị trường mobile đầy game one-tap — Flappy Bird dạy người chơi tap nhanh, Helix Jump cho endless không có nhịp, Wordle có daily nhưng chỉ chữ. Cả ba đều thiếu một khoảng trống: một game nơi sự kiềm chế là kỹ năng.

HOLDLINE đẩy hướng đó. Hạt giấy tự chạy. Người chơi chỉ có một cú chạm để đổi hướng switch tiếp theo. Tap sai = chết. Tap thừa = hết tick energy = chết. Phần lớn switch trên đường đi không cần đổi — và đó chính là phần khó nhất: dám không tap.

Hướng tiếp cận

Ba nguyên tắc dẫn dắt thiết kế:

  • Restraint as skill. Game không hỏi bạn tap nhanh thế nào. Game hỏi bạn có dám không tap.
  • World breathes with you. Camera đứng yên. Thế giới giấy phản ứng theo hành động: gập, duỗi, chuyển palette khi streak đạt threshold.
  • One effect = one emotion. Mỗi hiệu ứng phải gắn với một cảm xúc rõ ràng. Không nói được nó tạo cảm xúc gì → cắt.

Chuẩn thẩm mỹ: Mini Metro × ELOH — line geometry mảnh kể chuyện trên nền watercolor wash giấy ngà.

Cách chơi

  1. Hạt giấy tự chạy theo path trên board 7×7.
  2. Tap màn hình bất kỳ đâu để TICK — đổi switch tiếp theo.
  3. Mỗi TICK tốn 1 tick energy. Tới Goal: cộng điểm + tick energy + stage++.
  4. Game over khi hạt đâm tường, kẹt, hoặc hết tick energy.
  5. Chết xong → Death Replay tua lại 3 giây cuối cho bạn thấy chính xác cú tap nào đã giết run.

Trải nghiệm chính

Endless Survival

Stage càng cao, map càng phức tạp. Auto-save run đang chơi — đóng app giữa chừng, mở lại vẫn còn nguyên vị trí hạt. Best score giữ qua mọi phiên.

Daily Seed

Mỗi ngày một map duy nhất, sinh từ hash(UTC_YYYY-MM-DD) — toàn cầu cùng một thử thách. 5 modifier xoay tua thứ Hai–thứ Sáu (Tight Energy, Mirror Switch, Phantom Goal, Tempo Lock, Decoy Density). Score Card cuối run chia sẻ dạng emoji-grid kiểu Wordle.

Tempo Shift

Khi streak đạt threshold, world "thở nhanh hơn": BPM hạt + audio + palette dịch sang phase mới. Andante (80 BPM) → Allegro (110) → Vivace (140) → Offbeat. Telegraph 2 giây bắt buộc — không bao giờ trigger khi hạt trong vùng nguy hiểm.

Paper Fold

Khoảnh khắc near-miss signature. Khi TICK cứu kịp một va chạm, vùng tam giác 3×3 quanh hạt gập 18° rồi duỗi ra trong 280ms. Camera đứng yên, giấy phản ứng. Đây là lúc người chơi cảm được rằng thế giới đang sống cùng họ.

Death Replay

Mỗi run kết thúc đều quay lại 3 giây cuối, frame chậm, highlight đúng cú tap thừa hoặc switch lỡ. Mục tiêu: retry rate > 50% — vì người chơi hiểu họ sai chỗ nào.

7 Palette Family

Paper Dawn (mặc định) → Paper Noon, Dusk, Midnight, Storm, Rain, Bloom. Mỗi palette đổi hue toàn world nhưng giữ nguyên 5 vai trò màu (BG, switch line, hạt, goal, accent near-miss). Đẹp, không phá readability.

Thiết kế tôn trọng người chơi

Không cần đăng ký. Không quảng cáo cưỡng bức. IAP duy nhất là "No Forced Ads" — mua một lần, bỏ quảng cáo vĩnh viễn. Chơi offline 100%, không cần internet.

So sánh

Tiêu chíHOLDLINEFlappy BirdHelix JumpWordle
One-tapKhông (hold)Không (text)
Restraint as skillKhông (tap fast)KhôngMột phần
Daily Seed toàn cầuKhôngKhông
Death ReplayKhôngKhôngn/a
Offline 100%Không
Share emoji-gridKhôngKhông
Không pay-to-winKhông (lives)

Kỹ thuật nổi bật

  • Flutter vanillaCustomPainter + Ticker + Listener. Không Flame, không shader, không 3D.
  • Pure deterministic step()step(GameState, Input, dt) → GameState thuần Dart, không Flutter import. Cùng codepath cho engine + solver.
  • PRNG mulberry32 — immutable state, fixed test vectors. Daily Seed cùng map across thiết bị.
  • 60fps trên Redmi Note 11/12 — dual-listener pattern: GameLoop extends ChangeNotifier cho board paint, ValueNotifier<GameState> cho top-bar.
  • Active Run Resume — autosave mỗi 10 giây + tại stage transition. Đóng app giữa run, mở lại Continue/New Run.
  • Bundle nhỏ — asset critical < 500 KB, install size < 25 MB, App Bundle < 18 MB.
  • Daily Seed shareRepaintBoundarytoImageshare_plus. Không cần backend.
smartphone

Tải ứng dụng

Trải nghiệm native.

qr_code_2Quét để tải
Hoặc xem trên trình duyệt

Chi tiết dự án

Vai tròSolo Developer
Năm2026