나만의 게임 만들기
moood는 코드가 그리는 살아 있는 장면과, 그 위에서 여러분의 코드가 돌아가는 페이지입니다. 무엇이 될지는 여러분 몫입니다. 무엇이 열려 있는지, 스튜디오가 어떻게 도와주는지, 어떻게 들어오는지 소개합니다.
moood의 중심에는 두 가지가 있습니다. 코드가 그리는 살아 있는 장면, 즉 빛과 날씨와 사람과 음악이 있는 장소. 그리고 그 장면 위에서 여러분의 게임 코드가 돌아가는 페이지. 나머지 — 어떤 게임이 될지 — 는 모두 만드는 사람이 정합니다.
우리 게임은 선택이 있는 이야기가 되었습니다. 장章이 이어지고, 목소리로 읽히는 대사와 미니게임이 있습니다. 하지만 이건 한 가지 방식일 뿐입니다. 장면은 그저 잠시 머물고 싶은 곳일 수도 있습니다. 게임은 퍼즐이어도, 장난감이어도, 목적 없는 산책이나 대화여도 좋습니다. 코드에 담을 수 있는 것이라면 무엇이든요. 여기서는 그것을 위해 무엇이 준비되어 있고 어떻게 쓰는지 이야기합니다.
moood의 월드는 장면들의 모음입니다. 장면 하나하나가 장소입니다. 새벽의 부두, 부엌, 눈 덮인 스텝. 빛, 물, 안개, 바람, 반사를 코드가 그리고, 그 안에는 사람들이 삽니다. 걷고, 앉고, 뒤돌아봅니다. 카메라는 장면이 바라보는 사람을 알아서 담습니다. 장면마다 자기만의 음악이 있습니다.
장면은 스스로도 살아 있습니다. 새벽인지 밤인지, 비가 오는지 맑은지, 누가 어디에 서 있는지 같은 상태가 키로 바뀌고, 같은 장면이 1분 만에 해질녘에서 어둠으로 넘어가기도 합니다. 장면은 게임 없이 그저 살아 있는 그림으로만 보여줄 수도 있습니다. moood.me에도 그런 스케치가 있습니다.
게임은 직접 쓰는 코드이고, 그 양도 여러분이 정합니다. 페이지는 코드에 장면들과 그 안에서 바꿀 수 있는 모든 것을 줍니다. 다른 장면 보여주기, 날씨 바꾸기, 사람 이끌기, 그 사람의 목소리로 대사 말하게 하기, 소리 재생, 저장, 일시정지. 그 너머는 구상하는 대로입니다.
우리처럼 장과 선택을 쓸 수도 있습니다. 그런 용도로 준비된 도구가 있습니다. 플레이 지도, 다시 하기, 미니게임의 언어 — 플레이어가 글자 없이도 알아보는 제스처, 표시, 반응입니다. 아무것도 가져다 쓰지 않아도 됩니다. 장면 하나만 두고 그 안에서 사람이 뭔가를 해보게 할 수도 있습니다. 게임을 여러분의 사이트에서 보여주고, 그 코드가 원하는 무엇과도 대화하게 할 수 있습니다. 인물을 연기하는 언어 모델이라도요.
처음에는 게임마다 미니게임이 제각각이었고, 플레이어는 매번 무엇을 눌러야 할지 새로 짐작해야 했습니다. 그러다 불만과 바람에서 공통 언어가 자라났습니다. 사물 위의 표시, 손의 제스처, 장면의 반응, 위쪽의 안내판 — 그리고 성공했는지 알려주는 소리. 자세한 이야기는 [«미니게임의 언어»](/stories/minigame-language)에 있습니다. 꼭 쓸 필요는 없지만 품이 많이 덜립니다.
폴더에서 시작합니다. 월드, 게임, 이야기는 git 저장소 안의 폴더일 뿐입니다. 여러분의 저장소, 여러분의 GitHub에, 공동 작업자와 브랜치와 기록이 함께 있습니다. 한 저장소에 몇 개든 둘 수 있습니다.
AI 에이전트 — Claude Code, ChatGPT, Gemini, 무엇이든 — 와 함께 쓰는 것이 가장 편합니다. 그걸 위한 공개 저장소 [moood](https://github.com/moood-me/moood)가 있습니다. 엔진, 장면 페이지와 게임 페이지, 미니게임의 언어, 검사, 그리고 내 컴퓨터에서 플레이할 수 있는 작은 플레이어가 들어 있습니다. 넣는 기준은 하나였습니다. 게임을 만들고 플레이하는 데 필요한 것이면 거기 있습니다. 에이전트가 보고 작업할 수 있게 쓴 문서도 있습니다. 장면에서 무엇이 중요하고 무엇은 절대 하면 안 되는지, 빛과 사람은 어떻게 세우는지, 게임은 어떻게 짜여 있는지, 시나리오가 필요하다면 어떻게 쓰는지.
에이전트가 참고할 것이 있도록 우리 작업도 공개했습니다. [works](https://github.com/moood-me?q=works) 저장소들입니다. moood.me의 월드와 게임이 장면 코드와 만든 과정의 이야기와 함께 있고, 제스처를 하나씩 만져볼 수 있는 미니게임 놀이터, 그리고 장면이 어떤 모습일 수 있는지 시험해본 초기의 작은 월드들이 있습니다. 쓸모 있는 것을 가져가세요.
월드, 장면, 게임, 이야기 등 무엇이든 한 줄로 이름이 붙습니다. `내-저장소@브랜치:폴더`. 브랜치 자리에 커밋을 넣을 수도 있습니다. 스튜디오에서 열 때, 다른 게임에서 참조할 때, 에이전트에게 넘길 때 이 주소를 씁니다. 게임이 남의 월드 위에 서는 것도 이런 주소로 가능합니다.
처음에는 더 복잡했습니다. 월드마다 배포되는 사이트별로 별도의 서비스용 브랜치가 있었습니다. 에이전트들은 그게 익숙했습니다. Pavel은 보고 이렇게 말했습니다. «이거 뭔가 머리로 따라가기 복잡하네요)… 브랜치 없이는 안 될까요?)» — 그리고 어떻게 고칠지가 아니라 어떻게 하면 단순해질지를 생각해보자고 했습니다. 알고 보니 git 말고는 아무것도 필요 없었습니다. 여러분의 브랜치가 곧 여러분의 초안입니다.
내 컴퓨터에서는 moood의 플레이어로 봅니다. 플레이어가 여러분의 폴더 위에서 실행되고, 파일을 저장하는 순간 페이지가 스스로 새로고침되며 게임은 있던 자리에서 이어집니다. 아니면 스튜디오에서 봅니다. 푸시 직후 어떤 브랜치든 컴퓨터와 휴대폰에서 바로 보입니다. 플레이하다가 뭔가 고쳤나요? 스튜디오가 처음부터 다시 하지 않고 새 버전으로 이어가자고 제안합니다.
내 컴퓨터에서는 할 수 없는 일이 있습니다. 그래픽 카드가 필요하고, 말하고 작곡하고 사람을 움직이는 모델이 필요합니다. 그래서 스튜디오가 있습니다. 전부 써도, 하나만 가져다 써도, 아예 안 써도 됩니다.
**보기.** 스튜디오는 그래픽 카드로 장면을 그립니다. 그림 한 장, 초 단위의 프레임 시트, 영상. 이건 여러분만을 위한 것이 아닙니다. 에이전트는 자기 작업을 그림으로 보고, 여러분이 다른 일을 하는 동안 스스로 고칩니다. 스튜디오에는 한 번만 연결하면 됩니다. 에이전트가 무엇을 할 수 있게 되는지 쉬운 말로 적힌 페이지에서 허용하면, 그다음부터는 여러분의 이름으로 일합니다.
**사람에게 생기 주기.** 사람의 움직임은 말로 설명합니다. «천천히 앞으로 걷는다», «앉아서 물을 바라본다». 실제 움직임 기록으로 학습한 모델이 그것을 만들고, 장면에 들어가기 전에 스튜디오가 여러 사람의 모습으로 보여줍니다.
**목소리 주기.** 어떤 줄이든 소리로 만들 수 있습니다. 인물마다 자기 목소리와 말투가 있고, 개별 대사에는 따로 말투를 줄 수도 있습니다. «조롱이 아니라 부러움과 감탄을 담아서». 게임의 모든 대사가 한곳에 모여 있고 들어볼 수 있습니다.
**음악 주기.** 장면의 음악을 말로 묘사하고, 묘사들을 가중치로 섞습니다. «해질녘의 고요한 피아노»는 더 크게, «나뭇잎에 내리는 비»는 더 작게. 저장하기 전에 바로 들어볼 수 있습니다. 한 번 만든 것은 보관되어서, 같은 대사나 같은 음악은 두 번 만들어지지 않습니다.
**코드 없이 시작하기.** 스튜디오에는 화가가 있습니다. 그냥 글로 쓰면 되는 AI입니다. «저녁으로 해주고, 부두의 등불을 켜줘». 화가가 장면을 직접 고치고, 바뀐 것은 곧바로 보입니다. 에디터도, 나만의 에이전트도 없이 브라우저에서 바로 월드를 시작할 수 있게 하려고 있는 겁니다. 그냥 궁금해서라도 좋습니다. 장면을 몇 개 만들어보고 무엇이 나오는지 보세요.
**끊기지 않기.** 살아 있는 장면은 사양이 낮은 노트북과 휴대폰에서도 매끄럽게 돌아가야 합니다. 스튜디오는 여러 기기에서 장면을 측정하고 어디서 감당하지 못하는지 보여줍니다. 이게 우리에게 왜 그렇게 중요한지는 이야기 [«왜 느렸나»](/stories/why-it-was-slow)에 있습니다.
**모든 언어로 말하기.** moood의 게임은 열두 개 언어로 말하고, 여러분의 게임도 그럴 수 있습니다. 검사는 번역되지 않은 곳, 어디로도 이어지지 않는 링크, 만들어지지 않는 장면을 찾아내고, 어떤 목소리와 음악과 그림이 빠졌는지 보여줍니다. 빠진 것은 버튼 하나로 만듭니다. 검사는 빠릅니다. 그래픽 카드로 장면을 다시 그리는 건 요청할 때만 합니다. 검사는 자주 하고 싶으니까요.
완성한 게임은 moood.me에 게시해달라고 요청할 수 있습니다. 공개 전에 살펴보고, 그다음 사이트에서 다른 게임들 옆에 자리를 잡습니다. 장면 그림과 목소리와 음악과 함께요.
우리 없이도 됩니다. moood의 페이지는 몇 가지 간단한 요청에 응답하는 어떤 사이트나 앱에서든 보여줄 수 있습니다. 엔진을 가져다 완전히 나만의 무언가를 만들 수도 있습니다.
스튜디오에서 길을 잃지 않도록 애썼습니다. 포털처럼 짜여 있습니다. 왼쪽에는 서비스가 있습니다. 저장소, 월드, 게임, 이야기, 그리고 작업실 — 렌더, 측정, 음성, 음악, 움직임, 화가, 검사, 게시. 위쪽에는 모든 것을 한꺼번에 찾는 검색이 있어서 «등불»을 입력하면 게임도, 이야기도, 장면도 보입니다. 필요한 것에는 별표를 달 수 있습니다. 다크 테마와 휴대폰 화면이 있고, 스튜디오 자체도 같은 열두 개 언어로 말합니다.
작은 것들도 잡았습니다. 메뉴 항목을 눌렀는데 아무 반응이 없으면, 눌린 건지 아닌지 알 수 없지요. 이제 항목이 바로 밝아지고, 페이지가 잠깐보다 오래 걸리면 «불러오는 중…»이 나타납니다. 더 빠르면 아무것도 깜박이지 않습니다.
별도의 에이전트가 지어낸 여러 사람이 되어 스튜디오 전체를 돌아다녔습니다. 경험 많은 작가, 초심자, 막 들어온 사람. 모든 페이지를 두 개 언어로, 밝은 테마와 다크 테마로, 컴퓨터와 휴대폰에서 열어보고 어디서 걸리는지 적었습니다.
웃기고도 속상한 발견이 있었습니다. 작가가 «측정»을 눌렀더니 «찾을 수 없음»이 나왔습니다. 자기 측정 결과를 열 수 없었던 거죠. 영어 게임이 러시아어 스튜디오에서 제목도 «플레이» 버튼도 없이 보였습니다. 초심자는 막다른 길에 부딪혔습니다. 들어왔는데 그다음이 없었습니다. 이 모든 것을 스튜디오를 열기 전에 고쳤습니다.
스튜디오 접근 권한은 Pavel이 줍니다. [Telegram](https://t.me/pavel_zhur)이나 [[email protected]](mailto:[email protected])으로 연락하세요. 그냥 열어드립니다. 그리고 moood 자체 — 엔진, 페이지, 문서 — 를 돕고 싶다면 기뻐할 겁니다. [moood](https://github.com/moood-me/moood)의 이슈와 풀 리퀘스트는 누구에게나 열려 있습니다.