# 엔클로즈.호스(enclose.horse)

> Clean Markdown view of GeekNews topic #25621. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=25621](https://news.hada.io/topic?id=25621)
- GeekNews Markdown: [https://news.hada.io/topic/25621.md](https://news.hada.io/topic/25621.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-01-07T09:40:37+09:00
- Updated: 2026-01-07T09:40:37+09:00
- Original source: [enclose.horse](https://enclose.horse/)
- Points: 1
- Comments: 1

## Topic Body

- **제한된 벽 수로 말을 가두는 퍼즐 게임**으로, 최대한 넓은 울타리를 만드는 것이 목표  
- 플레이어는 **잔디 타일을 클릭해 벽을 설치**하며, 말은 대각선이나 물 위로 이동할 수 없음  
- **체리(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)** 등 일부 유머러스한 요소 포함

## Comments



### Comment 48781

- Author: neo
- Created: 2026-01-07T09:40:37+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46509211) 
- 정말 **재미있는 게임**이었음. 개발자가 데이터를 잘 수집하고 있다면, 난이도 순으로 100단계를 묶어서 Steam에 출시해도 좋을 것 같음.  
  다만 문이 위로 떠오르는 애니메이션은 2D 시각 논리를 깨뜨려서 혼란스러움.  
  앞으로 새로운 **게임 메커닉**이 추가되길 기대함. 예를 들어  
  - **먹이**: 말이 매 턴마다 먹이를 향해 이동함. 건초더미나 설탕덩어리를 유인물로 두면 좋을 듯함  
  - **목표 지점**: 말을 울타리로 유도해 특정 칸에 들어가게 하는 퍼즐  
  - **홍수**: 물이 가장자리에서부터 차오르며, 말을 가두는 동시에 물을 막아야 함
  - 누군가는 이런 데이터 수집이 불편하다고 했음. 세상에는 **감시 없이 순수하게 즐길 수 있는 게임**도 필요하다고 생각함
  - 이 게임에는 턴 기반 **미니게임**의 가능성이 있음. 말이 탈출구를 향해 이동할 때 벽을 배치해 경로를 바꾸게 하고, 제한된 벽으로 최대한 많은 칸을 이동시키는 방식이 흥미로움
  - 문이 위로 움직이는 연출이 전체 미학과 어울리지 않는다는 의견에 공감함. 그래도 훌륭한 게임임
  - 나는 이 애니메이션을 **탑다운 RPG 시점**처럼 해석했음. 시각적으로 혼란스럽진 않았지만, 모바일에서는 잘못된 칸을 터치하기 쉬워 불편했음
  - 단순한 게임일수록 좋다고 생각함. 프로그래밍을 할 줄 안다면 주말 몇 번 투자해서 직접 만들어보는 것도 좋은 **학습 프로젝트**가 될 것 같음

- 8일차 퍼즐의 **최적 해법**을 손으로 찾아봤는데 꽤 재미있었음.  
  최소 해에서 시작해 단계별로 확장하며, 벽을 재배치할 때마다 유효한 해를 유지하는 방식으로 접근했음.  
  결국 15분 만에 최적 점수를 찾았음
  - 이 접근이 **TDD(테스트 주도 개발)** 의 사고방식과 비슷하다는 의견이 있었음
  - 나도 같은 알고리즘을 썼음. 탑다운 방식은 잘 안 됐지만 정말 재밌었음

- 체리를 배터리로 바꾸고 게임 이름을 **Correct Horse Battery Stable**로 하면 재밌을 것 같음  
  - 혹은 체리를 페이스트리나 PBJ 간식으로 바꿔서 *Collect Horse Buttery Stable*로 해도 귀여움  
  - 벽 대신 **스테이플러(staples)** 를 쓰는 아이디어도 나왔음  
  - 체리를 설탕 조각으로 바꾸고 *My Lovely Horse*로 부르면 좋겠다는 의견도 있었음  
  - 이 농담은 [xkcd 936](https://xkcd.com/936/)을 참고한 것임

- 게임이 아주 좋았음. 다만 “Show optimal”을 누르면 내 해와 비교할 수 없어서 아쉬웠음.  
  벽이 한 칸 반을 차지해 혼란스럽고, **공룡 울타리 같은 디자인**이라 말 울타리로 바꾸면 좋겠음
  - “Show optimal”을 **토글 버튼**으로 만들어 내 해와 번갈아 볼 수 있게 하면 좋겠음. 모바일에서는 벽이 겹쳐 터치가 어렵다는 점도 공감함  
  - 빠르게 전환할 수 있는 버튼이 필요함. 나는 과거 날짜 메뉴를 통해 내 해로 돌아가는 방법을 찾았음  
  - 말이 클릭 시 **악마신** 이야기를 하는 걸 보면, 뭔가 더 있을지도 모르겠음

- 점수 초기값을 N/A 대신 **N/EIGH**로 하면 말 테마에 어울릴 것 같음  
  - 예전에 본 **말 의회(neigh)** 만화가 떠오름  
  - 이런 생각을 떠올린 창의력에 감탄함

- 직접 **솔루션 파인더**를 만들어봤음  
  1. 그리드 스크린샷을 찍고  
  2. [enclosure-horse-solution.onrender.com](https://enclosure-horse-solution.onrender.com/)에 업로드  
  3. 벽 개수를 확인 후 Solve 클릭  
  무료 버전이라 가끔 크래시가 나지만 캐시를 추가했음.  
  [GitHub 저장소](https://github.com/langarus/enclosure.horse-solution)에서 로컬로 실행 가능함
  - 레벨 에디터에서 커스텀 맵을 만들고 **최적 해**를 볼 수 있음. 공식 맵을 재현하면 개발자의 의도도 확인 가능함  
  - 캐싱을 메모리나 디스크 중 어디에 하는지 묻는 사람도 있었음. Redis 같은 걸 쓰면 안정적일 듯함  
  - 서버가 자주 다운돼서, 결과가 안 나오면 로컬 실행을 권장함

- 내 해와 **최적 해**를 한 번에 비교할 수 있는 기능이 있었으면 좋겠음  
  - 나도 스크린샷 두 장을 찍어 비교했음  
  - **사이드바이사이드(diff)** 보기 기능이 있으면 완벽할 듯함

- 이 문제의 **최적 해를 알고리즘으로 찾는 방법**이 궁금함. Factorio에서도 비슷한 문제를 풀려 했지만 빠른 해법을 못 찾았음  
  - 사이트에서는 **Answer Set Programming(ASP)** 과 Clingo 엔진을 사용한다고 함. 이런 격자 최대화 문제는 NP-hard일 가능성이 높음. SAT/SMT 솔버는 flood-fill 계산에 비효율적임  
  - **제약 프로그래밍** 접근이 적합하다는 의견도 있었음. 벽 위치를 변수로 두고, 말이 닿을 수 있는 칸을 제약 조건으로 설정하면 됨  
  - 어떤 사람은 이 문제를 보고 **그래프 컷, SAT/SMT, ACSP** 등 다양한 최적화 접근을 떠올렸다고 함  
  - 관련 논의가 [CS StackExchange](https://cs.stackexchange.com/questions/176005/how-to-remove-vertices-from-a-graph-to-leave-behind-the-largest-connected-compon)에도 있음  
  - NP-hard 문제로 보고, **Sparsest Cut**에서 유도할 수 있다는 의견도 있었음. 최소 컷을 찾고 용량을 조정하며 반복 탐색하는 방식 제안

- `horse` 도메인을 볼 때마다 `traceroute bad.horse`를 실행해보며 미소 짓게 됨  
  - 이 농담이 정말 **아름답다**는 반응이 있었음

- 매일의 챌린지가 **시간대별로 다르게 공개**되는 것 같음. 친구는 9일차를 보는데 나는 8일차만 보임.  
  전 세계적으로 **동일한 공개 시점**을 맞춰주면 친구들과 경쟁하기 좋을 것 같음
