[Claude Code] AI 7개를 동시에 굴렸더니, '게임 만들기'가 '오락실 운영'이 됐다 (3주차)
📝 한줄 요약
1·2주차는 게임 하나를 붙들고 다듬는 이야기였다. 3주차엔 만드는 방식을 바꿨다. 게임마다 AI 세션을 하나씩 띄워 7개를 동시에 굴렸더니, 신작(바벨탑 쌓기)이 나왔고, 1주차에 테스트로 만든 테트리스가 이름과 타이틀을 갖고 졸업했고, 게임이 여러 개가 되자 그걸 담는 월드맵(성경 지도) 이 필요해졌다. 일하는 방식 → 신작 → 졸업작 → 지도, 하나가 다음을 불렀다.
바쁘시면 이것만 읽어도 돼요:
① 병렬 — 총괄 1 + 워커 6, 총 7개 세션 동시 진행. 규칙은 셋뿐: 자기 파일만 / 커밋은 한 명만 / 지시는 문서로
지시서엔 "하지 말 것"을 먼저 적었다 — 안 적으면 AI는 도와주려고 남의 파일을 고친다
② 신작 — 탭 하나로 쌓는 바벨탑 쌓기(BABELIZE). 삐져나온 만큼 잘려서 탑이 점점 좁아진다
이 게임은 잘해도 반드시 끝난다 — 바벨탑 이야기의 결말이 "하늘에 닿지 못했다"라서, 점수 무한 상승이 금지된 게임을 설계해야 했다
시그니처였던 '언어 혼잡' 연출을 통째로 들어냈다 — 만든 나조차 실기기에서 보고 버그인지 헷갈렸기 때문
③ 1주차 테스트작 졸업 — 첫 주에 "되나?" 하고 만든 테트리스에 손가락 제스처 조작 · 타이틀 이미지 · 이름을 붙였다
근데 "테트리스"는 등록상표라 쓸 수 없었다 →
LINEBREAK로 개명. 대신 숨기지 않고 능청스럽게 밝혔다④ 지도 — 게임이 늘자 목록으론 안 돼서 홈을 오버월드식 월드맵으로. 창세기 8개 이야기 = 노드 8개, 위→아래로 "애굽으로 내려가는" 방향
🎯 이런 분들께 도움돼요
AI 세션을 여러 개 동시에 굴려보고 싶은데 서로 꼬일까 봐 못 하고 있는 분
게임을 처음부터 새로 만들려는데 "재미"가 아니라 "난이도·끝맺음"에서 막힌 분
처음에 테스트로 만든 것이 그대로 방치돼 있는 분 (제스처 조작·타이틀·이름 붙이기)
유명한 게임을 따라 만들었는데 이름·상표가 걸리는 분
만든 게 여러 개로 늘어나서 담을 그릇이 필요해진 분
같은 지피터스 게임바이브코딩 스터디원
😫 문제 상황 (Before)
지난 2주는 만들어둔 게임에 그림·소리·랭킹을 붙이는 일이었다. 그런데 3주차에 들어서니 혼자인데 할 일이 여러 갈래가 됐다. 신작도 만들어야 하고, 기존 게임 두 개도 손볼 게 쌓였고, 그림도 필요하고, 다음 게임 기획도 밀려 있었다.
하나씩 순서대로 하면 앞의 것이 끝날 때까지 뒤는 멈춰 있다. 그래서 이번 주는 "무엇을 만들까"보다 "어떻게 여러 개를 동시에 굴릴까" 가 먼저였다.
🛠️ 사용한 도구
도구: 클로드 코드 (Claude Code) — 말로 요청하는 바이브코딩. 코드는 이번에도 직접 안 씀
모델: Claude Opus 5 (배경 아트 세션만 코덱스)
구성: 총괄 세션 1개 + 워커 세션 6개 동시 진행 (터미널 앱에서 세션 분할)
에셋: AI 이미지 생성으로 도트 로고·랜드마크·월드맵 제작 → 웹용으로 별도 경량화
PART 1. 어떻게 만들었나 — 게임마다 AI를 한 명씩
세션을 7개로 쪼갰다
혼자인데 할 일이 여러 갈래니, AI 세션을 일감별로 하나씩 띄웠다. 사람을 늘린 게 아니라 창을 늘린 것이다.
세션
하는 일
🎩 총괄 1
배분·통합·커밋·배포·결정 취합. 직접 코딩 안 함
🧱 워커 — 바벨
신작 쌓기 게임
🚢 워커 — 노아
실기기 레이아웃·리뷰 반영
🕹 워커 — 테트리스
모바일 제스처·8비트 사운드
🎨 워커 — 아트(코덱스)
월드맵 도트 배경
📐 워커 — 제품 기획
지도·수집 도감·진행 곡선 (커밋 금지)
🔑 워커 — 계정 구조
로그인·저장 설계
규칙은 세 개뿐
워커는 자기 파일만 만진다. 여러 게임이 공통으로 쓰는 파일(랭킹·상단 UI 같은 것)은 아무도 못 건드린다 — 총괄만.
커밋·배포는 총괄만 한다. 워커가 아무리 잘 만들어도 저장 버튼은 한 명만 누른다. 안 그러면 서로 덮어쓴다.
주고받는 건 채팅이 아니라 문서 파일.
OO_작업지시.md를 써서 넘긴다. 같은 폴더를 보고 있으니 파일만 저장하면 상대 세션이 바로 읽는다.
지시서엔 "하지 말 것"을 먼저 적었다
실제로 배경 아트 세션에 넘긴 지시서에는 이렇게 썼다.
배경 아트만. 화면 코드·게임 파일·공용 파일 건드리지 마.
먼저 시안 1장 보여주고, 방향 맞으면 전체 진행.
이게 없으면 세션들이 알아서 "도와주려고" 남의 파일을 고친다. 나쁜 의도가 아니라 친절이라 더 골치 아프다. AI를 여러 개 굴릴 때 정할 건 "뭘 시킬까"가 아니라 "경계가 어디까지인가" 였다.
💡 배운 점: 병렬로 굴리면 속도가 빨라진다기보다 기다리는 시간이 사라진다. 아트가 나오는 동안 게임 로직이 돌고, 그 사이 기획이 다음 걸 판다.
PART 2. 그래서 뭘 만들었나 — 신작 '바벨탑 쌓기'
규칙은 한 줄이다
벽돌이 화면 위에서 좌우로 왔다 갔다 한다. 탭하면 뚝 떨어진다.
탭 하나로 벽돌을 떨어뜨려 쌓는 게임 만들어줘.
아래 블록이랑 겹친 만큼만 남고, 삐져나온 부분은 잘려나가게.
그래서 어긋날수록 탑이 점점 좁아지게.
이 "삐져나온 만큼 잘려나감" 하나가 게임 전체를 만든다. 대충 놓으면 탑이 좁아지고, 좁아지면 다음 벽돌 놓기가 어려워지고, 결국 얹을 자리가 없어진다. 회전도 없고 줄 지우기도 없다. 테트리스보다 훨씬 단순한데 손은 더 떨린다.
지표는 점수가 아니라 FLOOR(층수) 다. 부제도 ONE MORE FLOOR — "한 층만 더"가 이 게임의 전부다.
이름은 사전에 실제로 있는 단어였다
게임 안에서 쓸 영문 이름을 후보 12개 놓고 고르다 BABELIZE 로 정했다. 지어낸 말이 아니라 1600년대부터 쓰인 실제 영어 동사로, 뜻이 "여러 언어를 뒤섞어 혼란스럽게 만들다" 이고 어원이 바벨탑 사건 그 자체다.
이름은 두 겹으로 쓴다. 바깥(오락실·지도)에선 한글 바벨탑 쌓기, 게임 안에선 BABELIZE. 아이들이 이야기 이름으로 찾고, 들어가면 게임 타이틀을 만난다.
😩 어려웠던 것 1 — 3층이나 300층이나 같은 화면이었다
베타를 붙여놓고 해보니 높이 올라가는 게임인데 올라가는 느낌이 없었다. 배경이 층수를 아예 안 읽고 있었다. "하늘에 못 닿는다"는 이 게임의 결말이 게임오버 문구에만 글자로 있었던 것이다.
지금은 3층이나 300층이나 배경이 똑같아. 하늘이 층수를 읽게 하자.
올라갈수록 하늘이 가까워지되, 100%엔 영원히 못 닿게.
화면 맨 위에 빛의 띠를 놓고, 탑 꼭대기와 그 띠의 간격을 층수에 따라 좁혔다. 대신 가까워지기만 하고 절대 닿지 않는 곡선을 썼다.
층
하늘 도달률
12층
50%
36층
75%
100층
89%
300층
96%
∞
100%엔 도달 불가
코드 안에는 "도달률이 100%에 닿으면 에러를 내라" 는 자체 점검까지 넣었다. 나중에 누가 숫자를 잘못 만지면 즉시 걸린다. 게임의 주제를 코드가 지키게 한 셈이다.
💡 배운 점: 이야기의 결말은 문구가 아니라 규칙으로 넣어야 전달된다. 글자로 쓴 결말은 아무도 안 읽는다.
😩 어려웠던 것 2 — 잘하는 사람은 영원히 쌓을 수 있었다
완벽하게 놓으면 좁아진 탑 폭이 조금 회복되게 해뒀는데, 36층쯤에서 속도가 상한에 걸리자 잘하는 사람은 무한히 쌓을 수 있는 상태가 됐다. 끝나지 않는 게임이 된 것이다.
흔한 해법은 방해다. 바람을 불게 하거나, 조작을 뒤집거나, 강제로 흔들거나. 근데 그건 벌처럼 느껴진다.
방해는 넣지 말자. 대신 높이 올라갈수록 회복량이 줄어들게 해줘.
낮은 층에선 티가 안 나고, 높은 층에선 회복이 거의 0에 수렴하게.
낮은 층에선 체감이 없고, 고층으로 갈수록 회복이 0에 수렴한다. 완벽하게 쳐도 언젠가는 끝난다. 조작을 방해하는 요소는 하나도 안 넣었다.
💡 배운 점: 좌절은 벌이 아니라 지평선이어야 한다. "방해를 넣는다" 대신 "회복이 서서히 줄게 한다" 로 바꾸니, 어려워지는데 억울하지 않았다.
😩 어려웠던 것 3 — 시그니처 연출을 통째로 들어냈다
기획 단계의 시그니처는 '언어 혼잡'이었다. 성경에서 바벨탑이 무너진 이유가 언어가 뒤섞여서니까, 8층부터 26층까지 화면의 안내 문구가 조금씩 뒤섞이게 만들어뒀다.
실기기에서 켜보고 물었다. "이거 버그야?" — 만든 쪽도 헷갈렸다.
들어낸 이유는 셋이다.
만든 사람도 헷갈리면 처음 하는 아이는 무조건 버그로 본다
성경에서 언어 혼잡은 한순간의 사건인데, 18개 층에 걸쳐 조금씩 섞는 방식은 원문과도 안 맞았다
조금씩 섞으니 체감도 없었다 — 애매하게만 이상했다
"나중에 한순간의 사건으로, 아니면 소리로 다시 만든다"고 적어두고 지웠다.
💡 배운 점: 기획 단계의 시그니처라도, 사용자가 버그로 의심하면 그건 실패한 연출이다. 애착이 아니라 반응으로 판단해야 한다.
😩 어려웠던 것 4 — 배경에 실제 건물을 넣어도 되나
"이만큼 높다"를 체감시키려 실제 건축물이 배경에 지나가게 하려는데 저작권이 걸렸다. 처음엔 겁이 나서 "실존 건축물 전면 금지" 로 잠갔다가, 과하다 싶어 기준을 고쳤다.
대상
판단
자연물(에베레스트)
✅ 저작권 개념 없음
고대 건축물(기자 대피라미드)
✅ 저작권 개념 이전
1886 년 자유의 여신상
✅ 보호기간 만료
2010년 완공된 현대 건물
❌ 회피
새 기준은 "자연물인가, 100년 넘었나" 딱 둘. 판단이 둘로 끝나니 랜드마크를 추가할 때마다 법률 검토를 다시 할 필요가 없다.
배치는 실제 높이를 층수로 환산했다(1층 ≈ 3m). 자유의 여신상 93m는 31층, 기자 대피라미드 138.8m는 46층, 에베레스트 8,848m는 2,949층 — 사실상 도달 불가능한 눈금이라 지나가지 않고 늘 저 위에 걸려 있다. (처음엔 "순서대로 16층씩" 나눠 배치했더니 에베레스트가 48층에 나타나서 눈금의 의미가 없었다.)
💡 배운 점: 막연히 다 금지하면 안전해 보이지만 게임이 밋밋해진다. 겁내서 잠그는 대신 판단 기준을 두 개로 줄이는 쪽이 실제로 쓸 수 있는 규칙이다.
PART 3. 1주차에 "되나?" 하고 만든 테트리스를 졸업시켰다
3주 전엔 테스트였다
1주차에 처음 만든 게 테트리스였다. "진짜 말 한마디로 나올까?" 를 확인하려고 만든 거라, 사실상 실험이었다. 키보드로만 되고, 폰에선 조작이 안 되고, 이름도 그냥 '테트리스'였다.
이번 주에 이걸 제대로 된 게임으로 졸업시켰다. 세 가지가 걸렸는데, 하나는 예상 못 한 거였다.
① 폰에서 손가락으로 되게
먼저 화면 아래에 버튼을 깔았다. 배치는 내가 종이에 그려서 넘겼다 — 회전 버튼을 정가운데 제일 크게, 좌우 이동은 양옆에, 하드드롭은 열을 따로 빼서 잘못 누르지 않게. 조작부를 화면 아래 28%에 몰아 엄지가 닿는 자리에 두고, 그 위 필드는 손가락이 닿아도 반응 안 하게 했다.
그런데 써보니 버튼보다 그냥 화면을 쓸어 넘기는 게 편했다. 그래서 기본값을 바꿨다.
손가락
동작
탭
회전
좌·우 절반 꾹
연속 이동
위로 밀기
하드드롭
아래로 밀기
빨리 내리기
버튼 조작은 지우지 않고 선택지로 남겼고, 고른 방식은 저장돼서 다음에 들어와도 유지된다.
숨은 복병도 있었다. 아이폰은 빠르게 두 번 누르면 화면이 확대된다. 게임에서 연타하면 계속 확대돼버린다. 이걸 막는 표준 설정이 있는데 사파리에선 그것만으론 안 막혔다. 결국 게임 영역의 터치를 직접 가로채는 방식으로 해결했다. (대신 손가락 두 개로 벌리는 확대는 살려뒀다 — 눈이 불편한 분들껜 필요한 기능이라.)
② 그런데 "테트리스"라는 이름을 못 쓴다
타이틀 이미지를 만들려다 알았다. "테트리스"는 등록상표다. 개인이 취미로 만든 걸 굴리는 것과, 로고를 만들어 내걸고 사람들을 불러 모으는 것은 다르다.
앞서 바벨탑 배경에서 현대 건축물을 뺀 것과 같은 기준을 적용했다 — 위험한 건 피하되, 게임은 살린다.
그래서 이름을 LINEBREAK 로 바꿨다. 이 단어는 두 가지 뜻이 겹친다. 줄바꿈(엔터) 이면서 줄을 깨뜨린다. 이 게임의 점수 지표가 LINES(지운 줄 수)라, 이름과 점수판이 같은 말을 하게 됐다.
대신 숨기지는 않았다. 오락실 카드 소개 문구에 이렇게 썼다.
클래식 낙하 퍼즐. 당신이 아는 그 게임 맞습니다.
이름은 못 씁니다, 아시죠? 🤐
몰래 비슷하게 흉내 내는 게 제일 안 좋다. "그 게임 맞는데 이름은 못 쓴다" 고 먼저 말하는 쪽이 정직하고, 읽는 사람도 웃는다.
③ 타이틀 이미지 — 이름의 두 뜻을 그림에 넣었다
로고를 AI로 만들면서, 이름의 두 뜻이 다 보이게 요청했다.
청록색 블록으로 LINEBREAK 글자를 쌓고,
호박색 줄 하나가 그걸 가로질러 지나가면서
아래로 조각이 부서져 떨어지는 로고.
블록으로 쌓은 글자 = 테트리스의 그것, 가로지르는 줄 = 줄이 지워지는 순간, 부서져 떨어지는 조각 = LINE + BREAK. 이 로고는 게임 타이틀 화면에도 걸리고, 오락실 카드의 커버 이미지로도 쓰인다.
만들 때 공식 로고·서체·색 배열은 참고하지 않았다는 걸 파일에 기록해뒀다. 상표를 피하기로 한 이상, 그림도 따라 그리면 의미가 없다.
여기에 다른 게임들과 같은 상단 UI(나가기·일시정지·소리·랭킹·의견보내기)를 붙였다. 이 게임만 그게 통째로 빠져 있었다 — 제일 먼저 만든 게임이라 그때는 그런 게 없었으니까.
💡 배운 점: 저작권·상표는 "겁내서 숨기기" 아니면 "무시하기" 둘 중 하나가 되기 쉽다. 세 번째 길이 있었다 — 피하되, 피했다고 밝히기. 오히려 그게 이야깃거리가 됐다.
PART 4. 게임이 늘어나자, 담는 '지도'가 필요해졌다
목록으로는 안 됐다
게임이 여러 개가 되자 카드 나열로는 안 됐다. 성경을 순서대로 훑는 게 목적인데, 카드가 늘어서 있으면 어디까지 왔는지가 안 보인다. 그래서 홈을 게임 오버월드식 월드맵으로 바꿨다. (마리오·캔디크러시의 그 지도)
창세기 8개 이야기를 노드 8개로. 천지창조 → 에덴 → 카인과 아벨 → 노아 → 바벨 → 아브라함 → 야곱 → 요셉. 지금 열린 건 노아와 바벨 둘, 나머지는 잠겨 있다.
만들다가 뒤집은 것들
진행 방향을 위→아래로 뒤집었다. 처음엔 아래에서 위로 올라가게 만들었는데, 창세기는 에덴에서 시작해 "애굽으로 내려가는" 이야기다. 색도 위는 밝고 천상적, 아래로 갈수록 세상·사막 톤이 되게 했다. 지도를 스크롤하는 방향 자체가 이야기가 됐다.
자물쇠 아이콘을 지우고 회색 안개로. 자물쇠는 "너 이거 못 해"인데, 안개는 "아직 안 밝혀졌다"이다. 같은 잠김인데 느낌이 다르다.
에덴을 깨면 길목에 불의 칼이 나타난다. 창세기 3장 24절, 에덴에서 쫓겨난 뒤 동산 입구를 막은 화염검. 클리어 표시를 체크 아이콘 대신 성경 장면으로 했다.
버튼을 없앴다. 노드마다 이모지 버튼이 붙어 있으니 지도 그림 위에 아이콘이 얹혀 지저분했다. 지도의 구간 자체를 누르면 게임 카드가 슬라이드로 올라오게 바꿨다(폰은 아래에서, PC는 오른쪽에서).
카드 하나에도 기준이 생겼다
아이가 ▶플레이 버튼을 누르는 데 스크롤이 필요하면 그건 실패야.
그래서 커버 → 이름 → 설명 → ▶지금 플레이 까지가 무조건 첫 화면 안에 들어오고, 업데이트 내역과 순위는 그 아래로 내렸다. (이때 카드에 높이 제한이 없어서 내용을 넣을수록 폰에선 화면 밖으로 밀리고 PC에선 위아래가 잘리던 버그도 같이 잡혔다.)
"새 게임" 뱃지에도 규칙을 뒀다. 버전이 오르면 NEW/UPDATE가 뜨는데, 자잘한 오타 수정에는 안 뜨게 했다. 별거 아닌 걸 고치고 "업데이트!"라고 띄우면 아이들이 그 뱃지를 안 믿게 된다.
💡 배운 점: 만든 게 여러 개가 되면 그것들을 담는 그릇이 다음 과제가 된다. 그리고 그릇에서 중요한 건 예쁨이 아니라 "지금 어디까지 왔는지" 가 보이는 것이었다.
✅ 결과 (After)
항목
상태
병렬 개발 체계
✅ 총괄 1 + 워커 6 동시 진행 (담당 파일 분리 · 커밋 단일화 · 문서 인계)
신작: 바벨탑 쌓기 (BABELIZE)
✅ 베타 라이브 — 원버튼 쌓기 + 타이틀 화면 + 로고 + 룰 안내
하늘 도달 연출
✅ 층수에 반응하는 빛의 띠 (100% 도달 불가)
배경 랜드마크 3종
✅ 실제 높이 환산 배치 (여신상·피라미드·에베레스트)
난이도 곡선
✅ 고도별 회복 감쇠 — 완벽히 쳐도 끝남
언어 혼잡 연출
⛔ 의도적으로 제거 (사건형·소리로 재설계 예정)
1주차 테트리스 → LINEBREAK
✅ 손가락 제스처 조작 + 타이틀 이미지 + 개명(상표 회피) + 공통 상단 UI
창세기 월드맵
✅ 도트 지도 8노드 · 위→아래 진행 · 구간 클릭 → 게임 카드 · 잠긴 구간 안개
게임 카드 정보
✅ 커버·설명·▶플레이가 첫 화면 안 / 업데이트 내역·순위는 아래
🎮 직접 해보기
🗺️ 성경 아케이드 — 창세기 월드맵 (이번 주 지도): https://biblearcade.vercel.app
🧱 바벨탑 쌓기 (BABELIZE) — 이번 신작: https://geekcode-arcade.vercel.app/babel.html
🟦 LINEBREAK — 1주차 테트리스의 졸업작 (폰에서 손가락으로 해보세요): https://geekcode-arcade.vercel.app/tetris.html
🚢 노아의 방주 (DELUGE 40): https://geekcode-arcade.vercel.app/noah.html
🕹 오락실 (전체 허브): https://geekcode-arcade.vercel.app
🌱 곁가지로 한 것들 (짧게)
노아 — 아이폰에서만 화면이 깨졌다. 개발자도구 모바일 화면에선 멀쩡한데 실기기에서 깨졌다. 원인 중 하나가 iOS는 스크롤할 때 주소창이 나타났다 사라지며 화면 높이가 실시간으로 변한다는 것. 개발 자도구엔 주소창이 없어 영영 재현이 안 됐다. → 실기기 확인은 대체 불가능하다.
LINEBREAK 효과음을 소리 파일 없이 코드로 만들었다. 다운로드한 음원 없이 소리를 계산해서 내는 방식이라, 파일 용량이 0이면서 패미컴풍 8비트 소리가 난다. 이동·회전·착지·줄삭제·레벨업·게임오버가 각각 다른 음이다.
성경게임을 별도 사이트로 분리. 내 포트폴리오 오락실에 성경게임이 섞여 있으면 둘 다 애매해져서 전용 사이트를 따로 냈다. PART 4의 월드맵이 그 사이트의 홈이다.
게임마다 상단 UI를 공통 부품으로. 나가기·일시정지·소리·랭킹·버전·의견보내기를 게임마다 다시 만들지 않게 하나로 묶었다.
버전 정보는 원본 하나만. 지도에 뜨는 게임 버전·업데이트 내역은 게임 쪽 파일 하나만 읽는다. 사본을 두면 반드시 한쪽이 옛날 것으로 남는다.
💬 이 과정에서 배운 AI 활용 팁
효과적이었던 것
여러 세션을 굴릴 땐 "뭘 시킬까"보다 "경계가 어디까지인가" — 담당 파일을 나누고 커밋은 한 명만. 이 두 줄이 병렬 개발의 전부였다
지시서에 "하지 말 것"을 먼저 적는다 — 안 적으면 AI는 도와주려고 남의 것을 고친다
"어떻게 끝나는가"를 먼저 정한다 — 재미보다 어려웠던 게 끝맺음이었다. 결말이 정해진 이야기면 점수 무한 상승을 막는 규칙부터 설계해야 한다