1 điểm bởi GN⁺ 2026-01-07 | 1 bình luận | Chia sẻ qua WhatsApp
  • Trò chơi giải đố nhốt ngựa với số lượng tường giới hạn, mục tiêu là tạo hàng rào rộng nhất có thể
  • Người chơi nhấp vào các ô cỏ để dựng tường, và con ngựa không thể di chuyển theo đường chéo hoặc đi qua mặt nước
  • Nếu đưa cherry (Cherries) vào trong hàng rào, bạn có thể nhận thêm điểm, và hàng rào càng lớn thì điểm càng cao
  • Hỗ trợ trình chỉnh sửa màn chơi, bảng xếp hạng, câu đố hằng ngày, và tính năng khám phá màn chơi do người dùng tạo
  • Bắt đầu từ một ý tưởng đơn giản, nhưng đã phát triển thành một trò chơi mang tính bài toán tối ưu kiểu Leetcode/Advent of Code

Tổng quan trò chơi

  • enclose.horse là một trò chơi giải đố dùng số lượng tường giới hạn để nhốt ngựa
    • Mục tiêu là bao quanh một khu vực rộng nhất có thể bằng hàng rào
    • Điểm số được quyết định dựa trên kích thước hàng rào và số cherry được bao gồm bên trong
  • Cách điều khiển là nhấp vào các ô cỏ để dựng tường
    • Con ngựa không thể di chuyển chéo hoặc đi trên mặt nước
    • Nếu đưa cherry vào trong hàng rào, sẽ nhận +3 điểm
    • Chỉ có thể gửi bài một lần

Giao diện và tính năng của trò chơi

  • Thông tin màn chơi hiển thị kích thước (12x14), ngân sách tường (12), số lượt chơi (4455 lần), mã màn chơi (ZtiI9g), v.v.
  • Có thể điều chỉnh tên, đường lưới, giao diện chủ đề và cài đặt nâng cao trong menu cài đặt
  • Tên sẽ được lưu trên bảng xếp hạng, và có thể so sánh điểm với những người chơi khác
  • Có thể tự tạo và chia sẻ câu đố thông qua trình chỉnh sửa màn chơi
  • Trên trang “Browse”, có thể khám phá các màn chơi do người dùng khác tạo, rồi bình chọn sau khi chơi

Lịch sử cập nhật

  • 29 tháng 12, 2025: phát hành ban đầu, thêm trình chỉnh sửa màn chơi và bảng xếp hạng
  • 30 tháng 12: giới thiệu tính năng câu đố hằng ngày (Daily puzzles) và câu đố cũ (Past Puzzles)
  • 31 tháng 12: thêm tab cập nhật
  • 1 tháng 1, 2026: thêm Solver vào trình chỉnh sửa màn chơi, đồng thời đưa vào tính năng duyệt và bình chọn màn chơi do người dùng tạo
  • 2 tháng 1: thêm tính năng theo dõi diện tích lớn nhất trong lúc chơi
  • 3 tháng 1: thêm yếu tố cherry
  • 4 tháng 1: sửa lỗi liên quan đến cherry và cải thiện bộ lọc tìm kiếm

Bối cảnh phát triển

  • Nhà phát triển ban đầu hình dung trò chơi này như một bài toán tối ưu kiểu Leetcode hoặc Advent of Code
  • Sau đó, khi trực tiếp chơi thử, họ đánh giá rằng nó có giá trị để phát triển thành một trò chơi giải đố hoàn thiện hơn
  • Trò chơi do Shivers tạo ra và được công bố qua trang web chính thức cùng tài khoản X (Twitter)

Các yếu tố khác

  • Tính năng “Horse Tip” sẽ cảnh báo khi vẫn còn tường chưa dùng mà người chơi định gửi bài
    • Có cung cấp tùy chọn “không hiển thị lại”
  • Có thể báo cáo các màn chơi không phù hợp hoặc không thể hoàn thành thông qua tính năng báo lỗi
  • Bao gồm một số yếu tố hài hước như đặt tên cho cherry (Name Five of Cherries)

1 bình luận

 
GN⁺ 2026-01-07
Ý kiến trên Hacker News
  • Đây thực sự là một trò chơi thú vị. Nếu nhà phát triển đang thu thập dữ liệu tốt, mình nghĩ có thể gom 100 màn theo độ khó và phát hành trên Steam cũng được.
    Tuy nhiên, hoạt ảnh cánh cửa bay lên phía trên làm phá vỡ logic thị giác 2D nên khá gây rối.
    Mình mong sau này sẽ có thêm cơ chế gameplay mới. Ví dụ như

    • Mồi: con ngựa sẽ di chuyển về phía mồi ở mỗi lượt. Có thể dùng đống cỏ khô hoặc cục đường làm vật dụ
    • Điểm mục tiêu: câu đố dẫn con ngựa vào chuồng để nó bước vào một ô cụ thể
    • Lũ lụt: nước dâng lên từ mép ngoài, nên vừa phải nhốt được ngựa vừa phải chặn nước
    • Có người nói họ không thoải mái với kiểu thu thập dữ liệu này. Mình cũng nghĩ thế giới cần những trò chơi có thể thuần túy tận hưởng mà không bị giám sát
    • Trò này có tiềm năng thành một mini-game theo lượt. Khi con ngựa di chuyển về phía lối thoát, bạn đặt tường để đổi hướng đi của nó, rồi với số tường giới hạn cố gắng khiến nó đi qua được nhiều ô nhất có thể, nghe khá thú vị
    • Mình đồng ý với ý kiến rằng cảnh cánh cửa di chuyển lên trên không hợp với thẩm mỹ tổng thể. Dù vậy đây vẫn là một game rất hay
    • Mình hiểu hoạt ảnh này theo kiểu góc nhìn RPG từ trên xuống. Về mặt hình ảnh thì không quá rối, nhưng trên di động lại khá bất tiện vì dễ chạm nhầm ô
    • Mình nghĩ game càng đơn giản càng tốt. Nếu biết lập trình thì tự làm thử trong vài cuối tuần cũng sẽ là một dự án học tập khá hay
  • Mình đã thử tự tìm lời giải tối ưu cho câu đố ngày 8 bằng tay, và thấy khá vui.
    Mình bắt đầu từ lời giải tối thiểu rồi mở rộng từng bước, luôn giữ cho bài toán vẫn có lời giải hợp lệ mỗi lần sắp xếp lại tường.
    Cuối cùng mình tìm ra điểm tối ưu chỉ trong 15 phút

    • Có ý kiến nói cách tiếp cận này khá giống tư duy của TDD (phát triển hướng kiểm thử)
    • Mình cũng dùng cùng thuật toán đó. Cách từ trên xuống không hiệu quả lắm nhưng thật sự rất vui
  • Nếu đổi cherry thành pin và đặt tên game là Correct Horse Battery Stable thì chắc sẽ khá buồn cười

    • Hoặc đổi cherry thành bánh ngọt hay đồ ăn vặt PBJ để thành Collect Horse Buttery Stable cũng dễ thương
    • Cũng có ý tưởng dùng ghim kẹp (staples) thay cho tường
    • Có người nói đổi cherry thành viên đường rồi gọi là My Lovely Horse cũng hay
    • Trò đùa này tham chiếu đến xkcd 936
  • Game rất hay. Chỉ tiếc là khi bấm “Show optimal” thì không thể so với lời giải của mình.
    Tường chiếm khoảng một ô rưỡi nên gây rối, và vì thiết kế trông giống hàng rào khủng long nên có lẽ nên đổi thành hàng rào cho ngựa thì hơn

    • Sẽ hay hơn nếu “Show optimal” là nút bật/tắt để có thể chuyển qua lại giữa lời giải tối ưu và lời giải của mình. Mình cũng đồng ý là trên di động các bức tường chồng lên nhau khiến việc chạm khá khó
    • Cần một nút để chuyển nhanh. Mình đã tìm ra cách quay lại lời giải của mình qua menu ngày cũ
    • Con ngựa khi bấm vào lại nói về ác ma thần, nên có lẽ còn điều gì đó nữa
  • Giá mà điểm mặc định dùng N/EIGH thay vì N/A thì sẽ hợp chủ đề ngựa hơn

    • Điều đó làm mình nhớ đến một tranh biếm họa về quốc hội ngựa (neigh) mà mình từng xem
    • Thật khâm phục sự sáng tạo đã nghĩ ra được điều này
  • Mình đã tự làm một trình tìm lời giải

    1. Chụp ảnh màn hình lưới
    2. Tải lên enclosure-horse-solution.onrender.com
    3. Kiểm tra số lượng tường rồi bấm Solve
      Bản miễn phí nên đôi khi bị crash, nhưng mình đã thêm cache.
      Có thể chạy cục bộ từ kho GitHub
    • Trong trình chỉnh sửa màn chơi, bạn có thể tạo bản đồ tùy chỉnh và xem lời giải tối ưu. Nếu tái tạo các bản đồ chính thức thì cũng có thể kiểm tra được ý đồ của nhà phát triển
    • Cũng có người hỏi cache đang được lưu trong bộ nhớ hay trên đĩa. Có vẻ dùng Redis sẽ ổn định hơn
    • Server hay bị sập, nên nếu không ra kết quả thì nên chạy cục bộ
  • Giá mà có chức năng so sánh lời giải của mình với lời giải tối ưu cùng lúc

    • Mình cũng đã chụp hai ảnh màn hình để so sánh
    • Nếu có chế độ xem cạnh nhau (diff) thì sẽ hoàn hảo
  • Mình tò mò không biết cách tìm lời giải tối ưu bằng thuật toán cho bài này là gì. Trong Factorio mình cũng từng muốn giải một bài toán tương tự nhưng không tìm ra cách nhanh.

    • Theo trang web, họ dùng Answer Set Programming (ASP) và engine Clingo. Kiểu bài toán tối đa hóa trên lưới thế này có lẽ là NP-hard. SAT/SMT solver không hiệu quả lắm với tính toán flood-fill
    • Cũng có ý kiến cho rằng cách tiếp cận bằng lập trình ràng buộc là phù hợp. Đặt vị trí tường làm biến và đặt các ô ngựa có thể chạm tới làm điều kiện ràng buộc là được
    • Có người nói nhìn bài toán này là nghĩ ngay đến nhiều hướng tối ưu hóa như graph cut, SAT/SMT, ACSP
    • Thảo luận liên quan cũng có trên CS StackExchange
    • Có ý kiến xem đây là bài toán NP-hard và có thể suy ra từ Sparsest Cut. Đề xuất là tìm min-cut rồi điều chỉnh capacity và lặp lại tìm kiếm
  • Cứ mỗi lần thấy domain horse là mình lại mỉm cười và chạy thử traceroute bad.horse

    • Có phản hồi rằng trò đùa này thật sự rất đẹp
  • Có vẻ thử thách hằng ngày được mở theo múi giờ khác nhau. Bạn mình đã thấy ngày 9 còn mình thì vẫn chỉ có ngày 8.
    Nếu có thể thống nhất một thời điểm mở khóa chung trên toàn cầu thì sẽ dễ thi đua với bạn bè hơn