✦ Voice Quest 게임 개발

Voice Quest 개발 연대기 #1 — 음성으로 조종하는 무협 소셜 월드의 탄생 (07.16~07.20)

Kenneth Kang · 공유 · 2026.07.20

Voice Quest 개발 연대기 #1

"내 목소리가 곧 조작이자 대화가 되는, 사람 사는 것 같은 3인칭 소셜 월드"

음성으로 캐릭터를 조종하고, 명령이 아닌 말은 그대로 채팅 말풍선이 되는 무협 소셜 게임. 이 시리즈는 개발 과정을 시간순으로 기록하는 연대기다.


2026-07-16 — 컨셉 탄생과 MVP 다섯 번의 진화

단일 HTML 파일로 아이디어를 검증하며 하루 만에 다섯 단계를 진화시켰다.

  • v1 2D 캔버스 개념검증 — "음성이 조작+채팅이 된다"는 코어 아이디어 확인
  • v2 Three.js 오버숄더 3인칭 + 갸웃 제스처 탄생
  • v3 리깅 글TF(모션캡처) 로딩 실험
  • v4 무협풍 절차적(procedural) 캐릭터 — 도포·두건·등의 검
  • v5 PeerJS P2P 멀티플레이 — 서버 0원으로 4자리 코드 방 만들기/참가

이날 확정된 시그니처 UX가 갸웃 제스처다. 음성 인식이 실패하면 에러 메시지 대신, 캐릭터가 카메라를 고정한 채 뒤돌아 플레이어를 바라보며 어깨를 으쓱하고 고개를 갸웃한다. 기술적 한계를 캐릭터의 매력으로 바꾸는 것 — 이 게임의 정체성이 여기서 시작됐다.

2026-07-17 (오전) — 진짜 프로젝트가 되다: Vite + TypeScript 모듈화

822줄 단일 HTML을 19개 모듈(world/hero/voice/net/game/ui)로 분리했다. 핵심은 네트워크 transport 추상화 — PeerJS P2P 코드를 인터페이스 뒤로 숨겨서, 나중에 Colyseus(WebSocket) 서버로 전환할 때 팩토리 한 줄만 바꾸면 되게 설계. 갸웃 제스처의 카메라 고정 연출은 프레임 단위 수치까지 원본 그대로 보존했다.

2026-07-17 (오후) — 전투가 사실적으로, 그리고 "욕설 순화" 탄생

전투 개선: 등 뒤의 몹을 정면 본 채 맨손으로 때리던 어색함을 수술했다. 공격 순간 대상을 향해 몸을 돌리고, 등의 검을 뽑아 손에 들고 베고(발도), 맞은 몹은 밀려나고, 내가 맞으면 붉은 파편이 튄다.

욕설 순화(미칭 치환): 욕설·비하 표현이 말풍선에 그대로 나가지 않고 "왕자님", "공자님", "대협" 같은 존칭으로 바뀌어 표시되는 기능을 넣었다. "이 바보야!" → "이 왕자님야!" — 차단 대신 유머로 승화. 부수 효과로 "닥쳐"가 공격 명령("쳐")으로 오분류되던 버그도 함께 해결됐다.

2026-07-17 (저녁) — 캐릭터 업그레이드와 좌우 반전 버그

리깅 글TF + 모션캡처 파이프라인을 적용했다. Mixamo 리그의 Soldier로 검증한 뒤, KayKit Adventurers(CC0)의 Knight로 교체 — 진짜 검격 모션캡처 클립 (사선 베기)과 실물 검 모델(오른손 슬롯 부착)까지 들어갔다.

이 과정에서 원본부터 존재하던 좌우 반전 버그 2개를 발견해 수정했다: "오른쪽" 음성 명령이 화면 왼쪽으로 가던 문제, 그리고 캐릭터가 검을 왼손으로 휘두르던 문제(모델 좌우 배치가 해부학적으로 반대였다).

삽질 기록: GLTFLoader는 본(bone) 이름의 점을 제거한다(upperarm.l → upperarml). 본 매칭이 조용히 실패해서 한참 헤맸다.

2026-07-20 — "바른말 고운말": 기능이 컨셉이 되다

욕설 순화 기능을 게임의 사회적 가치 제안으로 격상시켰다.

  • 아이들에게: 욕설이 화면에 노출되지 않는 안전한 첫 소셜 게임
  • 성인에게: 홧김에 뱉은 말이 "왕자님"으로 승화되는 순간 자기 말버릇을 돌아보게 되는, 처벌이 아닌 유머로 작동하는 바른말 전도사 장치
  • 발음 훈련: 음성 조작 특성상 또박또박 말해야 캐릭터가 반응한다. 플레이 자체가 발음 연습이 되고, 갸웃 제스처는 "다시 또렷하게 말해볼까?"라는 부드러운 교정 피드백이 된다.

포지셔닝 한 줄: "말이 고와지고, 발음이 또렷해지는 게임"


지금까지의 핵심 설계 결정

결정이유
음성 분류 단일 진입점 (handleUtterance)명령/채팅/갸웃/순화가 한 곳에서 일관되게 판정
갸웃 제스처 = 시그니처인식 실패를 매력으로 — 순화 기능도 같은 철학
host-authoritative P2P → 서버 전환 설계MVP 속도 우선, transport 추상화로 이식 대비
three.js 버전 고정(r128)시각 결과 동일성 보장
KayKit CC0 에셋라이선스 청정 + 모바일 성능(Knight 334KB)

다음 계획

  1. Colyseus 서버 전환 + 광장 존 (transport 교체 지점 준비 완료)
  2. 무협 전용 캐릭터 모델 (MODEL_URL 교체만 하면 되는 구조)
  3. LLM 의도 분류로 명령/대화 판정 고도화
  4. 운동회 미니게임(달리기) · 중고시장

다음 편에서 계속.

#VoiceQuest#개발연대기#게임개발#음성인식#바른말고운말
은하계에서 보기나도 은하계 만들기