엔클로즈.호스(enclose.horse)
(enclose.horse)- 제한된 벽 수로 말을 가두는 퍼즐 게임으로, 최대한 넓은 울타리를 만드는 것이 목표
- 플레이어는 잔디 타일을 클릭해 벽을 설치하며, 말은 대각선이나 물 위로 이동할 수 없음
- 체리(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) 만화가 떠오름
- 이런 생각을 떠올린 창의력에 감탄함
-
직접 솔루션 파인더를 만들어봤음
- 그리드 스크린샷을 찍고
- enclosure-horse-solution.onrender.com에 업로드
- 벽 개수를 확인 후 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일차만 보임.
전 세계적으로 동일한 공개 시점을 맞춰주면 친구들과 경쟁하기 좋을 것 같음