AI Studio로 [리듬히어로] 게임 다시 구현하기: 단순함에서 시작한 디벨롭 여정 🎵

소개

리듬마스터를 새롭게 구현하려고 했던 이유는 단순했습니다. Google AI Studio를 활용해 PRD와 여러 기능 프롬프트를 한 번에 잔뜩 넣으면, 내가 원하는 게임이 뚝딱 만들어질 거라 생각했어요. 하지만 결과는 전혀 달랐습니다. 복잡한 요구사항에 AI는 제대로 반응하지 못했고, 원하는 게임과는 거리가 멀었죠.

그러던 중 지난 주 사례발표와 모각에서 스터디장님, 준님, 눈오지님 외 여러 스터디원분들께서 조언을 주셨습니다. "핵심 기능만 단순하게 넣어도 AI가 창의적으로 만들어준다"라는 말이 특히 인상 깊었고, 그 조언 덕분에 다시 도전해보기로 했습니다.

진행 방법

  • 사용 도구: Google AI Studio

  • 처음 시도: 복잡한 요구사항을 한 번에 입력 → 원하는 게임 구현 실패

  • 새로운 접근:

    • 모노리듬 연습 기능부터 단순하게 시작

    • 점차 확장하여 폴리리듬, 양손 연습 기능 추가

  • 스터디 피드백 반영: 작은 단위의 기능부터 점진적으로 디벨롭하는 방식 적용

리듬 영웅 - ��리듬 연습 앱
  • 1. Google AI Studio 와 모노리듬 연습 개발 채팅 내용

모노리듬부터 연습할수 있게 구현해줘. 오른손, 왼손을 따로 각자 한손씩 연습하게 해줘. 기본 비트를 2마디 먼저 주고, 그 속도감으로 한비트에 2분할, 3분할,4분할을 설정해서 태핑하면서 연습할수 있도록 해줘.
---
안녕하세요! 훌륭한 아이디어입니다. 피아니스트와 모든 음악가에게 리듬의 기본은 정말 중요하죠. 요청하신 대로, 헤미올라 연습에 들어가기 전에 리듬의 가장 기초적인 단위인 모노리듬을 연습할 수 있는 기능을 추가하겠습니다.

새로운 '모노리듬 연습' 모드에서는 다음과 같은 경험을 제공합니다.

1. **연습 설정:** 시작하기 전에 오른손/왼손, 비트당 분할(2, 3, 4분할), 그리고 원하는 템포(BPM)를 직접 설정할 수 있는 화면을 추가했습니다.
    
2. **카운트인:** 연습 시작 시, 설정한 템포에 익숙해질 수 있도록 4/4박자 기준 2마디의 명확한 카운트인을 제공합니다.
    
3. **실시간 피드백:** 탭의 정확도를 실시간으로 추적하여 퍼센티지로 보여줍니다. 이를 통해 자신의 리듬감을 객관적으로 파악하고 개선할 수 있습니다.
    
4. **시각적 보조:** 현재 비트의 위치를 시각적으로 보여주는 인디케이터를 통해 박자를 놓치지 않도록 돕습니다.
---
초기 세팅화면 아주 좋아. 그런데 마우스 클릭으로 인식하는거 같아서 키보드의 특정키로 인식할수 있게 해줘. 예를 들면 왼손은 F 오른손은 J 키로.
---
네, 좋은 제안입니다! 마우스 클릭뿐만 아니라 키보드를 사용해 더욱 실제 악기처럼 연습할 수 있도록 기능을 개선하겠습니다.

이제부터 모노리듬 연습 시, 왼손은 **'F' 키**, 오른손은 **'J' 키**로 탭을 입력할 수 있습니다. 키보드로 입력할 때도 마우스 클릭과 동일하게 시각적 피드백과 정확도 계산이 이루어집니다.

사용자가 어떤 키를 눌러야 하는지 쉽게 알 수 있도록 탭 패드에 해당 키에 대한 안내 문구도 추가했습니다. 이를 통해 더욱 직관적이고 편리하게 리듬 연습에 몰입할 수 있을 것입니다.
---
입력키에 대한 안내는 있고 실제 해보니깐 키를 눌러도 인식을 못하는데, 아직도 마우스 클릭만 인식해. 키 누를때 인식하도록 반영해줘.
---
정확한 지적이십니다. 키보드 입력이 제대로 동작하지 않는 문제를 확인했습니다. 죄송합니다.

원인은 키보드 언어 설정에 따라 입력되는 키 값이 달라지기 때문이었습니다. 예를 들어, 한글 입력 상태에서 'J' 키를 누르면 'ㅓ'로 인식되어 앱이 이를 감지하지 못했던 것입니다.

이 문제를 해결하기 위해, 현재 설정된 키보드 언어와 상관없이 물리적인 키 위치를 기준으로 입력를 감지하도록 로직을 수정했습니다. 이제 어떤 언어 상태에서든 'F'와 'J' 키를 누르면 정상적으로 탭이 인식될 것입니다.
---
예비박 2마디 주고 본 연습이 시작될때 갑자기 템포가 약간 흔들리고 비트가 불안정하게 나오는데 수정해줄수 있어?
---
네, 아주 예리한 지적이십니다! 미세하지만 리듬 트레이닝에서는 굉장히 중요한 문제를 정확히 짚어주셨네요.

말씀하신 대로, 예비박 2마디가 끝난 후 본 연습으로 넘어가는 순간에 템포가 미세하게 흔들리는 현상이 있었습니다. 이는 카운트인 상태에서 연습 상태로 전환될 때, 앱의 내부 타이머 로직에 작은 지연이 발생할 수 있었기 때문입니다.

이 문제를 해결하기 위해 타이머 엔진의 작동 방식을 근본적으로 개선했습니다.

기존에는 '카운트인'과 '본 연습'을 별개의 상태로 보고 전환하는 방식이었지만, 이제는 시작부터 끝까지 하나의 연속된 시간 흐름으로 처리하도록 로직을 통합했습니다. 이로써 상태가 전환되는 과정 자체가 사라졌기 때문에, 더 이상 템포가 흔들리는 현상 없이 처음부터 끝까지 매우 안정적이고 정확한 비트를 제공할 수 있게 되었습니다.
Monophony 연습 설정- 스크린 샷
  • 2. Google AI Studio 와 폴리리듬 연습 개발 채팅 내용

이제 헤미올라 연습부분을 디벨롭해볼게. 모노리듬 연습처럼 2개의 키를 각각 오른손 왼손으로 인식해야 해. 처음 연습세팅페이지를 모노리듬과 같이 폴리리듬으로 만들어줘. 예를들어 왼손은 2분할 오른손은 3분할 세팅, 템포 세팅, 예비박 2마디 전 주기 시작하면 키보드로 인식하고 시각적으로 내가 잘 연주하고 있는지를 보여줬으면 좋겠어.
---
네, 알겠습니다. 헤미올라(Hemiola)는 2와 3의 교차 리듬, 즉 폴리리듬(Polyrhythm)의 대표적인 예시이죠. 기존의 정해진 레벨을 클리어하는 방식에서 벗어나, 사용자가 직접 왼손과 오른손의 리듬 분할을 설정하고 자유롭게 연습할 수 있는 '폴리리듬 연습' 모드를 만들어 보겠습니다.
다음과 같이 기능을 대폭 개선했습니다.
---
폴리리듬 인식음 소리가 같은 소리로 겹쳐 나오니깐 섬세하게 구분이 안되고 헤깔려. 오른손과 왼손의 인식음 소리가 달랐으면 좋겠어. 그래야 구분되게 헤미올라를 연주하기 수월하니깐.
---
물론입니다. 아주 중요한 포인트입니다! 소리로 리듬을 구분하는 것은 청각 훈련에 큰 도움이 되죠.

요청하신 대로, 폴리리듬 연습 시 왼손과 오른손의 탭 소리가 다르게 나도록 수정했습니다.

- **왼손('F' 키):** 중간 톤의 안정적인 소리 (C4, '도')
    
- **오른손('J' 키):** 왼손보다 높은 톤의 명확한 소리 (G4, '솔')
---
한키보드 버튼으로만 한손가락으로 누르니깐 손가락 피로도가 있어. 키보드 파트를 오른쪽, 왼쪽 두개로 나누어서 어떤 손가락으로도 연주해도 인식할수 있도록 만들어 줄수 있어? 예를들어 4:3 연주를 왼손이 a,s,d,f 키를 손가락번호 5432 번으로 누르고, 오른손을 j,k,l 키로 손가락 번호 234번으로 연주하는 연습을 하면 인식할수 있도록말야.
---
물론입니다! 훌륭한 제안입니다. 실제 악기를 연주하듯 여러 손가락을 사용하면 피로도도 줄고 연습 효율도 훨씬 올라가죠.

요청하신 대로, 이제 키보드의 특정 키 하나가 아닌, 양손에 할당된 여러 키 중 아무거나 눌러도 탭으로 인식되도록 기능을 확장했습니다. 마치 피아노 건반을 누르듯이, 홈 로우(home row) 위치를 중심으로 편안하게 손을 올려두고 연습할 수 있습니다.

- **왼손 입력 키:** A, S, D, F
    
- **오른손 입력 키:** J, K, L, ;
    

이와 함께 탭 패드 UI의 안내 문구도 여러 개의 키를 표시하도록 변경하여, 사용자가 어떤 키를 사용할 수 있는지 직관적으로 알 수 있게 했습니다.
---
키 인식음이 아직 반영이 안되었어. 양손이 같은음으로 나오는데 양쪽 다른 사운드로 표현되야 내가 헤미올라를 더 정확히 연주할수 있어.
---
정확한 지적 감사합니다! 리듬 연습에서 소리로 각 파트를 구분하는 것은 매우 중요합니다. 양손의 소리가 같게 들리는 문제를 해결하고, 시각적 피드백도 강화하여 연습 효과를 높였습니다.
사운드 명확성 개선: 왼손과 오른손의 탭 사운드를 사용자가 확실히 구분할 수 있도록 변경했습니다.
왼손: 부드러운 사인파(sine wave)의 '도' 소리가 납니다.
오른손: 명료한 사각파(square wave)의 한 옥타브 높은 '도' 소리가 납니다.
이제 음색과 음높이가 모두 달라져 소리만으로도 두 리듬을 명확하게 인지할 수 있습니다.
시각적 피드백 강화: 키를 눌렀다는 것을 더 확실히 알 수 있도록, 탭 패드의 시각적 효과를 개선했습니다. 기존의 테두리 하이라이트 효과와 더불어, 이제 키를 누를 때마다 탭 패드의 배경색이 순간적으로 밝게 빛나도록 하여 입력이 정확히 인식되었음을 즉각적으로 보여줍니다.
폴리 리듬 연습 설정- 스크린 샷 썸네일

https://ai.studio/apps/drive/1EQFEKSVqxCzOapKwrHMklYIWA-BZulq1


- 리듬히어로 게임의 뇌과학적 관점 핵심 원리

1. 신경가소성(Neuroplasticity)과 절차 기억(Procedural Memory) 강화

  • 이론: '신경가소성'은 뇌가 경험을 통해 스스로의 구조와 기능을 재구성하는 능력을 말합니다. 특정 기술을 반복적으로 연습하면, 해당 기술을 담당하는 뇌의 신경망(Neural Pathways)이 물리적으로 강화되고 효율화됩니다. 특히 리듬 연주와 같은 신체적 기술은 '절차 기억'이라는 형태로 뇌에 저장되는데, 이는 의식적인 노력 없이도 몸이 자동으로 기억하고 수행하는 '근육 기억(Muscle Memory)'의 핵심입니다.

  • 앱의 적용:

    • 반복 연습: 사용자가 모노리듬과 폴리리듬을 반복적으로 탭하는 행위 자체가 특정 리듬 패턴에 대한 신경망을 직접적으로 훈련시킵니다.

    • 자동화: 연습을 거듭할수록, 처음에는 의식적으로 계산해야 했던 복잡한 헤미올라(3:2) 리듬이 점차 대뇌 피질의 개입 없이 소뇌(Cerebellum)와 기저핵(Basal Ganglia)이 주도하는 자동화된 절차 기억으로 전환됩니다. 이 앱은 그 전환 과정을 체계적으로 돕습니다.

2. 뇌의 '리듬 섹션' 활성화 및 동기화

  • 이론: 뇌에서 리듬을 인지하고 생성하는 데에는 여러 영역이 협응하며, 그중에서도 소뇌(Cerebellum)기저핵(Basal Ganglia)이 핵심적인 역할을 합니다.

    • 소뇌: 밀리초(ms) 단위의 정밀한 타이밍을 예측하고 오차를 수정하는 '타이밍 전문가'입니다. 악기 연주 시 정확한 순간에 손가락을 움직이도록 조절합니다.

    • 기저핵: 박자를 인지하고 내재화하여 일정한 '펄스(pulse)'를 유지하도록 돕는 역할을 합니다.

    • 운동피질(Motor Cortex) & 뇌량(Corpus Callosum): 실제 손가락 움직임을 지시하고, 양손의 독립적인 움직임을 조율하기 위해 좌뇌와 우뇌를 연결합니다.

3. 다중감각 통합(Multisensory Integration)을 통한 학습 효율 극대화

  • 이론: 뇌는 하나의 감각(예: 청각)에만 의존할 때보다 여러 감각(시각, 청각, 촉각 등)에서 들어오는 정보를 통합할 때 훨씬 더 빠르고 견고하게 학습합니다. 여러 감각 정보가 일치할 때, 학습된 기억은 훨씬 더 강력하게 형성됩니다.

4. 미세 운동 능력(Fine Motor Skills)의 정교화

  • 이론: 피아노 연주와 같이 정교한 손가락 움직임은 뇌의 운동피질에 있는 '호문쿨루스(Homunculus)'라고 불리는 신체 지도에서 매우 넓은 영역을 차지하는 손 영역의 발달을 필요로 합니다. 여러 손가락을 독립적으로 사용하는 훈련은 이 영역의 신경망을 더 세밀하게 조각하는 과정입니다.


결과와 배운 점

  • 깨달음: AI는 처음부터 끝까지 완벽한 결과물을 만들어주지 않는다. 사람이 단계를 나누어 주어야 한다.

  • 효과적인 접근법: 단순한 기능부터 하나씩 쌓아올리며 원하는 결과에 가까워질 수 있었다.

  • 시행착오: 처음부터 '한 번에 다 구현하겠다'는 마음은 오히려 독이 되었다.

  • 아쉬움: Firebase에 배포까지는 이어가지 못한 점. 하지만 구조 자체는 어느 정도 원하는 대로 구현함.

  • 얻은 성취감: 내가 원하는 리듬 연습 게임의 틀을 만들며 성장했다는 느낌

도움 받은 글 (옵션)

모각 스터디에서 함께 고민해주신 스터디장님, 준님, 눈오지님 외 뇌과학 스터디원분들

2
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요