고도 엔진과 클로드 코드로 리듬게임 만들기: 4키·7키 지원

고도(Godot) 엔진과 클로드 코드(Claude Code)로 4키·7키 리듬게임 "비트 스트라이크"를 만들었어요. 2026년 9월 17일부터 27일까지, 실제 작업 시간은 약 16시간 30분이에요.

고도는 무료로 쓰는 오픈소스 게임 엔진이에요. 저는 게임을 만들어 본 적도, 고도를 열어 본 적도 없었어요. 코드는 클로드가 짰고, 저는 질문에 답하고 직접 쳐 보면서 "이건 아니야"를 말하는 역할이었어요.

고도 엔진으로 만든 리듬게임 비트 스트라이크 7키 HARD 자동 연주 화면, 콤보와 PERFECT 판정

▲ 고도 엔진으로 만든 리듬게임 비트 스트라이크 7키 HARD 자동 연주 화면, 콤보와 PERFECT 판정

리듬게임을 직접 만들어 보고 싶었던 이유

리듬게임을 좋아하는 지피터스 24기 게임메이커스 멤버 primadonna예요. 지니파이에서 개발자로 일하고 있지만 게임은 한 번도 만들어 본 적이 없었어요. 스터디 과제도 할 겸, 고도 엔진도 익힐 겸, 제가 좋아하는 장르로 시작했어요.

처음 보낸 요청은 이거 하나였어요.

godot을 이용해서 리듬게임을 만들고싶어,

먼저 컨셉과 동작방식들을 정하고
디자인 컨셉을 정한후
에셋들을 어떻게 만들지, 음악들과 노트들은 어떻게 만들지
인터뷰 형식으로 좁혀나가면서 실제 개발까지 마무리하자.

클로드 코드로 인터뷰부터 한 설계

클로드는 바로 코드를 짜지 않고 질문부터 했어요. 첫 세션에서만 선택지 질문이 10개였어요. 노트가 어떻게 내려오는지, 어디서 플레이하는지, 첫 버전 크기는 어느 정도인지, 판정은 몇 단계인지, 분위기와 에셋, 곡과 채보(노트 배치)는 어떻게 마련할지를 하나씩 골랐어요.

고른 답은 설계서 한 장으로 정리됐어요.

  • 플레이 방식: 세로로 노트가 떨어지는 4키, D F J K

  • 판정: PERFECT, GREAT, GOOD, MISS 4단계

  • 분위기: 네온 사이버, 평면 2D

  • 에셋과 음악: 누구나 써도 되는 무료 공개(CC0) 자료

  • 채보: 곡을 분석해 자동으로 만들기

설계서에서 가장 중요하게 다룬 건 "박자 시계"였어요. 노트 위치와 판정을 프레임 수가 아니라 "지금 음악이 몇 초째인가"로 계산해요. 고도의 오디오 서버(AudioServer)가 알려 주는 재생 위치, 마지막 믹스 이후 지난 시간, 출력 지연을 더해서 시각을 구해요. 나중에 재 보니 화면과 음악의 어긋남이 한 프레임 최대 2.0ms였어요.

클로드 코드가 고도 리듬게임을 만든 흐름, 인터뷰에서 설계서, 구현 계획, 에이전트 팀 구현과 검토까지

▲ 클로드 코드가 고도 리듬게임을 만든 흐름, 인터뷰에서 설계서, 구현 계획, 에이전트 팀 구현과 검토까지

에이전트 팀으로 구현하고 검토하기

구현은 클로드가 에이전트 팀을 꾸려서 했어요. 구현 에이전트가 테스트를 먼저 쓰고 코드를 짜면, 검토 에이전트가 따로 확인하는 방식이에요. 문제가 나오면 고치고 다시 검토를 통과해야 다음 단계로 넘어갔어요.

첫날부터 검토가 일을 했어요. 테스트 실행기가 문법 오류가 난 테스트 파일을 "성공"으로 넘기고 있었어요.

1 환경·뼈대: 재수정 중. 문법 오류가 난 테스트 파일을 "성공"으로 넘기는 문제를 고치고 있습니다.

고도의 테스트 도구 GUT에는 이걸 막는 옵션이 없어서, 출력에서 오류 표시를 찾아 실패로 처리하게 바꿨어요. 이렇게 쌓은 자동 테스트가 마지막에 215개가 됐어요.

그다음부터는 기능을 하나씩 얹었어요. 제가 보낸 말은 대부분 짧았어요.

tech rave,
앱의 시작화면, 곡 고르는 화면, 설정화면, 프로필화면 까지
속도조절과 7키로도 할수잇게

시작 화면, 곡 선택, 내 기록, 설정이 붙고, 노트 속도 조절과 7키 모드(S D F Space J K L)가 붙었어요. 곡을 늘리고 싶어서 "캔뮤직의 노래들과 채보들을 가져올수있을까?"라고 했더니, 클로드가 곡 파일 형식을 읽는 가져오기 도구를 만들었어요. BMS 곡 패키지도 같은 방식으로 가져오게 했어요. 그렇게 제 컴퓨터의 곡 목록이 5,727곡이 됐어요.

고도라서 손볼 것도 있었어요. 곡 검색 칸(LineEdit)에서 한글이 안 쳐져서 입력기(IME) 처리를 고쳤고, 곡 선택에서 방향키를 꾹 누르면 반복해서 넘어가게 바꿨어요. 한글·일본어 곡 제목이 깨지지 않게 대체 글꼴도 넣었어요. 곡이 수천 개가 되자 목록을 매번 다 읽지 않게, 채보가 바뀐 곡만 다시 읽는 목록 기록 파일도 만들었어요.

비트 스트라이크 게임 구조, 곡 파일에서 채보 생성 도구를 거쳐 고도 게임의 곡 선택, 플레이, 결과 화면까지

▲ 비트 스트라이크 게임 구조, 곡 파일에서 채보 생성 도구를 거쳐 고도 게임의 곡 선택, 플레이, 결과 화면까지

판정선이 화면 끝에 붙어 있던 문제

UI를 진짜 게임처럼 바꿔 달라고 하고 나서 쳐 보니 손이 불편했어요.

지금 보니까. 실제 쳐지는 범위가 되게 끝자락에 붙어있어서 사용감이 안좋을거같은데

판정선은 화면 높이의 86% 지점에 있었어요. 클로드는 판정선을 조금 올리고, 그 아래 빈자리는 키 표시를 크게 키워서 채웠어요. 제가 원한 건 그게 아니어서 한 번 더 말했어요.

아니.. 치는 키는 밑에있되, 판정선 아래로도 공간이 있어야하잖아

키캡은 화면 맨 아래에 두고, 판정선과 키캡 사이에도 레인이 이어져야 한다는 말씀이군요. 그래야 조금 늦게 친 노트도 판정선을 지나 내려오는 게 보입니다.

그래서 판정선을 화면 높이의 약 74% 지점에 두고, 그 아래로 레인을 약 150px 더 이었어요. 속도 2.5, 160 BPM 기준으로 100ms쯤 늦게 친 노트까지 판정선을 지나 내려가는 게 보여요. 키 표시는 화면 맨 아래로 내렸어요. 이 구조는 디자인 정본 문서에도 적어 뒀어요.

비슷한 일이 한 번 더 있었어요. 곡을 칠 때 맞힌 노트의 소리(키음)만 나게 했더니, 못 친 노트에서 노래가 뚝뚝 끊겼어요.

노래가 타격감을 위해서 칠때 음이 나오게끔한거같은데, 못쳤을때 노래가 거의 잘 안이어지고, 뭔가 핀트가 잘안맞음

그래서 놓친 노트의 소리는 제 시각에 저절로 나게 바꿨어요. 지금은 못 쳐도 곡이 끊기지 않아요. 이때 첫 실행이 느린 이유도 같이 찾았어요. 곡 목록 기록 파일이 깨지면 5,727곡 채보를 다시 읽느라 35초가 걸리고, 살아 있으면 0.3초였어요.

16시간 30분 만에 나온 고도 게임

  • 전: 게임 개발도 고도도 처음이라, 혼자서는 시작할 엄두를 못 내던 일

  • 후: 약 16시간 30분 작업, 커밋 89개, 게임 코드 5,257줄, 자동 테스트 215개

지금 게임은 시작 화면에서 곡을 고르고, 4키나 7키로 치고, 결과 화면에서 랭크와 판정별 개수를 보는 데까지 돼요. 테마 5종(네온, 선셋, 오로라, 아이스, 크림슨), 노트 속도 0.5에서 8.0, 타이밍 보정 도우미, 곡 검색과 정렬도 있어요. 맥 앱으로 내보내 더블클릭으로 켤 수도 있어요.

비트 스트라이크 결과 화면, 4키 NORMAL 자동 연주로 PERFECT 514개, 정확도 100%, S랭크 풀 콤보

▲ 비트 스트라이크 결과 화면, 4키 NORMAL 자동 연주로 PERFECT 514개, 정확도 100%, S랭크 풀 콤보

글에 넣은 플레이 화면은 고도의 녹화 기능(Movie Maker)으로 뽑았어요. 무료 공개 곡 "Tech Rave"를 7키 HARD 자동 연주로 돌렸고, 노트 514개가 전부 PERFECT로 녹화됐어요. 그 녹화와 같은 곡으로 36초짜리 모션그래픽 광고 영상도 만들었어요. 이 영상도 클로드 코드에서 클로드 오푸스 5.5(Claude Opus 5.5) 모델로 만들었어요. HTML로 장면을 짜서 영상으로 뽑는 하이퍼프레임즈(HyperFrames)를 썼고, 화면 속 플레이는 전부 실제 녹화예요. 컷은 곡 빠르기(160 BPM)의 마디에 맞췄어요.

비트 스트라이크 36초 광고 영상 전체, 4키와 7키 화면 분할, PERFECT 판정, 결과 화면과 엔드카드

▲ 비트 스트라이크 36초 광고 영상 전체, 4키와 7키 화면 분할, PERFECT 판정, 결과 화면과 엔드카드

배포는 아직 못 해요

곡이 늘어나니 저작권이 걸렸어요. 그래서 물어봤어요.

지금 노래들이 기존 데이터들에서 가져온것들이 많은데, 이것들은 저작권문제가 되나? 상용화만 안하면되나

한마디로, 돈을 안 받는다고 괜찮아지는 건 아닙니다. 기준은 상용화 여부가 아니라 "나 혼자 쓰느냐, 남에게 주느냐"입니다.

가져온 5,727곡은 제 컴퓨터에서 혼자 치는 용도로만 두고, 게임은 배포하지 않기로 했어요.

맥 앱을 만드는 스크립트도 기본값은 라이선스 파일이 있는 자유 곡만 넣고, 가져온 곡까지 넣는 건 개인용 옵션으로 따로 뒀어요. 공개하려면 무료 공개(CC0) 곡이나 직접 만든 곡으로 목록을 다시 채워야 해요.

하나 더, BMS 곡 중 빠르기(BPM)가 중간에 바뀌는 곡은 화면의 박자선이 어긋나요. 판정은 맞는데 눈으로 보기엔 아직 어색해요.

고도 게임, 이렇게 시키면 돼요

제가 해 보니 첫 요청에 "인터뷰로 좁혀 나가자"를 넣은 게 컸어요. 게임을 몰라도 고르기만 하면 설계서가 나와요. 그다음은 직접 쳐 보고 불편한 걸 한 줄씩 말하면 돼요.

고도(Godot) 4로 [장르] 게임을 만들고 싶어.
먼저 컨셉과 조작 방식을 정하고, 디자인 분위기를 정한 다음,
에셋과 [음악·맵·레벨]은 어떻게 마련할지
인터뷰 형식으로 하나씩 물어보면서 좁혀 줘.
정해진 건 설계서로 남기고, 단계마다 테스트를 먼저 쓰고 구현해 줘.
5
7개의 답글
지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 오후,
읽고 바로 써먹을 AI 소식만