개발 연대기 #1과 함께 보는 공식 문서 시리즈 (2/3).
원본: voice-quest/docs/02_feature_spec.md · 2026-07-20 기준 스냅샷
Voice Quest — 기능 명세서
버전: 0.1 · MVP에 구현된 기능은 ✅, 로드맵은 🔜 표기
1. 조작
기능
상태
상세
터치/클릭 이동
✅
땅 레이캐스트 → 목표점 이동, 목적지 링 이펙트
음성 명령 이동
✅
"앞으로/뒤로/왼쪽/오른쪽/전진/후진" → 현재 방향 기준 6유닛 이동
음성 공격 명령
✅
"공격/싸워/잡아/쳐/때려/베어" → 가장 가까운 몹에게 이동+자동전투
음성 정지
✅
"멈춰/정지/스탑/그만"
공격 버튼
✅
⚔️ 버튼 = 음성 공격과 동일
가상 조이스틱
🔜
모바일 정밀 조작용
2. 음성 파이프라인
마이크 (버튼 토글, 연속 인식)
→ Web Speech API (ko-KR, interim 표시)
→ 최종 텍스트 분류:
⓪ 욕설 순화(미칭 치환) — 금칙어를 "왕자님/공자님/대협" 등으로 치환 후 분류 (§2.1)
① 신뢰도 < 0.5 또는 1글자 이하 → [갸웃 제스처]
② 명령 키워드 매칭 → [명령 실행 + 채팅 표시]
③ 명령조 어미(~해줘/~해봐/~하자 등)인데 미매칭 → [갸웃 제스처]
④ 그 외 → [채팅 전송 (말풍선 + 로그 + 네트워크 브로드캐스트)]
✅ interim(중간 인식) 텍스트 실시간 표시
✅ no-speech 에러 → 갸웃 제스처
🔜 LLM 의도 분류(②③ 판정을 휴리스틱 → LLM으로 교체)
🔜 웨이크워드/홀드-투-커맨드 모드 옵션
2.1 욕설 순화 — 미칭(美稱) 치환 ("바른말 고운말")
거친 말을 차단하는 대신 무협 세계관의 존칭으로 바꿔 말풍선에 띄운다.
"이 바보야!" → "이 왕자님야!" — 부정 경험을 유머로 승화 (기획 근거: 01 §2-5, §2-1).
아이에게는 안전한 채팅, 성인에게는 말버릇 자정 장치이며, 음성 조작 특성상
또박또박 말해야 인식되므로 발음·발화 연습 효과를 함께 노린다 (01 §2-1).
✅ 금칙어(욕설/비하)가 포함된 발화는 해당 단어만 "왕자님/공자님/대협/소협" 등
무작위 미칭으로 치환되어 말풍선·채팅로그·네트워크에 표시된다.
✅ 적용 지점 2곳:
송신 전 — handleUtterance 분류 직전 (내 말풍선/브로드캐스트 모두 순화된 텍스트 사용)
원격 채팅 표시 시 — 순화 미적용 클라이언트(구버전/원본 HTML)가 보낸 원문 방어
✅ 명령 분류보다 먼저 실행 — "닥쳐" 같은 욕설이 공격 명령("쳐" 키워드)으로
오분류되는 것을 방지하는 순서 보장.
🔜 서버 전환 시 서버측 필터로 이동(치환 연출은 유지), 금칙어 사전 확장 + AI 모더레이션
3. 어리둥절(갸웃) 제스처 — 시그니처 UX
✅ 발동 조건: 위 분류 ①③ + no-speech
✅ 연출 시퀀스 (150프레임):
카메라 고정 (camYaw 갱신 중단) — "나를 돌아본다"는 느낌의 핵심
캐릭터가 카메라 방향으로 회전 (yaw lerp 0.2)
양팔 으쓱(armL/R rotation.z ±2.3) + 고개 갸웃(head rotation.z sin) + 머리 위 "?" 스프라이트
마지막 35프레임: 원래 방향(preYaw)으로 복귀
✅ 말풍선: "뭐라고...? 🤔" / "음? 무슨 뜻인지 모르겠는데 🤔"
✅ 테스트 버튼 제공, ✅ 멀티플레이 시 다른 플레이어에게도 제스처 전파('huh' 메시지)
4. 캐릭터
✅ 무협풍 절차적(procedural) 휴머노이드:
뻗친 흑발+정수리 스파이크, 붉은 두건+살랑이는 리본 2가닥, V자 흰 깃 청색 도포,
허리띠, 넓은 소매, 등의 검. 목/코/입/귀/눈썹, 어깨 넓고 허리 좁은 인체 비율.