Files
wordpuzzles/STAGE_RULES.md
2026-09-21 22:34:20 +09:00

8.7 KiB

한글 십자말풀이 스테이지 생성 규칙 및 가이드라인 (Stage Rules & Guidelines)

본 문서는 **한글 십자말풀이 앱(WordPuzzle)**의 스테이지를 지속적으로 확장(50개, 100개 이상)하기 위한 난이도 설계, 그리드 무결성 룰, 단어 배치 가이드라인 및 JSON 데이터 스키마를 정의합니다.


1. 스테이지 단계별 구조 및 난이도 진도 설계 (Difficulty Progression Strategy)

초반 스테이지의 진입 장벽을 낮추고 플레이어가 자연스럽게 어휘력을 확장할 수 있도록 완만한 난이도 상승 곡선(Progressive Difficulty Curve)과 풍성한 단어 밀도를 적용합니다.

스테이지 구간 난이도 (difficulty) 그리드 크기 (gridSize) 배치 단어 수 (clues.size) 주요 단어 구성 및 어휘 특징
01 ~ 10 Level 1 (입문/초보) 6x6 ~ 7x7 6 ~ 8개 100% 기초 일상 어휘 (학교, 과일, 가족, 동물, 수영, 구름 등 초등 기초 어휘만 사용, 공간이 비지 않도록 알차게 배치)
11 ~ 20 Level 1 (초급) 7x7 7 ~ 9개 쉬운 일상 단어 + 실생활 고빈도 최고 쉬운 사자성어 1개 (일석이조, 작심삼일, 남녀노소 등)
21 ~ 40 Level 2 (중급) 7x7 ~ 8x8 8 ~ 10개 일반 어휘 + 한국어 교육용 고빈도 사자성어 (127개 핵심 사자성어) + 글로벌 기업
41 ~ 70 Level 2~3 (상급) 8x8 9 ~ 11개 시사상식, 글로벌 기업 브랜드, 인문학, 고사성어
71 ~ 100+ Level 3 (마스터) 8x8 10 ~ 12개 고난도 고사성어, 문화/역사/과학 종합 어휘 마스터
  • 참고 자료: '한국어 교육용 사자성어 선정 및 사용 양상 분석(진달래, 2020)' 논문의 127개 고빈도 사자성어 목록을 기반으로 사자성어의 난이도를 단계별로 배치했습니다.

2. 십자말풀이 그리드 및 단어 배치 룰 (Grid Layout & Placement Rules)

모든 스테이지의 clues 단어 배치는 다음 수학적/구조적 조건을 반드시 만족해야 합니다.

① 좌표계 및 이동 규칙

  • 좌표 기준: 그리드의 좌측 상단이 (row: 0, col: 0)입니다.
  • 가로 방향 (ACROSS): (startRow, startCol)에서 시작하여 오른쪽으로 length만큼 이동합니다. \text{범위}: \text{startCol} + \text{length} \le \text{gridSize}
  • 세로 방향 (DOWN): (startRow, startCol)에서 시작하여 아래쪽으로 length만큼 이동합니다. \text{범위}: \text{startRow} + \text{length} \le \text{gridSize}

② 단어 및 글자 배치 규칙

  • 최소 단어 길이: 가로나 세로로 나열되는 단어는 최소 2글자 이상이어야 합니다. 1글자짜리 단어는 인정되지 않습니다 (length >= 2).
  • 공통 글자 공유: 가로 단어와 세로 단어가 만나는 교차점의 글자는 두 단어 모두에 완벽하게 일치해야 합니다.
  • 띄어쓰기 생략: 두 단어 이상으로 이루어진 복합어나 구절을 답으로 쓸 때는 띄어쓰기 없이 칸을 이어 붙여서 작성합니다.

③ 교차점 (Intersection) 및 연결성 (Connectivity)

  • 단어 간 교차 필수: 퍼즐 내의 모든 단어는 최소 1개 이상의 다른 단어와 교차점(같은 한글 문자를 공유하는 좌표)을 형성해야 합니다.
  • 서브 퍼즐 허용: 단어 수가 많고 그리드 공간이 넓을 경우 2개 이상의 유기적 서브 퍼즐로 나누어 구성할 수 있으며, 각 서브 퍼즐은 최소 2개 이상의 단어가 교차해야 합니다. (단독 1개짜리 외딴 단어 배치 금지)

④ 인접 글자의 무의미한 단어 조합 방지 규칙

  • 의미 없는 유령 단어 조합 지양: 단어들이 나란히 배치될 때 교차점이 아닌 인접 칸에 글자들이 나란히 놓여, 가로나 세로 방향으로 읽었을 때 의미가 성립되지 않는 불필요한 글자 조합(예: "름기차")이 생기는 배치는 완벽히 차단해야 합니다.
  • 방향성 유효성: 가로나 세로 어떤 방향으로 읽더라도 올바른 정답 단어로만 읽히도록 단어 사이의 공간(검은 칸/빈 공간)을 확보하여 배치합니다.
  • 색상 및 시각적 구분: 게임 화면 내에서 단어별 고유 파스텔 배경 색상 및 테두리로 각 단어의 구획을 확실하게 표시하여 사용자가 혼동하지 않도록 처리합니다.

⑤ 퍼즐 독립 구성 및 단독 단어 배치 지양

  • 자연스러운 연결성 우선: 한 스테이지에 1개 이상의 독립된 퍼즐이 구성될 수는 있으나, 이는 필수 조건이 아닙니다.
  • 억지 단독 배치 지양: 연결 고리가 없이 1개의 단어만 따로 떨구어 단독 배치하는 방식으로 억지로 퍼즐 개수를 늘리지 않으며, 교차점을 통해 서로 유기적으로 연결된 완성도 높은 퍼즐 구성을 최우선으로 합니다.

⑥ 시작 힌트 문자 50% 이하 제한 규칙

  • 단어별 힌트 비율 제한: 스테이지 시작 시 (또는 문자 새로고침 시) 무작위로 배치되는 시작 힌트 문자는, 어떤 단어이든 그 단어를 구성하는 전체 문자 수(clue.length)의 50% 이하(\le \lfloor \text{length} \times 0.5 \rfloor)까지만 채워지도록 제한합니다.
  • 과도한 자동 정답 방지: 2~3글자 단어의 경우 최대 1글자까지만 시작 힌트로 허용하여, 시작하자마자 특정 단어가 통째로 채워지거나 거의 다 풀어져버려 게임의 재미가 반감되는 현상을 근본적으로 차단합니다.

⑦ 2글자 이상 부분 문자열 중복 단어 포개짐 금지 규칙

  • 2글자 이상 중복 포개짐 금지: 한 스테이지 안에서 임의의 두 단어가 2글자 이상 동일한 연속 문자열을 공유하는 경우(예: "사랑"과 "사랑방", "기차"와 "기차표", "변호"와 "변호사", "리본"과 "리본끈" 등), 두 단어를 한 스테이지에 동시에 배치하거나 가로/세로 상에 포개어 만드는 구성을 엄격히 금지합니다.
  • 단일 교차점 원칙: 서로 다른 단어 간의 교차점(Intersection)은 오직 1글자 단일 교차로만 형성되어야 합니다.

⑧ 힌트 보유 제한(최대 5개) 및 일일 무료 시청 제한(3회)

  • 최대 보유 제한: 보유할 수 있는 힌트 개수는 최대 5개로 제한됩니다. 보유 힌트가 5개일 경우 광고 시청 버튼이 비활성화되며 추가 힌트 충전이 불가능합니다.
  • 일일 무료 시청 제한: 힌트를 충전하기 위한 일일 무료 광고 시청 한도는 3회로 지정됩니다. (매일 자정에 초기화)

⑨ 그리드 내 퍼즐 가로/세로 정중앙 배치 규칙

  • 중앙 밸런스 배치: 퍼즐 단어 배치가 그리드의 우측, 좌측, 상단, 하단 등 한쪽 귀퉁이나 구석으로 쏠리는 현상을 완벽히 차단합니다.
  • 자동 오프셋 정렬: 퍼즐 전체 단어들이 차지하는 바운딩 박스(Bounding Box: min_r, max_r, min_c, max_c)를 계산한 후, 그리드의 가로/세로 정중앙 중심점과 일치하도록 이동 오프셋(\Delta r, \Delta c)을 자동 적용하여 시각적 균형감을 극대화합니다.

3. JSON 스키마 명세 (stages.json)

스테이지 데이터는 app/src/main/assets/data/stages.json에 저장되며, 다음 스키마를 엄격히 준수합니다.

[
  {
    "stageNumber": 1,
    "title": "첫걸음: 풍성한 쉬운 단어 I",
    "gridSize": 6,
    "difficulty": 1,
    "clues": [
      {
        "id": "c1_1",
        "number": 1,
        "direction": "ACROSS",
        "word": "생일파티",
        "clue": "태어난 날을 축하하기 위해 여는 잔치.",
        "startRow": 2,
        "startCol": 1,
        "length": 4
      }
    ]
  }
]

4. 주제 및 단어 데이터 연동 가이드라인 (Theme & Vocabulary)

  1. words.json 연동:
    • 퍼즐 단어장에 소속된 단어 카테고리("스테이지 단어", "고사성어", "글로벌 기업", "일반")를 적극 활용합니다.
  2. 다양한 주제 테마 배치:
    • 초반 (01~10): 학교, 음식, 가족, 동물, 자연 등 100% 기초 일상어 (단어 6~8개 풍성하게 배치)
    • 중반 (11~40): 일상어 + 실생활 고빈도 필수 사자성어 + 글로벌 기업 브랜드
    • 후반 (41~100): 시사상식, 고사성어, 글로벌 기업, 역사/문화 종합 탐구
  3. 단어 설명(clue)의 명확성:
    • 힌트 문장은 자극적이지 않으며 직관적이고 표준 국어대사전에 기반한 깔끔한 설명을 사용합니다.