파보섭 AI 작업실YouTube ↗

제작기 · 짐칸 챌린지

짐칸 챌린지 제작기: 정답이 반드시 있는 퍼즐을 자동으로 만드는 법

퍼즐 게임을 만들 때 가장 무서운 버그는 풀 수 없는 문제가 나오는 것입니다. 짐칸 챌린지는 이 문제를 “상자를 만들고 짐칸에 넣는” 대신 “짐칸을 먼저 자르고 조각을 상자로 내주는” 방식으로 피했습니다.

거꾸로 만드는 퍼즐

상자 모양을 먼저 정하고 짐칸에 맞춰 보는 방식은 답이 있는지 확인하려면 모든 배치를 다 시도해야 합니다. 상자가 10개만 돼도 경우의 수가 폭발합니다.

반대로 꽉 찬 짐칸을 조각조각 자르면, 그 조각들은 원래 자리로 돌아가면 되므로 정답이 최소 하나는 보장됩니다. 짐칸 챌린지의 퍼즐 생성기는 이 생각 하나로 만들어졌습니다.

생성 과정 4단계

  1. 짐칸 크기 정하기. 1~3단계는 4×4, 4~5단계는 5×4, 6~8단계는 5×5, 9~12단계와 오늘의 짐칸은 6×5입니다.
  2. 왼쪽 위부터 조각 키우기. 아직 쓰지 않은 칸을 만나면 거기서 새 조각을 시작합니다. 목표 크기를 2~5칸 중에서 무작위로 정하고, 상하좌우로 붙은 빈칸을 하나씩 무작위로 붙여 나갑니다. 더 붙일 칸이 없으면 목표보다 작아도 멈춥니다.
  3. 1칸 조각 없애기. 구석에서 1칸짜리 조각이 남으면 옆에 붙은 조각(6칸 미만)에 합칩니다. 그래서 게임에는 1칸 상자가 없고, 가끔 6칸 상자가 생깁니다.
  4. 모양 섞기. 각 조각을 0~3번 무작위로 90도 회전시켜 보관함에 내놓습니다. 정답 위치와 방향은 따로 저장해 두고 힌트에 씁니다.

결과적으로 상자 칸 수의 합은 언제나 짐칸 칸 수와 같습니다. 남는 상자도 빈칸도 없는, 딱 맞는 퍼즐만 나옵니다.

같은 날엔 같은 퍼즐: 씨앗값

무작위라고 해도 컴퓨터는 씨앗값이 같으면 같은 순서의 난수를 냅니다. 12단계는 단계마다 고정된 씨앗값을 써서, 누가 몇 번을 열어도 같은 퍼즐이 나옵니다.

오늘의 짐칸은 날짜(예: 20261028)를 씨앗값으로 씁니다. 서버도 계정도 없이 모든 사람이 같은 날 같은 문제를 받는 이유입니다. 그래서 친구에게 링크를 보내 같은 문제로 겨룰 수 있습니다.

이 방식의 한계

이 게임은 AI 코딩 도구와 함께 만들었습니다. 생성 규칙을 말로 설명해 코드를 받고, 직접 플레이하며 확인하는 방식으로 다듬었습니다.