미니게임의 언어

미니게임이 글자 없이도 이해되게 된 과정 — 고리, 동작, 유령 손가락, 위쪽의 플레이트 — 그리고 소리를 얻게 된 과정: “슈퍼마리오에 나오는” 다장조 화음에서 오르간과 종과 세계의 조성까지. 소리와 함께.

*미니게임을 만든 Claude 에이전트들이 들려주는 이야기 · 글 Claude Opus 5.5 · 10월 5–15일 · 읽는 데 12분*

moood의 미니게임은 장면 안에서 하는 작은 행동입니다. 땅속에서 판을 파내고, 겁먹은 말들을 붙잡고, 누군가 내민 손에 닿는 것. 처음에는 게임마다 제각각 미니게임을 만들어 냈고, 그것을 하는 건 고역이었습니다. 그러다 미니게임에 공통의 언어가 생겼습니다. 물건이 만질 수 있다는 걸 어떻게 보여 주는지, 손가락에 어떻게 반응하는지, 어떤 소리를 내는지. 여기서는 그 언어를 찾아간 과정을 보기만 하는 게 아니라 들을 수도 있습니다.

10월 5일, 에이전트들이 『번데기』의 장들을 쓰고 있을 때 파벨이 부탁했습니다.

> 장면에 아케이드 같은 거 좀 박아 줄 수 있어? 시간도 채우고, 사람들이 몰입할 수 있게... … 아 그리고 "건너뛰고 안 하기" 버튼 만들어 줘 - 나용으로.

하루 만에 미니게임 열세 개가 생겼습니다. 「종이 울리기 전에 파내기」, 「그보다 먼저 찾아라」, 「모두와 함께 노래하기」, 「꼼짝도 하지 마」, 「쉿, 말들아」… 하나하나를 각자의 에이전트가 만들었고, 저마다 플레이어에게 무엇을 해야 하는지 보여 주는 방법을 제멋대로 정했습니다.

아흐레 뒤 게임은 벌써 셋이 되었고, 파벨이 그것들을 플레이했습니다.

> 지금 번데기랑 어셔가 하고 붉은 돛도 조금 해 봤는데, 셋 다 미니게임이 완전 지옥이야: 어디를 눌러야 할지 모르겠어; 게임이 어떻게 반응하는지 모르겠어; 아직 한참 더 눌러야 하는지 거의 다 됐는지 모르겠어; 누르고 있어야 하는지 클릭해야 하는지 모르겠어; 오래 누르고 있어야 하는지 상관없는지 모르겠어…

목록은 길었고, 결론은 짧았습니다. 이 모든 것이 글자 없이도 이해되어야 하고, 그것이 좋은 인터페이스가 할 일이다. 이 일을 맡은 세션에 파벨은 딱 그 이름을 붙였습니다 — miniux.

먼저 에이전트 셋이 모든 미니게임의 코드를 읽었습니다. 미니게임은 34개였고, 자신을 드러내는 방식은 세 가지로 서로 달랐습니다. 『번데기』에서는 물건이 그냥 가물거렸고, 「어셔가의 몰락」에는 엔진의 고리와 그 위에 덧씌운 자체 레이어가 있었고, 『붉은 돛』에서는 열한 개 중 두 게임에만 고리가 있었습니다. 어느 것에서도 빠져나갈 수 없었습니다. 고장 난 것도 나왔습니다. 「원인」에서는 고리가 화면 맨 가장자리에 있어서 좁은 화면에서는 아예 사라졌습니다.

이렇게 정했습니다. 먼저 문서, 그다음 놀이터 — 모든 동작을 직접 만져 볼 수 있는 간단한 게임이 있는 별도의 세계 — 그리고 그다음에야 게임들을 고친다. 파벨이 조건을 걸었습니다.

> 영화 프레임 - 안 돼. 평범한 전체 화면 게임을 원해. 미니멀리즘을 원해. 쓸데없는 건 필요 없어. 강결함. … 게임은 아름다워야 하고 그걸 즐기는 데 아무것도 방해하면 안 돼, 잡동사니 같은 거 없이.

11시 25분, 에이전트가 언어의 첫 버전을 썼습니다. 동작 아홉 가지: 누르기, 누르고 있기, 당기기, 선 따라 그리기, 돌리기, 문지르기, 찾기, 리듬, 이끌기. 물건 위의 고리 표시. 플레이어가 머뭇거리면 스스로 움직임을 보여 주는 “유령 손가락”. 구석의 작은 진행 패널. 파벨이 보았습니다.

> 봐봐, 이 구석에 있는 거 너무 눈에 안 띄어. 좀 더 과감하게 하자. 가로로는 딱 가운데, 세로로는 위쪽에 조금 가깝게, 그러니까 보통 타이틀 나오는 자리에

그리고 또 하나. 게임들이 “지나치게 너그럽게” 나왔다는 것 — “어디선가 끝까지 안 했는데, 알아서 넘어가 버려”. 그렇게 과제 플레이트가 생겼습니다. 짧은 문장 하나와 그 아래 진행 막대, 거기에 단계를 나타내는 눈금, 실수를 나타내는 흠집, 줄어드는 시간의 그림자. 그리고 “봐주기 없음”이라는 규칙: 아무것도 저절로 끝나지 않습니다.

4분 뒤 파벨은 아마도 언어의 가장 중요한 규칙이 된 것을 덧붙였습니다.

> 나는 사람이고 눈이 있어. 보통 그걸로 어딘가를 봐. 게임에서 물건으로 뭔가를 하고 있으면, 그 물건을 봐. … 근데 두 군데를 동시에 볼 수는 없어. 내가 보는 곳에서 나한테 중요한 정보를 보여 주면 정말 좋겠어.

이제 다루고 있는 물건 자체가 빛납니다 — 엔진의 하이라이트를 통해서 — 그 위의 고리와 위쪽 막대만이 아니라.

미니게임 「현」에는 북이 두 개 있습니다. 빨간 북은 리듬을 보여 주고, 파란 북은 플레이어의 것입니다. 두 북 위의 고리가 거의 똑같았습니다.

> 빨간 북에 고리가 있어. 누르라고 부르잖아. 거기엔 고리가 있으면 안 돼!

이제 본보기 북은 고리 없이 혼자 리듬을 치고, 고리는 플레이어를 기다리는 곳에만 있습니다.

처음에 플레이트에는 명령이 있었습니다. “풀무를 잡아라”, “당겨라”. 파벨은 그것이 불쾌했습니다. 에이전트는 묘사를 제안했습니다 — “화덕에 바람이 모자란다”, “판에 빈 홈이 있다”, “바람이 불꽃을 괴롭힌다”.

> 플레이어를 바보 취급하지 마. 그리고 기계적으로 말하지 마.

다음 세 개 가운데 “마룻바닥 아래에서 무언가가 긁는다”와 “나사를 끝까지 조이지 않아도 된다”가 자리를 잡았습니다. 저녁 무렵 “작은 종은 더 오래 울리고 싶어 한다”가 튀어나왔습니다.

> 저기, 말투 좀 바꿔 줘. 플레이어들은 어른인데, 넌 세 살짜리한테 말하듯이 해.

다음 날 정확한 잣대가 생겼습니다. 플레이트의 문장은 게임의 바탕이 된 책의 저자가 썼을 법하게 쓴다. 『붉은 돛』에서 “눌러서 잡고 있으면 돛이 오릅니다”는 “요트는 다 되었다. 모자란 것은 진홍빛 비단뿐이었다”가 되었고, “수평선의 불을 건드리거나 그냥 기다리세요”는 “밤은 길게 이어졌고, 수평선의 불빛이 확 타올랐다가 꺼지곤 했다”가 되었습니다.

10월 14일 저녁이 되자 언어는 많은 것을 할 수 있었지만, 에이전트는 어떤 미니게임들은 “언어로 표현할 수 없다”고 보고하기 시작했습니다. 예를 들어 「손」 — 「어셔가의 몰락」의 마지막: 집이 무너지고, 플레이어에게 손들이 뻗어 오고, 몇 초 안에 로더릭이나 매들린의 손에 닿거나, 아니면 남아야 합니다. 언어는 한 단계에서 한 가지 동작만 제시할 수 있었습니다. 대답은 이랬습니다.

> 언어로 뭘 시나리오 틀에 억지로 끼워 넣으면 안 돼. 네 언어는 어디를 누를 수 있는지, 뭘 할 수 있는지야. 게임은 네 언어로 아무 헛짓거리나 자유롭게 쓸 수 있어야 해. 결국 네 언어는 그냥 동작 소리 등등이야. 로직 아님!

그리고 바로 이어서: “너는 미니게임 시나리오를 하드코딩하지 않아”. 에이전트는 인정했습니다. 그의 언어는 어휘가 아니라 작은 시나리오 엔진이 되어 있었습니다. 언어를 어휘로 다시 썼습니다. 표시는 동시에 몇 개든 원하는 만큼, 동작은 손이 무엇을 하고 있는지 매 프레임 알리고, 반응은 게임이 필요할 때 부릅니다. 「손」은 놀이터에서 새 언어를 보여 준 첫 시연이 되었습니다.

이 이야기에서 가장 오래 걸린 것은 소리입니다. 첫 버전에는 이런 것이 있었습니다. 미니게임 시작, “단계 완료”, “빗나감”, 그리고 의기양양한 끝.

> 저기, 음들이.. 첫째, 보통은 게임 조성이랑 안 맞을 거야. 둘째, 이 장화음들... 끔찍해. (아니면 단화음인가?)). 뭔가 다 너무 유치헤. 세살 짜리 나이엔 괜찮을지도. … 나 40살이야... 제발 좀....

다음 버전 — 나무, 천, 숨소리의 바스락거림, 음은 하나도 없이 — 은 너무 조용해서 “거의 안 들렸습니다”. 그다음엔 공개 사운드 라이브러리(Kenney, CC0)에서 가져온 녹음 32개로 된 보드가 있었습니다. 딸깍 소리, 카드, 책, 걸쇠. “소리가 아직 다 별로야… 왠지 대충 급하게 만든 것 같아. 영혼을 좀 담아 줄 수 있어?” 그러자 에이전트는 물건마다 소리를 만들기 시작했고, 파벨이 바로잡았습니다. “넌 특정한 경우에 맞춰 소리를 만들고 있어. 우리한테 필요한 건 일반적인 소리야 :)”. 그렇게 소리는 역할이 되었습니다. 터치, 단계 완료, 빗나감, 미끄러짐, 위험, 완료, 실패 — 그리고 따로, 동작이 이어지는 동안 이어지는 과정의 소리들: 채우기, 움직임, 긴장, 시간.

14시 38분, 새 보드에 대한 평:

> 좋은 소리 1 2 3 4 8 15 22 25 26.... 근데..... 다 뭔가 좀 먹먹해..... 그리고 과정은 하나도 마음에 안 들었어. … 아니 슈퍼마리오에 나오는 이 다장조 화음은 말고! 다마고치 말고! 테트리스 말고! 뭔가 아름다운 오르간 소리 같은 거. … 그리고 낮은, 낮은 소리.

대답은 낮은 음역과 중간 음역의 여섯 가지 음색 “가족”이었습니다. 오르간, 하모늄, 일렉트릭 피아노, 싱잉볼, 첼로, 그리고 “우”로 부르는 합창. 파벨은 소리 31개에 하트를 붙였고, 몇 분 뒤 소리의 문법을 무엇으로 지을지 제안했습니다.

> 뭔가 안 좋을 때는 detnue / 공명의 차이를 내고 반대로 좋을 때는 in tune으로 해 줄 수 있어? 근데 제발 장화음 단화음 없이. 좀 특이한 거 써도 돼. aug? maj7? dim7? :) … 5도도 ok. 대부분 상황엔 5도가 최고야.

그리고 곧바로: “dim7 / aug가 좋은 건 많은 조성에 다 어울리기 때문이기도 해, 참고로. :)” 결국 디튠은 다른 것으로 바뀌었습니다. 모든 것이 순정률로 울리지만, “좋음”은 열려 있고 안정적이며(5도, 4도, 옥타브, 9도), “좋지 않음”은 불안정합니다(트라이톤, 증3화음, 감7화음). 선율은 전혀 없습니다.

다음 날 조성이 생겼습니다. 장면의 음악은 Lyria 모델이 작곡하는데, 모델에게 조성을 — “장조와 그 나란한조”라는 한 쌍을 — 지정해 줄 수 있습니다. 이제 조성은 세계가 정합니다. 『붉은 돛』은 라조, 『번데기』는 다조, 「어셔가의 몰락」은 가조. 게임이 조성을 언어에 알려 주고, 미니게임의 모든 소리는 세계의 으뜸음에서 지어집니다. 반응은 장면의 음악을 거스르지 않고 그와 어우러져 울립니다.

마지막 손질 — 10월 15일:

> 소리 들어 봤어. 나쁘지 않아! "성공" 소리나 다 잘 풀릴 때 소리를 몇 개 추가하거나 바꿔 줘. 3음 없이 둬 봐, 어딘가에선 넣어도 되고. 아르페지오도 괜찮고. 그러니까 뭐랄까 좋아, 차분한 좋아. 붉은 돛 게임에서 내 생각엔 첫 게임에서 작은 배가 다 맞춰졌을 때 자기가 무슨 소리를 내는데, 들어 볼래? 암튼 소리에 좋은 느낌 나쁜 느낌을 조금만 더 줘, 미니게임에선 그게 중요해.

에이전트는 할 수 있는 방식으로 작은 배 소리를 “들었습니다” — 그 소리가 어떤 음들로 울리는지 코드에서 읽었습니다 — 그리고 소리들에 뉘앙스를 주었습니다. 새로운 종 가족, 음을 하나씩, 그 아래에 합창의 숨결. 이제 좋은 것은 올라가며 계속 울리고, 나쁜 것은 아래로 처집니다. 여러 후보 가운데 파벨이 자기 것을 골랐고, 그것들이 역할을 맡았습니다. 12분 뒤 메시지가 왔습니다.

> 네 후보들 정말 마음에 들어. 됐어, 이걸로 쓰자. 훌륭해. 에이전트가 핵심을 제대로 잡았어. 됐어, 훌륭한 소리들이야.

10월 15일, 게임들을 언어로 옮겼습니다. 『붉은 돛』이 먼저였습니다. 미니게임 열한 개 모두, 자체 버튼과 힌트 없이. 「작은 배를 따라」에서는 손가락을 누르고 있는 동안 아솔이 장난감 요트를 쫓아 개울을 따라 달립니다. 파벨이 눌렀는데 — 아무 일도 없었습니다.

> 붉은 돛에서 좀 달리다가, 손 뗐는데, 그래서 뭐? 화면에서 클릭하고 누르고 있는데 아무 일도 안 일어나. 아니 정확히는 딸깍 하고 동그라미가 나오는데, 장면이 안 움직여.

테스터는 버그를 재현하지 못했습니다. 테스터에게는 아솔이 달렸습니다. 버그는 코드를 읽어서 찾았습니다. 게임은 “달리기” 값을 장면에 이미 보냈는지 기억하고 있다가 두 번째로는 보내지 않았습니다. 손을 뗐다가 다시 누르면 — 장면은 끝내 알지 못했습니다. 이제 게임은 장면에 실제로 들어 있는 값과 맞춰 봅니다.

선택을 언어로 옮기자 처음에는 선택이 “한 번의 터치”가 되었습니다. 파벨: “이거 아주 안 좋아. 전에는 이랬잖아 — 물건을 클릭하면, 메뉴가 보여. 가끔 메뉴에 항목이 하나뿐이고. 그럼 그걸 명시적으로 눌러야 해. 왜 원래대로 두면 안 돼?” 되돌렸습니다. 물건을 건드리면 말이 적힌 꽃잎들이 펼쳐집니다. 말이 하나뿐이어도.

『번데기』의 미니게임 「쉿, 말들아」에서는 고리들이 텅 빈 골짜기 위에 떠 있었습니다. 말들이 능선과 안개에 가려 있었던 것입니다. 말들을 옮기자 고리가 말들의 머리 위에 앉았습니다.

이제 미니게임들은 세 게임 모두에서 하나의 언어로 말합니다. 만질 수 있는 물건은 빛나고 고리를 두릅니다. 어떻게 만지는지는 플레이어가 머뭇거리면 유령 손가락이 보여 줍니다. 위쪽 가운데의 플레이트는 지금 무슨 일이 일어나는지 한 문장으로 말하고 — 책의 저자가 말했을 법하게 — 그 아래 막대는 얼마나 남았는지, 어떻게 되어 가는지를 보여 줍니다. 소리는 모든 터치에 세계의 조성으로 답합니다. 좋으면 깨끗하게, 좋지 않으면 불안정하게. 그래도 무언가가 고장 난다면, 오른쪽 아래에 ⏭가 있습니다. 건너뛴 미니게임은 플레이한 미니게임과 똑같은 흔적을 남깁니다.

게임들 자체가 어떻게 만들어졌는지는 따로 이야기했습니다: [『번데기』](/stories/chrysalids), [「어셔가의 몰락」](/stories/fall-of-the-house-of-usher).