마법 문양을 직접 그려 주문을 시전하는 게임 경험을 검증하기 위한 프로젝트입니다.
현재 저장소의 중심은 Web 기반 Magic Recognizer V1.5 프로토타입이며, 게임 기획 기준은 Magic Exam Hall입니다. Magic Exam Hall은 별도 입력창이 아니라 맵 위 바닥에 직접 문양을 그리고, base family와 overlay operator를 조합해 세계 상태를 바꾸는 2D top-down 마법 드로잉 퍼즐 어드벤처를 목표로 합니다.
현재 범위:
- 웹 캔버스 기반 recognizer 연구 프로토타입
- 기본 5문양 base family 인식
- user input profile 누적
- raw quality / adjusted quality 분리
- base seal 이후 overlay operator stack 인식
final sealcompile 결과 표시- JSON 로그 export
- 문서 상태 동기화 검증
Magic Exam Hall게임 기획/로드맵 문서화- Unity 기반
Magic Exam Hall5층 월드 캐스팅 플레이 루프
웹 프로토타입:
- Node.js
20.x이상 - npm
10.x이상
확인:
node -v
npm -vUnity 플레이어블:
- Unity
6000.3.14f1 - 유효한 Unity Editor 라이선스
처음 clone 후 가장 먼저 할 일:
git clone <repo-url>
cd magic
npm ci개발 서버 실행:
npm run devVite가 출력하는 로컬 주소를 브라우저에서 열면 됩니다. 보통은 http://localhost:5173 입니다.
Unity 플레이어블 실행:
unity/MagicExamHall
- Unity Hub 또는 Unity Editor에서 위 프로젝트 폴더를 엽니다.
Assets/Scenes/MagicExamHall.unity를 엽니다.- Play를 누릅니다.
조작은 WASD/방향키 이동, 우클릭 hold/release 월드 드로잉입니다. 기본 플레이에서는 별도 입력 패널이나 마법 시전 버튼을 사용하지 않습니다.
처음 받았을 때는 아래 순서로 확인하면 됩니다.
큐와 task frontmatter가 맞는지 확인합니다.
npm run validate:docs기대 결과:
validated 0 task documents against work queuerecognizer 코어의 기본 family 인식, 거부 케이스, 품질 벡터 동작을 확인합니다.
npm testwatch 모드가 필요하면:
npm run test:watchTypeScript 타입 검사와 Vite 번들링을 함께 확인합니다.
npm run build정상 종료 시 dist/가 생성됩니다.
현재 Web UI에는 두 층이 함께 들어 있습니다.
- core recognizer 기능:
- base family 인식
- overlay operator stack 인식
- raw / adjusted quality 계산
- final seal compile
- HCI 검토용 demo 기능:
quality vector useon/off compareclean / explain / workshop프리셋- why panel
- guided scenario
- recent seals / quick compare
개발 서버를 띄운 뒤 브라우저에서 아래 순서로 확인합니다.
- 상단
View Preset에서clean을 먼저 확인합니다. Guided Demo Scenario에서빠른 불꽃또는느린 불꽃을 선택합니다.- 캔버스에 기본 문양을 그리고
Seal Base를 눌러 base family를 고정합니다. - 오른쪽
Outcome Compare에서quality off / quality on을 비교합니다. explain프리셋으로 바꿔 why panel과 quick compare를 함께 확인합니다.- 필요하면
workshop프리셋으로 바꿔 analysis overlay와 detail panel을 엽니다. Start Overlay이후 같은 캔버스에서 overlay operator를 덧그린 뒤Seal Final로 compile 결과를 확인합니다.
시연 중 아래 문구와 카드가 바로 보여야 합니다.
same shape, same familyquality affects execution, not familyquality off는 canonical baseline outcome만 보여 줌quality on은 quality vector 기반 outcome delta만 반영- why panel은 상태 이유와 quality 영향 설명을 짧은 문장으로 제공
- quick compare는 현재 시도와 직전 결과를 로그 없이 비교 가능하게 제공
프리셋:
clean: 설명/분석을 줄이고 draw와 핵심 결과 위주로 봄explain: why panel과 quality compare 중심으로 봄workshop: analysis overlay와 세부 패널까지 함께 봄
개별 토글:
quality vector use: outcome layer에 quality delta를 반영할지 제어quality compare: quality off / on compare card 표시why panel: 결과 이유 설명 패널 표시analysis overlay: axis, closure, anchor zone, ghost guide 표시detail panels: raw / adjusted quality, profile, 로그 같은 세부 패널 표시
버튼 설명:
Seal Base: 현재 base 입력을 canonical family로 확정Start Overlay: base seal 이후 overlay 입력 단계를 시작Seal Final: base family와 overlay stack을 compile 결과로 고정Undo: 마지막 stroke 제거Reset: 현재 입력 초기화Export Logs: 누적 recognition 로그를 JSON으로 저장
브라우저에서 빠르게 확인할 최소 시나리오:
빠른 불꽃시나리오를 선택clean에서 불꽃 삼각형을 그림Seal Basequality vector useon/off를 바꾸며Outcome Compare확인explain으로 전환해 why panel 확인Start Overlaysteel_brace,ice_bar,void_cut중 하나를 덧그림Seal Finalquick compare에서 현재와 직전 결과를 비교
현재 recognizer의 canonical silhouette는 family마다 1개만 사용합니다.
- 바람:
3개 평행 개방선 - 땅:
하변이 더 긴 폐합 사다리꼴 - 불꽃:
상향 인상의 폐합 삼각형 - 물:
단일 원형 폐합 루프 - 생명:
줄기 + 상단 분기 rooted Y
Overlay operator:
steel_braceelectric_forkice_barsoul_dotvoid_cutmartial_axis(void_cut이후에만 활성화)
주의:
- base family 판정은 profile이 가져가지 않습니다.
- overlay는 base seal 이후에만 해석합니다.
- base stroke는 overlay phase에서 ghost overlay로만 보조합니다.
npm run dev # 개발 서버
npm run build # 타입 검사 + 프로덕션 빌드
npm test # Vitest 일괄 실행
npm run test:watch # Vitest watch
npm run validate:docs # docs 상태/의존성 검증Unity 검증 명령 예시:
& 'C:\Program Files\Unity\Hub\Editor\6000.3.14f1\Editor\Unity.com' -batchmode -quit -projectPath 'C:\Users\silve\source\repos\magic\unity\MagicExamHall' -executeMethod MagicExamHall.Editor.MagicExamHallSceneBuilder.BuildAll
& 'C:\Program Files\Unity\Hub\Editor\6000.3.14f1\Editor\Unity.com' -batchmode -projectPath 'C:\Users\silve\source\repos\magic\unity\MagicExamHall' -runTests -testPlatform editmode -testResults 'C:\Users\silve\source\repos\magic\unity\MagicExamHall\TestResults.xml'
& 'C:\Program Files\Unity\Hub\Editor\6000.3.14f1\Editor\Unity.com' -batchmode -projectPath 'C:\Users\silve\source\repos\magic\unity\MagicExamHall' -runTests -testPlatform playmode -testResults 'C:\Users\silve\source\repos\magic\unity\MagicExamHall\PlayModeTestResults.xml'src/ 웹 데모와 recognizer 코어
tests/ Vitest 테스트
scripts/ 문서 검증 스크립트
docs/ 방향/큐/task 문서
unity/ Unity Magic Exam Hall 플레이어블
문서 기준을 먼저 보고 싶다면 아래 순서가 가장 빠릅니다.
docs/GAME_DESIGN.mddocs/PROJECT_ROADMAP.mddocs/PROJECT_OVERVIEW.mddocs/20_queue/work-queue.mddocs/30_tasks/README.md
vitest: not found 가 뜨면 의존성이 설치되지 않은 상태입니다.
npm ci문서 검증이 실패하면 work-queue.md와 task 문서의 frontmatter 상태/의존성이 어긋난 것입니다. 현재 main 기준 task 문서는 아직 없으므로 정상 결과는 validated 0 task documents against work queue입니다. 먼저 아래를 다시 실행해 원인을 확인합니다.
npm run validate:docsUnity batchmode에서 아래 메시지가 보이면 코드 컴파일 실패가 아니라 라이선스 초기화 문제입니다.
No valid Unity Editor license found. Please activate your license.
로그 끝의 abort_threads: Failed aborting id ... mono_thread_manage will ignore it 메시지는 Unity/Mono 종료 과정에서 남는 노이즈일 수 있습니다. 같은 로그 안에 Exception, CS#### error, Test run failed가 함께 있는지 먼저 확인하세요.