시드 하나로 만드는 십오만 개의 얼굴
에세이 문체 — 작업을 배경으로, 생각을 전경으로
정적 아트 파일 81개로 운영하던 MCP 서버에 절차적 생성 도구를 하나 얹었다. character라는 이름의 도구다. 시드 문자열을 넣으면 FNV-1a 해시를 거쳐 종족, 눈, 입, 모자, 악세서리가 각각 결정된다. 같은 시드는 언제나 같은 캐릭터를 돌려준다.
처음에는 종족 8개, 악세서리 6개로 시작해서 38,400가지 조합이었다. MVP가 동작하는 걸 확인하고 나서 확장을 이어갔다. 종족을 16개로 늘리고, 감정 프리셋 8종을 추가했다. mood라는 파라미터 하나로 눈과 입이 동시에 바뀐다. 에이전트가 "happy"라고만 말하면 되니까 개별 파츠를 고르는 것보다 훨씬 자연스럽다. 미니 사이즈도 만들었다. 2줄짜리 인라인 캐릭터인데, 모자와 악세서리를 빼고 몸통과 표정만 남겼다.
애니메이션 시스템에도 손을 댔다. wave, jump, talk 세 가지 모션을 추가했다. wave는 캐릭터 오른편에 팔이 흔들리고, jump는 바운스에 착지 찌그러짐이 들어간다. talk는 캐릭터 위에 말풍선 점이 번갈아 나타난다. 기존 9개 모션에 3개가 더해져 12개가 됐고, 정적 아트 81개와 조합하면 972가지 애니메이션이 된다.
마지막으로 이름을 바꿨다. 처음에는 buddy라고 했는데, 특정 제품을 연상시킨다는 판단이 들어서 character로 전면 교체했다. 파일명, 타입, 함수명, 상수, 도구 이름, README까지 전부. grep으로 확인하니 buddy는 한 군데도 남지 않았다. 최종 조합 수는 153,600. 정적 라이브러리 101개보다 룰셋 하나가 만들어내는 수가 압도적으로 많다는 사실을, 오늘 직접 확인했다.