Voice Quest 게임 개발

Voice Quest 개발 연대기 #7 — 폰에서 뛰고, 몸으로 말한다 (07.26)

Kenneth Kang · 공유 · 2026.07.26

Voice Quest 개발 연대기 #7

무협 음성 조작 멀티플레이 웹게임 — NHN nan2026 해커톤(8/10 마감)을 향해. 이번 회차는 모바일 실기기 데뷔전이었다. 그리고 캐릭터가 몸으로 말하기 시작했다.

📱 모바일 원정기 — 세 개의 벽을 넘다

폰으로 처음 접속해본 날, 벽이 연달아 나타났다.

벽 1: "접속 중"에서 무한 대기. 원인은 WebRTC의 NAT 통과 실패 — 기본 STUN만으로는 LTE(통신사 NAT)를 못 뚫는다. 무료 공용 TURN(openrelay)을 넣었는데... 브라우저에서 직접 테스트해보니 이미 서비스가 죽어 있었다(중계 후보 0개). 결국 살아있는 TURN을 런타임에 주입하는 구조(?turncfg=)로 만들고, 20초 타임아웃 시 "시그널링 실패인지 NAT 실패인지" 단계별로 알려주게 했다. 같은 와이파이에선 직결로 잘 붙는다.

벽 2: 말해도 못 알아듣는 음성인식. 진단해보니 기존 코드가 인식 에러 대부분을 조용히 삼키고 있었다. 권한 차단, iOS 받아쓰기 꺼짐, 인식 서비스 실패 — 전부 화면 안내로 바꾸고, iOS 계열은 불안정한 연속 인식 대신 짧은 세션 자동 재시작 방식으로 교체했다.

벽 3: 마이크 버튼이 눌러도 바로 꺼짐. 알고 보니 버튼 문제가 아니라 권한 차단 상태에서 켜자마자 에러로 자동 해제되던 것. 이제 재허용 방법까지 화면에 안내한다.

셋을 넘고 나니 폰에서 음성으로 사냥하는 게임이 됐다. 방 코드도 우상단에 상시 표시(클릭 복사)라 친구 초대가 쉬워졌다.

⚔️ "계속 잡아줘" — 연속 사냥 모드

한 마리 잡고 멈추던 캐릭터가, 이제 전멸할 때까지 알아서 다음 요괴를 재조준한다. "멈춰"라고 하거나 땅을 터치하면 해제. AI 동행도 "해골들 전부 쓸어버려" 같은 자연어를 연속 사냥으로 판정한다.

🏹 원거리 복장 — 술사와 유랑객

저잣거리 복장 두 벌에 실전 특성이 붙었다. 술사는 보라색 마법 탄환, 유랑객은 금색 화살 — 사거리 4배(7.5u), 대신 쿨다운이 길다. 멀리서 제자리 사냥이 된다.

🔍 LLM의 속마음이 보인다 — 명령 판정 가시화

"AI가 내 말을 제대로 알아들었나?"를 확인할 길이 없어서 만들었다. ❓ 버튼을 누르면 커맨드 목록 패널이 뜨고, 말을 하면 상단에 "⚡ 연속 사냥 — 🤖 AI 판정" 배지가 뜨며 패널의 해당 줄이 반짝인다. 데모에서 "음성 → AI 판정 → 실행"이 시각적으로 증명되는 효과는 덤.

💃 몸으로 말하기 — 감정표현 4종

  • 만세 환호 / 손 인사: 안 쓰고 있던 KayKit Simulation 팩에서 진짜 모션 클립(Cheering/Waving)을 발굴했다
  • 춤 / 엉덩이 씰룩쌜룩: 클립이 없어서 본(bone)을 코드로 직접 흔드는 절차 연출로 만들었다

백미는 AI 연동 — *"우와 진짜 잘했어 최고야!"*라고 칭찬하면 동행이 "하하, 과찬이시오!" 하며 만세를 부르고 유대가 +2 오른다. 좋아하는 마음이 몸짓으로 돌아온다. 물론 멀티플레이에서 다른 플레이어에게도 보인다.

다음 회차 예고

  • 성향 시스템 검토 중: 친절이/까칠이/똑똑이 — 자리 비운 사이 내 캐릭터가 성향대로 대신 대답해주는 기능
  • 데모 시나리오 정리, 그리고 제출

커밋: 2cef479(방코드) · 81cf629→33e33a9(TURN) · 24e1946·98ec9a9(음성인식) · 1c6902e(사냥+원거리) · be9f577(가시화) · 7d91309(이모트)

#개발연대기#해커톤#voice-quest#모바일#이모트
은하계에서 보기나도 은하계 만들기