From 84ef1f543f1339c683db22082bf8afa33f214ace Mon Sep 17 00:00:00 2001 From: SilverSupplier <192233040+SilverSupplier@users.noreply.github.com> Date: Fri, 12 Jun 2026 20:58:36 +0900 Subject: [PATCH] docs: HCI final report draft following course guideline Structure maps 1:1 to the final report guideline: background, problem definition (target user, needs, research questions), proposed solution with design rationale, implementation, experiment design with metrics, and conclusion with design implications. Result sections are marked as data placeholders to be filled from playtest 1/2. --- docs/FINAL_REPORT.md | 170 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 docs/FINAL_REPORT.md diff --git a/docs/FINAL_REPORT.md b/docs/FINAL_REPORT.md new file mode 100644 index 0000000..52a4483 --- /dev/null +++ b/docs/FINAL_REPORT.md @@ -0,0 +1,170 @@ +# Magic Exam Hall — HCI Final Report (초안) + +작성일: 2026-06-12 / 상태: **초안** — `(데이터)` 표시는 플레이테스트 결과로 채운다. +구조는 HCI Final Report Guideline(Background → Problem definition → Proposed Solution/System → Implementation → Experiment and Result → Conclusion)을 그대로 따른다. + +--- + +## 1. Background + +### 1.1 드로잉 마법 입력의 계보 + +게임에서 "마법을 시전한다"는 행위는 대부분 두 가지 입력으로 추상화되어 왔다. 정답 룬을 외워 재현하는 방식(Arx Fatalis, 2002)과 키 조합으로 원소를 섞는 방식(Magicka, 2011)이다. 전자는 그리는 행위가 있지만 탐색이 "공략 암기"로 수렴하고, 후자는 조합의 폭은 넓지만 손으로 긋는 행위 자체가 없다. + +| 게임 | 입력 방식 | 이 자리에서 비는 것 | +| --- | --- | --- | +| Black & White (2001) | 마우스 제스처 | 그리기가 게임의 중심이 아님 | +| Arx Fatalis (2002) | 룬 모양 그리기 | 정답 레시피 암기, 조합 실험 없음 | +| Magicka (2011) | 키보드 원소 조합 | 그리는 행위 자체가 없음 | +| The Witness (2016) | 패널 위 선 긋기 | 발견형이지만 실시간 세계 반응 없음 | + +**손으로 그리는 입력 × 레시피 없는 발견형 퍼즐 × 실패가 단서가 되는 학습 톤** — 이 세 축의 교차점은 20년간 사실상 비어 있었다. 두 축을 가진 게임은 많지만 셋을 다 가진 작품은 없다. + +### 1.2 왜 HCI 문제인가 + +이 교차점이 비어 있던 이유는 기술이 아니라 인터랙션 설계의 어려움이다. 자유 드로잉을 입력으로 받는 순간 시스템은 두 가지 HCI 문제를 떠안는다: ① 인식 실패가 사용자에게 **불투명**하다 — 왜 거부됐는지 모르는 실패는 좌절과 이탈로 이어진다. ② 필체는 사람마다 다르다 — 하나의 '정답 모양'을 기준으로 삼으면 일부 사용자는 구조적으로 계속 거부당한다. 본 프로젝트는 이 두 문제를 게임이라는 형식 안에서 풀 수 있는지를 검증한다. + +## 2. Problem Definition + +### 2.1 타깃 유저 + +공략 없이 스스로 발견하는 과정을 즐기는 PC 퍼즐·어드벤처 게이머 (The Witness, Outer Wilds 류 선호층). + +- 마우스·키보드만 사용하며, 드로잉/제스처 입력 경험은 전제하지 않는다. +- 1회차 30~60분의 짧은 완결 경험을 기대한다. +- 사람마다 필체가 달라 같은 도형도 서로 다르게 그린다. + +### 2.2 니즈와 문제 + +1. **실패의 불투명성** — 제스처 인식 시스템은 실패할 때 이유를 알려주지 않는다. 사용자는 "왜 안 됐는지"를 모르면 입력 자체를 불신하게 된다. +2. **필체 다양성의 거부** — 단일 기준 모양으로 판정하는 인식기는 개인의 그리기 습관을 흡수하지 못해, 특정 사용자에게 체계적으로 불리하다. +3. **암기형 진행의 한계** — 정답 레시피를 외워 재현하는 구조는 발견의 재미를 죽인다. 사용자는 외워서 통과하는 시험이 아니라 실험해서 통과하는 시험을 원한다. + +### 2.3 연구 질문 + +> **기호 기반(드로잉) 입력이 재미와 몰입을 만들면서도, 실패 이유를 납득 가능하게 설명할 수 있는가?** + +세부 질문: (RQ1) 설명 없이도 인식 시스템의 규칙을 플레이만으로 학습할 수 있는가 — 무설명 60분 내 통과 엔딩 도달로 측정. (RQ2) 실패 피드백이 다음 행동을 알 수 있는 수준으로 이해되는가 — 실패 직후 인터뷰로 측정. (RQ3) 인식이 필체 개인차에 공정한가 — family별 첫 시도 성공률 분포로 측정. + +## 3. Proposed Solution / System + +### 3.1 시스템 개요 + +`Magic Exam Hall`은 2D top-down 마법 드로잉 퍼즐 어드벤처다. 플레이어는 떠 있는 마법탑의 입학생이 되어 **맵 바닥에 직접 문양을 그리고**, 문양의 형태와 품질에 따라 세계 상태를 바꾸며, 정답 레시피 없이 관찰과 조합으로 5층 시험을 통과한다. + +### 3.2 왜 이렇게 설계했는가 (design rationale) + +**① 마법 문법 — 암기가 아니라 문법 학습으로.** +base 문양 5종(불·물·바람·땅·생명)은 "세계를 바꾸는 동사", overlay 장식 6종은 "동사를 바꾸는 수식"이다. 주문이 아니라 문법을 배우게 함으로써 암기형 진행(문제 3)을 구조적으로 차단한다. 같은 주문도 위치에 따라 다르게 해석되므로(3층 다리 근처의 `earth`는 지지대, 표적 근처에서는 엄폐물), 발견 자체가 보상이 된다. + +**② family와 quality의 분리 — 필체 차이를 실패가 아니라 세기 차이로.** +인식기는 "무엇을 그렸는가(family)"와 "얼마나 잘 그렸는가(quality)"를 분리해 판정한다. 형태가 종류를 결정하고 품질은 효과의 세기·지속에만 영향을 주므로, 서툰 필체는 **거부되는 대신 약하게 성공**한다. 이것이 필체 다양성 문제(문제 2)에 대한 1차 응답이다. + +**③ 커스텀 도형 개인화 (two-track personalization) — 사용자의 모양을 시스템의 기준으로.** +사용자가 직접 그려 등록한 도형(gold capture)이 인식 기준이 된다. 시스템이 정한 모양에 사용자를 맞추는 대신, 사용자의 모양에 시스템을 맞춘다. 2층 '반응층'은 이 등록-사용 루프 자체를 퍼즐로 만들었다. + +**④ 단계적 힌트 escalator — 실패를 처벌이 아니라 단서로.** +실패 피드백은 한 번에 정답을 주지 않고 단계적으로 강화된다: 환경 반응(비언어) → 행동 동사가 담긴 한 줄 노트 → 체크리스트 → ghost trace(반투명 시범 궤적). NPC 멘토는 정답을 말하지 않고 관찰 단서만 준다. 모든 발화는 노트(codex)에 자동 기록되어 사용자가 자신의 학습 이력을 다시 볼 수 있다. 이것이 실패 불투명성 문제(문제 1)에 대한 응답이다. + +**⑤ 처벌 없는 실패 — 시도를 가볍게.** +체력·죽음·점수 감점이 없다. 위험 접촉도 가까운 안전 지점으로 되돌릴 뿐이다. 실패 비용을 낮춰 실험 횟수를 늘리는 것이 발견형 학습의 전제이기 때문이다. + +### 3.3 어떻게 문제를 푸는가 (problem ↔ design 대응) + +| 문제 | 설계 응답 | +| --- | --- | +| 실패의 불투명성 | escalator 힌트(④), 실패 유형 분류(invalid/incomplete/dependency/detached/no-seal)별 다른 피드백, codex 기록 | +| 필체 다양성 거부 | family/quality 분리(②), 커스텀 도형 개인화(③) | +| 암기형 진행 | 마법 문법(①), 목표 '상태' 달성형 퍼즐 — 해법이 복수인 층 설계, 처벌 없는 실패(⑤) | + +## 4. Implementation + +### 4.1 2트랙 구조 + +| 트랙 | 역할 | 기술 | +| --- | --- | --- | +| Web Recognizer Lab | 인식 알고리즘 빠른 실험, 대시보드, stroke 수집 설문 | TypeScript + Vite, Vitest | +| Unity Playable | 5층 시험장 본 게임 | Unity 6000.3.14f1, URP 2D | + +인식 파이프라인을 웹에서 먼저 검증한 뒤 Unity로 이식했다. 양 트랙은 family/operator/status/log 명명을 공유한다 (`RECOGNITION_CONTRACT.md`). + +### 4.2 인식 파이프라인 + +stroke session(다획 입력 버퍼 0.8초) → 특징 추출 → family 판정 + quality vector → 세계 효과. 커스텀 도형은 등록 시점의 gold capture와 형태 비교로 판정한다. + +### 4.3 게임 구성 (5층) + +| 층 | 이름 | 퍼즐 | 가르치는 것 | +| --- | --- | --- | --- | +| 1 | 발착층 | 인덱스 룬 5종을 base 문양으로 깨움 | 그리기 → 세계 반응의 기본 루프 | +| 2 | 반응층 | 커스텀 도형 등록 → 반응 표식 5종 발동 | 개인화: 내 모양이 기준이 됨 | +| 3 | 건널목층 | 4개 구간의 길을 커스텀 스펠로 개통 | 위치 의존 해석, 복수 해법 | +| 4 | 타격층 | 훈련 표적 4종에 조합 반응 확인 | 조합 실험과 즉각 피드백 | +| 5 | 성좌심 | 마법진 6슬롯을 임의 조합으로 충족 | 배운 문법의 자유 응용. 5/6 통과, 6/6 진엔딩 | + +보조 시스템: 멘토 NPC(컨텍스트 소환, 정답 금지 대사), codex(발견·노트 자동 기록), 엔딩 리포트("당신은 이런 마법사였습니다" — 플레이 스타일 데이터화), 접근성 옵션 6항목, 3슬롯 저장. + +### 4.4 검증 자동화와 로깅 + +- 자동 테스트: 웹 181개(Vitest), Unity EditMode 105개 + PlayMode 47개 — 5층 synthetic 완주, 5/6·6/6 엔딩 분기까지 자동 검증 (2026-06-12 로컬 전부 통과) +- Windows 빌드 한 줄 명령 + player smoke 스크립트 +- 실험 로깅: attempts.csv(시도별 family/status/assist level/타임스탬프), 엔딩 리포트, 익명 세션 ID — 수집 항목과 개인정보 기준은 `LOGGING_AND_PRIVACY.md` + +## 5. Experiment and Result + +### 5.1 실험 설계 (who / where / how) + +- **Who**: 개발 미참여 외부 참가자. 1차 N=5, 2차 N=3~5. 마우스·키보드 사용 가능, 익명 로그 수집 동의자. +- **Where**: 고정 Windows 빌드, 대면 관찰 환경. +- **How**: 참가자는 설명 없이(조작법은 게임 내에서만 확인) 새 게임을 시작해 60분 내 통과 엔딩을 목표로 플레이한다. 진행자는 정답·문양 모양을 설명하지 않는다. 직후 5점 척도 설문(명확성·공정성·피드백 도움·조작감·몰입감)과 10~15분 반구조화 인터뷰를 진행한다. 상세 절차는 `RESEARCH_PROTOCOL.md`. +- 2차 테스트는 1차 결과로 인식 튜닝(오인식 상위 family 보정, 입력 버퍼 0.6/0.8/1.0초 A/B 확정)을 반영한 빌드로 반복해 개선 폭을 측정한다. + +### 5.2 측정 지표 (metrics) + +| 지표 | 정의 | 대응 RQ | 출처 | +| --- | --- | --- | --- | +| 통과 엔딩 도달률·소요 시간 | 무설명 60분 내 5/6 엔딩 도달 | RQ1 | ending report | +| 첫 시전까지 시간 | 시작 → 첫 인식/실패 시도 | RQ1 | attempts.csv | +| family별 첫 시도 성공률 | base family별 첫 attempt 성공 비율 분포 | RQ3 | attempts.csv | +| 실패 유형 분포 | invalid/incomplete/dependency/detached/no-seal | RQ2 | attempts.csv | +| assist level 도달률 | 힌트 단계 1/2/3 사용 횟수 | RQ2 | attempts.csv | +| 피드백 이해도 | 실패 후 다음 행동을 말로 설명 가능한지 | RQ2 | 인터뷰 | +| 막힘 지점 | 2분 이상 정체 또는 동일 목표 3회 이상 실패 | RQ1 | 관찰 | +| 설문 5점 척도 | 명확성·공정성·피드백 도움·조작감·몰입감 | 전체 | 설문 | + +### 5.3 사전 수집: stroke 데이터 + +본 실험에 앞서 웹 트랙에서 도형 구성 stroke 수집 세션을 진행해(2026-05-27, 지시 조건 블록별 다회 시행) 인식기의 노이즈 내성 분석에 사용했다 (`scripts/shape-regex-noise-mass-analysis.py` 외). `(데이터: 세션 수와 분석 요약을 여기에 정리)` + +### 5.4 결과 + +`(데이터) 1차 N=5 결과: 통과율, 첫 시전까지 시간 분포, family별 성공률, 실패 유형 분포, assist 도달률, 막힘 지점 상위 3개, 설문 평균` + +`(데이터) 2차 결과: 1차 대비 개선 폭 — 튜닝 전후 비교` + +`(데이터) 인터뷰 인용: 실패 피드백 이해 사례 / 오해 사례 각 2~3개` + +## 6. Conclusion + +### 6.1 Design Implications + +(아래는 실험 전 가설 형태의 초안이다 — 결과 데이터로 검증·수정한다.) + +1. **실패를 '약한 성공'으로 변환하는 quality 분리는 드로잉 입력의 좌절을 낮춘다.** 거부 대신 약한 효과를 보여주면 사용자는 입력이 "읽히고 있다"는 신뢰를 유지한 채 형태를 교정한다. `(데이터로 검증)` +2. **힌트는 단계적으로, 정답은 마지막까지 유보하는 escalator가 발견의 재미와 진행 보장을 양립시킨다.** 한 번에 정답을 주면 발견이 죽고, 안 주면 이탈한다. 비언어 → 행동 동사 한 줄 → 시범 궤적의 단계가 그 사이를 잇는다. `(데이터로 검증)` +3. **사용자가 등록한 모양을 인식 기준으로 삼는 개인화는 '시스템에 맞추는 학습'을 '시스템을 길들이는 경험'으로 바꾼다.** 게임 외 제스처 UI(펜 입력, 터치 단축 제스처)에도 적용 가능한 패턴이다. `(데이터로 검증)` +4. **모든 피드백을 다시 볼 수 있는 기록(codex)으로 남기는 것은 일회성 토스트보다 학습을 지원한다.** `(데이터로 검증)` + +### 6.2 Limitations + +- 인식 휴리스틱의 개인차: 특징 기반 판정은 여전히 일부 필체에 편향될 수 있다 (user profile 보정의 Unity 이식은 향후 과제). +- 표본 크기 N=5~10, 단일 세션 측정 — 장기 학습 곡선은 다루지 않는다. +- 참가자 모집 풀의 동질성(대학 환경) 가능성. + +### 6.3 Future Work + +user profile 보정의 Unity 이식, 외부 배포(Windows 릴리스), 더 큰 표본의 반복 실험. + +--- + +부록 참조: `GAME_DESIGN.md`(설계 전문), `RESEARCH_PROTOCOL.md`(실험 절차), `LOGGING_AND_PRIVACY.md`(수집·개인정보), `RECOGNITION_CONTRACT.md`(인식 스키마), 저장소 `github.com/sw1029/magic`.