두 개발자의 아바타 장난감, 리얼함을 넘어 '작은 엔진'이 되기까지
2026. 5. 14.
두 개발자의 아바타 장난감, 리얼함을 넘어 '작은 엔진'이 되기까지
몇 달 전, 저와 @webdeveloperhyper는 함께 작은 사이드 프로젝트를 시작했습니다. 3D 공간에서 두 개의 VRM 아바타가 서로 대화하는 모습은 그저 흥미롭고 재미있는 장난감에 불과했죠. 솔직히 말해, 왜 안 되겠어요? 다른 나라에 사는 두 개발자가 인터넷 너머로 귀엽고도 엉뚱한 애니메이션 캐릭터들을 움직이게 만드는 일은 그 자체로 의미 있었습니다. 만약 이 프로젝트의 시작점이 궁금하시다면, 아래 지난 포스팅을 확인해 보세요.
그때만 해도 프로젝트는 훨씬 단순했습니다. 대화 시스템, 몇 가지 VRM 애니메이션, 그리고 서너 개의 제스처가 전부였죠. 애니메이션 도중 아바타가 갑자기 기괴한 자세로 꺾이는 걸 막는 데 예상외로 많은 시간을 썼던 기억도 나네요. 우리는 대부분의 작업이 끝났다고 생각했습니다. 하지만 큰 착각이었죠.
정신 차려보니, 이 프로젝트는… 살아 숨 쉬고 있었습니다
사이드 프로젝트의 재미있는 점은 좀처럼 한자리에 머물러 있지 않는다는 겁니다. 버그 하나를 고치고, 새로운 아이디어가 번뜩이고, '작은' 기능 하나를 추가하다 보면 어느새 주말 실험작이 실제 시스템처럼 작동하기 시작하죠. 우리 프로젝트도 정확히 그런 길을 걸었습니다.
제가 회사 업무, 일본어 공부, 개발 작업, 면접, 마케팅 부업까지 저글링하며 뇌 과열 없이 어른의 삶을 버텨내려 애쓰는 동안… WDH는 마치 수면 부족 VRM 마법사처럼 조용히 프로젝트를 진화시키고 있었죠. 며칠에 한 번씩 아침에 눈을 뜨면 이런 메시지들이 도착해 있었습니다.
"음악이랑 음악 버튼 추가함. 푸시했어."
아니면,
"모바일 말풍선 레이아웃이랑 반응형 아바타 위치 고침."
가끔은 이렇게 짧게 오기도 했죠.
"고치고 푸시했어."
그리고 어쩐지 프로젝트는 계속해서 더 멋있어졌습니다.
아바타들이 더 이상 '짜여진 각본'처럼 느껴지지 않았다
V2에서 가장 큰 변화 중 하나는 캐릭터들이 단순히 명령에 따라 애니메이션을 재생하는 '오브젝트'처럼 느껴지지 않게 되었다는 점입니다. 이제 아바타들은 실제로 반응합니다. 자연스럽게 눈을 깜빡이고, 움직임을 따라 시선을 돌리며, 상대방이 말할 때 경청하고 반응하죠. 사소하지만, 기묘할 정도로 중요한 디테일들입니다. 알고 보면 인간은 생명의 작은 징후에 매우 민감하거든요. 정적인 모델은 즉시 '죽어있는' 느낌을 주지만, 여기에
- 시선 추적 (eye tracking)
- 유휴 움직임 (idle movement)
- 작은 지연 (small delays)
- 미세한 반응 (slight reactions)
- 표정 변화 (facial expressions)
같은 요소들이 더해지면, 갑자기 우리의 뇌는 그것을 단순한 3D 도형이 아닌 '캐릭터'로 인식하기 시작합니다. 이런 변화는 예상보다 훨씬 매력적이었습니다. 제가 실무에서 UX/UI를 작업할 때도 작은 움직임이나 반응 속도 하나가 사용자 경험에 미치는 영향이 엄청나다는 걸 깨달을 때가 많은데, 이 아바타 프로젝트는 그 중요성을 다시 한번 상기시켜줬죠.
어느 시점에는 대부분의 사용자가 의식적으로 알아채지 못할 아주 미세한 제스처 타이밍을 조절하는 데 비정상적으로 많은 시간을 쏟기도 했습니다. 하지만 이게 바로 인터랙티브 시스템의 마법이 아닐까요? 눈에 보이지 않는 작은 디테일들이 사실상 핵심 역할을 하니까요.
아키텍처 또한 조용히 더 흥미로워졌다
첫 번째 버전이 '일단 돌아가게 만드는 것'에 초점을 맞췄다면, 두 번째 버전은 '오케스트레이션(orchestration)'에 가까워졌습니다. 이제 씬(scene)은 다음을 처리합니다.
- 대화 순서 제어 (dialogue sequencing)
- 애니메이션 조정 (animation coordination)
- 배경 전환 (background switching)
- 음악 제어 (music control)
- 표정 타이밍 (expression timing)
- 반응형 레이아웃 (responsive layouts)
- 의상 전환 (costume switching)
- 분기형 인터랙션 (branching interactions)
이런 복잡성 때문에 하드코딩(hardcoding)은 빠르게 의미를 잃었습니다. 여기저기 거대한 조건문 체인(chain)을 덕지덕지 붙이는 대신, 대화 자체가 구조화된 데이터가 되었죠. 각 대화 항목은 누가 말하는지, 어떤 애니메이션이 재생될지, 어떤 표정이 나타날지, 그리고 타이밍은 어떻게 가져갈지 모두 알고 있습니다. 덕분에 시스템은 스파게티 코드로 변질되지 않으면서도 확장하기 훨씬 쉬워졌습니다. 아이러니하게도, 프로젝트가 더 재미있어질수록 깔끔한 시스템 사고(system thinking)의 중요성도 커졌다는 걸 느꼈습니다.
가장 웃긴 버그들은 언제나 애니메이션 관련이었다
아마 아바타 작업을 오래 하다 보면 필연적으로 끔찍한 일이 벌어진다는 불문율이라도 있는 것 같아요. 아니라면 지금이라도 만들어야 할 지경이죠. 여러 차례 다음과 같은 기상천외한 버그들을 만났습니다.
- 팔이 인간이 알 수 없는 차원으로 뒤틀리기도 했고,
- 눈 깜빡임 기능이 고장 나 저승사자 같은 아바타가 되기도 했습니다.
- 제스처 전환이 격렬하게 뚝뚝 끊어졌고,
- 한 애니메이션은 중간 자세에서 멈춰 마치 캐릭터가 삶을 포기한 듯 보였죠.
솔직히 사이드 프로젝트에서나 경험할 수 있는 고전적인 버그 퍼레이드였습니다.

하지만 이상하게도, 이런 순간들이 프로젝트의 가장 기억에 남는 부분 중 일부가 되었습니다. 왜냐하면 버그를 하나씩 해결할 때마다 아바타가 조금 더 실제처럼 느껴졌으니까요.
이 모든 와중에, @webdeveloperhyper는 훨씬 더 큰 무언가를 만들고 있었다
솔직히 이 부분이 제가 가장 존경하는 지점입니다. 우리가 이 협업 프로젝트로 실험에 몰두하는 동안, WDH는 'AI 아바타'라는 훨씬 더 큰 무언가를 개발하고 있었습니다. 이 AI 아바타는 VS Code와 크롬 확장 프로그램으로, VRM 아바타가 AI 활동에 반응하고, 작업하는 동안 애니메이션을 재생하며, 커서를 추적하고, 표정을 트리거하고, 말풍선으로 대화하는 등, 말 그대로 당신 옆에서 작고 엉뚱한 코딩 친구처럼 존재합니다.
흥미로운 점은 이게 영혼까지 최적화하려는 듯한 지나치게 기업적인 'AI 생산성' 도구처럼 느껴지지 않았다는 겁니다. 오히려 매우 장난스럽고 유쾌한 느낌이었죠. 인터랙티브 캐릭터를 진정으로 좋아하고, 기술이 좀 더 생생하고 개인적인 경험을 주기를 바라는 사람이 만든 것 같았습니다. 그리고 그런 마인드가 자연스럽게 우리 협업 프로젝트에도 스며들었다고 생각합니다. 작은 인터랙션 디테일, 반응성 아이디어, 애니메이션 처리 개선, 그리고 실험적인 사고방식 대부분이 이런 시스템들을 끊임없이 탐구하는 과정에서 나왔습니다.
이런 경험들은 협업이 왜 그렇게 중요한지를 다시금 일깨워줬습니다. 단순히 작업량을 나누는 것을 넘어, 서로의 '생각 방식'을 공유하게 되니까요.
프로젝트는 뜻밖에도 '작은 엔진'이 되었다
이 모든 과정을 통틀어 가장 기묘한 깨달음이었을 겁니다. 어느 순간 우리는 '아바타 두 명이 이야기하게 만드는 중이야'라고 생각하는 것을 멈추고, '잠깐… 이거 거의 재사용 가능한 인터랙션 시스템이 되어가고 있잖아?'라고 인지하기 시작했습니다. 이제 이 시스템에는 다음과 같은 기능들이 들어있죠.
- 분기형 대화 (branching dialogue)
- 모듈식 애니메이션 로직 (modular animation logic)
- 재사용 가능한 씬 오케스트레이션 (reusable scene orchestration)
- 동적인 반응 (dynamic reactions)
- 설정 가능한 배경 (configurable backgrounds)
- 오디오 시스템 (audio systems)
- 반응형 UI 동작 (responsive UI behavior)
그리고 갑자기 우스꽝스러웠던 작은 사이드 프로젝트가 의심스러울 만큼 확장 가능성이 보이는 거죠. 이런 식으로 사이드 프로젝트가 예상치 못한 방향으로 확장되는 걸 실무에서 여러 번 겪었는데, 이 지점이 항상 '위험한' 단계로 진입하는 순간입니다. 마치 작은 씨앗이 거대한 나무로 자랄 가능성을 품는 것처럼 말이죠.

하지만 솔직히, 가장 좋았던 건 과정 그 자체였다
물론 실제 코드는 중요합니다. 하지만 제가 가장 기억할 부분은 아마도 이런 것들일 겁니다.
- 주말에 불쑥 시작된 디버깅,
- 시간대를 넘나드는 비동기 대화,
- 서로 주고받았던 수많은 스크린샷들,
- 그저 재미있을 것 같다는 이유로 시도했던 엉뚱한 아이디어들,
- 그리고 서서히 인격을 얻어가는 아바타들을 지켜보는 경험까지요.
이런 감정은 구조화된 환경에서는 재현하기 어렵습니다. 로드맵 압박도, 이해관계자 회의도, '비즈니스 가치 정렬' 같은 거창한 목표도 없었습니다. 오직 순수한 호기심만이 프로젝트를 앞으로 나아가게 했죠. 솔직히 말해서, 아마도 이것이 사이드 프로젝트가 늘 재미있는 이유가 아닐까요?
다음 단계는 어디로 향할까
지금 이 V2 버전도 여전히 시작점에 불과하다고 느껴집니다. 벌써 머릿속에는 다음과 같은 아이디어들이 떠다니고 있습니다.
- 인터랙티브 스토리텔링 (interactive storytelling)
- 사용자 트리거 반응 (user-triggered reactions)
- 분기형 씬 (branching scenes)
- 미니 게임 (mini-games)
- 동적인 대화 (dynamic conversations)
- 더욱 표현력 풍부한 캐릭터 (more expressive characters)
아니면 어쩌면 완전히 다른 방향으로 흘러갈 수도 있겠죠. 이 시점부터는 프로젝트가 어디로 향할지 예측하려는 시도를 멈췄습니다. 만들면서 발견하는 것이야말로 가장 즐거운 부분이거든요.
직접 경험해보고 싶은 분들을 위해
스스로 직접 경험해보고 싶은 분들을 위해 WDH가 공개 버전을 공유했습니다.
솔직히, 이걸 가지고 뭔가 엉뚱하고 기발한 걸 만들어낸다면 저희에게 꼭 알려주세요. 그런 아이디어들이 보통 최고의 결과로 이어지니까요!
원문: https://dev.to/itsugo/two-dev-users-two-countries-one-weird-little-avatar-project-3gd3 수집일: 2026-05-14 01:55:27