무협 음성 조작 멀티플레이 웹게임 — NHN nan2026 해커톤(8/10 마감)까지 닷새. 지난 회차 이후 열흘 동안 가장 많은 것이 바뀌었다. 주제별로 묶어 적는다.
게임을 켜면 이제 관상가가 세 가지를 묻는다. "낯선 마을에 도착하였소. 먼저 무엇을 하시오?" / "동무가 위험에 빠졌소" / "혼자 있는 시간은 어떠하오?"
세 답을 모아 AI가 한 번만 판정해 어울리는 캐릭터와 성향을 함께 골라준다. 질문마다 부르면 대기가 세 배가 되니까.
세계 반경을 ±88에서 ±132로 넓히고 나무·바위를 그만큼 더 심었다. 그런데 넓히고 나니 마을에서 서당까지 걸어서 16초였다.
미니맵을 누르면 큰 지도가 열리고, 아무 곳이나 누르면 그곳으로 간다. 화면이 어두워졌다 밝아지면 도착해 있다. 음성으로도 된다 — "서당 가자", "사냥터로".
지역 이동, 지도, 후원, 부재중, 도움말("뭐 할 수 있어?"), 소리 켜기·끄기, 내 상태, 그리고 앉기·눕기·팔굽혀펴기·점프까지. 새 동작 네 가지는 이미 받아두고 안 쓰던 애니메이션 팩에서 꺼내 썼다 — 추가 다운로드 0.
그런데 정작 중요한 걸 이때 발견했다.
2탭으로 멀티플레이를 테스트하다 알았다. 옆 사람에게 건넨 인사가 '사냥'이라는 단어 하나 때문에 연속 사냥 명령으로 실행되고 있었다. 대화가 명령에 잡아먹히니 "다른 캐릭터와 대화가 안 된다"는 느낌이 들 수밖에.
대화체를 명령보다 먼저 구분하게 고쳤다. 물음표가 있거나, 의문형 어미로 끝나거나, 16자를 넘는 문장은 명령으로 실행하지 않고 그대로 전달한다. 이제 "오늘 날씨 참 좋네요, 같이 다니실래요?"는 상대 캐릭터 머리 위에 말풍선으로 뜬다.
이번 회차에서 가장 마음에 드는 변화다.
"바른말 고운말"은 지금까지 절반만 만들어져 있었다. 거친 말을 "왕자님"으로 바꾸는 쪽만 있고, 좋은 말에는 아무 반응이 없었다.
유대가 오를 때 이유도 함께 뜬다. "💗 고운 말이 오갔다 — 유대 +2". 왜 올랐는지 보여야 규칙을 배운다.
나쁜 말은 유머로 바꾸고, 고운 말은 관계로 돌려준다. 이제야 컨셉이 닫혔다.
만들면서 구멍도 하나 막았다. 규칙 보상에는 쿨다운을 뒀는데 AI가 주는 유대는 그 제한을 우회해서, "고마워"를 반복하면 계속 올릴 수 있었다. 두 경로를 한 곳으로 모았다.
렌더러 설정을 열어보고 놀랐다. 색 관리도 톤 매핑도 아예 꺼져 있었다. 잘 만든 에셋을 일부러 밋밋하게 출력하는 상태였던 것.
sRGB 출력 + ACES 톤 매핑 + **환경광(IBL)**을 켰더니 캐릭터에 반사광과 그림자가 생기며 완전히 다른 게임처럼 보였다. 하늘도 단색 배경에서 태양 위치에 연동된 진짜 하늘로 바꿨다.
다만 켜자마자 화면이 하얗게 날아갔다. 코드에 하드코딩한 16진수 색들이 sRGB 기준으로 고른 값인데 선형으로 취급되고 있어서였다. 변환을 넣고 노출·광량·태양 고도를 다시 잡아 지금의 오후 햇살이 됐다.
KayKit 건물 팩을 받아놓고 4종만 쓰고 있었다. 방앗간·망루·성벽·물레방아·폐광이 창고에서 잠자고 있었던 것.
장터 마을에 방앗간과 망루를 세우고, 요괴가 오는 남쪽에 성벽과 성문을 놓았다. 침엽수림엔 물레방아와 다리, 사냥터엔 폐광과 바위산, 가을숲엔 제재소.
세우고 나니 두 가지가 어색했다 — 캐릭터가 성벽을 통과해 걸어가고, 덤불이 성벽을 뚫고 자랐다. 충돌 처리와 소품 금지 구역을 넣어 해결했다. 이제 성벽은 막고, 성문으로는 지나간다.
구매해도 아무 일도 안 일어나 보이던 문제 — 알고 보니 은자 팝업·채팅·배너가 전부 상점 창 뒤에 가려져 있었다. 구매하면 상점을 닫고, 금색 배너를 띄우고, 캐릭터가 환호하고, 집이 땅에서 솟아오르게 했다.
모바일 성능 — GPU 비용을 재보니 그림자와 해상도가 절반 가까이 먹고 있었다. 모바일 품질 티어를 만들어 42% 회수했다. 그 과정에서 더 큰 걸 발견했는데, 코드 전체에 dispose() 호출이 하나도 없었다. 타격 한 번에 파티클 10개가 영구히 쌓이는 구조였다. 지오메트리를 공유하고 수명이 끝나면 해제하도록 고쳤다 — 19초 연속 전투에도 이제 완전히 고정된다.
요괴가 몸을 뚫고 들어오던 것 — 1.1유닛까지 파고들어 머리가 캐릭터를 관통했다. 간격을 1.75로 벌리고 요괴끼리도 서로 밀어내게 했다.
집에 들어갈 수 있게 됐다. "집에 들어가자" 하면 화면이 어두워지며 들어가고, 쉬는 동안 체력이 회복된다.
5분 6장면 대본을 썼다. 사전 준비 체크리스트, 돌발 상황 대응표, 예상 질문 답변까지.
대본을 쓰면서 전 대사를 실제로 실행해봤는데 두 개가 안 됐다. "뭐 할 수 있어?"가 물음표 때문에 대화로 분류돼 먹통이었고, 갸웃 시연 대사로 잡았던 "빙글빙글 돌려줘"는 AI가 너무 똑똑해서 '앞으로 가라'로 해석해버렸다. 전자는 고치고, 후자는 뜻 없는 음절("우가우가 부바부바")로 바꿨다. 발표 중에 터졌으면 곤란했을 것들이다.
가장 중요한 장면은 장면 4로 잡았다. 거친 말은 웃음으로, 고운 말은 관계로, 헷갈리는 말은 배움으로 — 이 게임이 왜 만들어졌는지가 40초 안에 다 나온다.
남은 건 리허설뿐이다. 그리고 제출.
커밋: 112bae9(키보드) · 810c276(집 출입) · 71befbd(모바일 성능) · aa115d9(캐릭터 추천) · d96a090(초상) · 9746aa7(구매 연출) · 6be77fd(월드 확장·지도) · bf205b8(명령 27종·대화 분리) · bebe581(몹 겹침) · 3c5887c(데모 시나리오) · 425f1e8(화면 품질·건물) · 3d5cbeb(친근도 보상)