1P by GN⁺ 3일전 | ★ favorite | 댓글 1개
  • 제한된 벽 수로 말을 가두는 퍼즐 게임으로, 최대한 넓은 울타리를 만드는 것이 목표
  • 플레이어는 잔디 타일을 클릭해 벽을 설치하며, 말은 대각선이나 물 위로 이동할 수 없음
  • 체리(Cherries) 를 울타리 안에 포함하면 추가 점수를 얻을 수 있고, 더 큰 울타리일수록 점수가 높아짐
  • 레벨 편집기, 리더보드, 일일 퍼즐, 사용자 제작 레벨 탐색 기능을 지원
  • 단순한 아이디어에서 출발했지만, Leetcode/Advent of Code 스타일의 최적화 문제로 발전한 게임

게임 개요

  • enclose.horse는 제한된 수의 벽을 사용해 말을 가두는 퍼즐 게임
    • 목표는 가능한 한 넓은 영역을 울타리로 둘러싸는 것
    • 점수는 울타리 크기와 포함된 체리 수에 따라 결정
  • 조작 방식은 잔디 타일을 클릭해 벽을 세우는 형태
    • 말은 대각선 이동이나 물 위 이동이 불가능
    • 체리를 울타리 안에 포함하면 +3점을 획득
    • 제출은 한 번만 가능

게임 인터페이스 및 기능

  • 레벨 정보에는 크기(12x14), 벽 예산(12), 플레이 횟수(4455회), 레벨 ID(ZtiI9g) 등이 표시
  • 설정 메뉴에서 이름, 그리드 라인, 테마, 고급 설정 등을 조정 가능
  • 리더보드에 이름이 저장되며, 다른 플레이어의 점수와 비교 가능
  • 레벨 편집기를 통해 직접 퍼즐을 만들고 공유 가능
  • “Browse” 페이지에서 다른 사용자가 만든 레벨을 탐색하고, 플레이 후 투표 가능

업데이트 내역

  • 2025년 12월 29일: 초기 출시, 레벨 편집기 및 리더보드 추가
  • 12월 30일: 일일 퍼즐(Daily puzzles)과 과거 퍼즐(Past Puzzles) 기능 도입
  • 12월 31일: 업데이트 탭 추가
  • 2026년 1월 1일: 레벨 편집기에 Solver 추가, 사용자 제작 레벨 탐색 및 투표 기능 도입
  • 1월 2일: 플레이 중 최고 면적 추적 기능 추가
  • 1월 3일: 체리 요소 추가
  • 1월 4일: 체리 버그 수정 및 검색 필터 개선

개발 배경

  • 개발자는 이 게임을 Leetcode나 Advent of Code의 최적화 문제로 구상한 것이 출발점
  • 이후 직접 플레이해 본 결과, 완성도 높은 퍼즐 게임으로 발전시킬 가치가 있다고 판단
  • 게임은 Shivers가 제작했으며, 공식 사이트와 X(트위터) 계정을 통해 공개됨

기타 요소

  • “Horse Tip” 기능은 남은 벽이 있을 때 제출을 경고
    • “다시 보지 않기” 옵션 제공
  • 버그 리포트 기능을 통해 부적절하거나 불가능한 레벨을 신고 가능
  • 체리 이름 지정(Name Five of Cherries) 등 일부 유머러스한 요소 포함
Hacker News 의견들
  • 정말 재미있는 게임이었음. 개발자가 데이터를 잘 수집하고 있다면, 난이도 순으로 100단계를 묶어서 Steam에 출시해도 좋을 것 같음.
    다만 문이 위로 떠오르는 애니메이션은 2D 시각 논리를 깨뜨려서 혼란스러움.
    앞으로 새로운 게임 메커닉이 추가되길 기대함. 예를 들어

    • 먹이: 말이 매 턴마다 먹이를 향해 이동함. 건초더미나 설탕덩어리를 유인물로 두면 좋을 듯함
    • 목표 지점: 말을 울타리로 유도해 특정 칸에 들어가게 하는 퍼즐
    • 홍수: 물이 가장자리에서부터 차오르며, 말을 가두는 동시에 물을 막아야 함
    • 누군가는 이런 데이터 수집이 불편하다고 했음. 세상에는 감시 없이 순수하게 즐길 수 있는 게임도 필요하다고 생각함
    • 이 게임에는 턴 기반 미니게임의 가능성이 있음. 말이 탈출구를 향해 이동할 때 벽을 배치해 경로를 바꾸게 하고, 제한된 벽으로 최대한 많은 칸을 이동시키는 방식이 흥미로움
    • 문이 위로 움직이는 연출이 전체 미학과 어울리지 않는다는 의견에 공감함. 그래도 훌륭한 게임임
    • 나는 이 애니메이션을 탑다운 RPG 시점처럼 해석했음. 시각적으로 혼란스럽진 않았지만, 모바일에서는 잘못된 칸을 터치하기 쉬워 불편했음
    • 단순한 게임일수록 좋다고 생각함. 프로그래밍을 할 줄 안다면 주말 몇 번 투자해서 직접 만들어보는 것도 좋은 학습 프로젝트가 될 것 같음
  • 8일차 퍼즐의 최적 해법을 손으로 찾아봤는데 꽤 재미있었음.
    최소 해에서 시작해 단계별로 확장하며, 벽을 재배치할 때마다 유효한 해를 유지하는 방식으로 접근했음.
    결국 15분 만에 최적 점수를 찾았음

    • 이 접근이 TDD(테스트 주도 개발) 의 사고방식과 비슷하다는 의견이 있었음
    • 나도 같은 알고리즘을 썼음. 탑다운 방식은 잘 안 됐지만 정말 재밌었음
  • 체리를 배터리로 바꾸고 게임 이름을 Correct Horse Battery Stable로 하면 재밌을 것 같음

    • 혹은 체리를 페이스트리나 PBJ 간식으로 바꿔서 Collect Horse Buttery Stable로 해도 귀여움
    • 벽 대신 스테이플러(staples) 를 쓰는 아이디어도 나왔음
    • 체리를 설탕 조각으로 바꾸고 My Lovely Horse로 부르면 좋겠다는 의견도 있었음
    • 이 농담은 xkcd 936을 참고한 것임
  • 게임이 아주 좋았음. 다만 “Show optimal”을 누르면 내 해와 비교할 수 없어서 아쉬웠음.
    벽이 한 칸 반을 차지해 혼란스럽고, 공룡 울타리 같은 디자인이라 말 울타리로 바꾸면 좋겠음

    • “Show optimal”을 토글 버튼으로 만들어 내 해와 번갈아 볼 수 있게 하면 좋겠음. 모바일에서는 벽이 겹쳐 터치가 어렵다는 점도 공감함
    • 빠르게 전환할 수 있는 버튼이 필요함. 나는 과거 날짜 메뉴를 통해 내 해로 돌아가는 방법을 찾았음
    • 말이 클릭 시 악마신 이야기를 하는 걸 보면, 뭔가 더 있을지도 모르겠음
  • 점수 초기값을 N/A 대신 N/EIGH로 하면 말 테마에 어울릴 것 같음

    • 예전에 본 말 의회(neigh) 만화가 떠오름
    • 이런 생각을 떠올린 창의력에 감탄함
  • 직접 솔루션 파인더를 만들어봤음

    1. 그리드 스크린샷을 찍고
    2. enclosure-horse-solution.onrender.com에 업로드
    3. 벽 개수를 확인 후 Solve 클릭
      무료 버전이라 가끔 크래시가 나지만 캐시를 추가했음.
      GitHub 저장소에서 로컬로 실행 가능함
    • 레벨 에디터에서 커스텀 맵을 만들고 최적 해를 볼 수 있음. 공식 맵을 재현하면 개발자의 의도도 확인 가능함
    • 캐싱을 메모리나 디스크 중 어디에 하는지 묻는 사람도 있었음. Redis 같은 걸 쓰면 안정적일 듯함
    • 서버가 자주 다운돼서, 결과가 안 나오면 로컬 실행을 권장함
  • 내 해와 최적 해를 한 번에 비교할 수 있는 기능이 있었으면 좋겠음

    • 나도 스크린샷 두 장을 찍어 비교했음
    • 사이드바이사이드(diff) 보기 기능이 있으면 완벽할 듯함
  • 이 문제의 최적 해를 알고리즘으로 찾는 방법이 궁금함. Factorio에서도 비슷한 문제를 풀려 했지만 빠른 해법을 못 찾았음

    • 사이트에서는 Answer Set Programming(ASP) 과 Clingo 엔진을 사용한다고 함. 이런 격자 최대화 문제는 NP-hard일 가능성이 높음. SAT/SMT 솔버는 flood-fill 계산에 비효율적임
    • 제약 프로그래밍 접근이 적합하다는 의견도 있었음. 벽 위치를 변수로 두고, 말이 닿을 수 있는 칸을 제약 조건으로 설정하면 됨
    • 어떤 사람은 이 문제를 보고 그래프 컷, SAT/SMT, ACSP 등 다양한 최적화 접근을 떠올렸다고 함
    • 관련 논의가 CS StackExchange에도 있음
    • NP-hard 문제로 보고, Sparsest Cut에서 유도할 수 있다는 의견도 있었음. 최소 컷을 찾고 용량을 조정하며 반복 탐색하는 방식 제안
  • horse 도메인을 볼 때마다 traceroute bad.horse를 실행해보며 미소 짓게 됨

    • 이 농담이 정말 아름답다는 반응이 있었음
  • 매일의 챌린지가 시간대별로 다르게 공개되는 것 같음. 친구는 9일차를 보는데 나는 8일차만 보임.
    전 세계적으로 동일한 공개 시점을 맞춰주면 친구들과 경쟁하기 좋을 것 같음