과거에 학교를 다니던 때, 성적 반영의 비중이 큰 프로젝트를 진행하게 됐는데 주제가 '아두이노를 이용하여 무언가를 만들기'였다. 이 주제를 받아들고선 뭘 만들까 뭘 만들까 계속 조원들과 고민했지만 쉽게 아이디어는 나오지 않고 인터넷에서 아두이노 관련 키트를 찾아보다가 발견한 이것.
보자마자 생각난 건 '이거 완전 유비트잖아?'. 저걸 컨트롤러로 사용하고 저기에 호환되는 소프트웨어를 제작하면 모양새가 딱 유비트와 비슷한 무언가 될 것 같았다.
조원들에게 '이런 게 있는데 이러쿵 저러쿵..'이야기를 했더니 정말 좋아서 승낙을 한 건지 마지못해 승낙을 한 건지 이걸로 진행하는 걸로 결정이 됐다. 지금 생각해보면 좀 더 평범하고 유익한(?) 주제를 했어야 하지 않나 싶은 게, 나만 잘 아는 분야이다 보니 나만 앞장서서 진행하고 조원들은 크게 참여를 하지 못한 거 같아 미안하기도 하다. 물론 잘 도와주긴 했지만.
여튼 위에 나온 키트를 바로 주문했었다. 해외에서 오는 거라 시간이 좀 걸렸던 걸로 기억한다. 구성품은 PCB기판, 버튼 역할을 할 실리콘 덮개, 안에 들어가 가지각색의 빛을 낼 RGB LED.
얼마전 이사하다 보니 일부 쓰고 남은 부품이 보이기도 하더라.
이사하다 집에서 발견한 남은 부품들. 실리콘 덮개의 검은색 링이 기판에 닿으면 신호를 주는 방식. TV 리모컨이랑 똑같다고 보면 된다. 또한 PS2용 비트매니아 IIDX의 컨트롤러도 내부엔 저런 식으로 되어있는 것으로 알고있다. 아무래도 기판이 손상되거나 패드가 찢어졌을 때를 대비해서 하나씩 더 산 듯.
주문한 키트가 도착한 이후엔 판매 측에서 제공하는 문서를 참고해서 기판에 LED를 연결 후 납땜하고 열심히 회로를 구성해서 아두이노와 연결했다. 이 때 납땜을 처음 해봤는데 납땜을 하며 밀집해 있는 회로가 서로 붙어버리는 바람에 오작동을 일으켜서 녹이고 다시 납땜하는 과정을 몇번 반복해서 짜증났었다. 다행히도 기판은 죽지 않았지만.
마지막엔 아크릴 가공 업체에 연락해서 이 키트에 맞는 케이스를 주문제작했다. 그리하여 완성된 컨트롤러의 모습.
디자인의 D자도 모르는 학생들이 만든 거니까 외관의 퀄리티는 넘어가자.. 안에 들어있는 것은 통상 아두이노보다 포트가 더 많은 아두이노 MEGA. 위의 버튼 패드 키트와 연결된 모습. 잘 보이진 않지만 버튼 안에 LED가 들어가있다.
이후 해야할 일은 아두이노 내부에 들어갈 소프트웨어의 제작과 게임의 제작. 사실 아두이노에 들어갈 소프트는 저 키트에 맞는 라이브러리가 이미 제작되어 있어서 크게 시간을 들이진 않았다. 라이브러리가 해주는 일은 버튼의 입력 감지와 특정 칸에 특정 색상의 빛을 내도록 명령하는 것. 이를 이용해서 아두이노가 다음과 같이 작동하도록 했다.
내가 해야했던 건 게임과 아두이노가 어떤 형태의 데이터를 주고받을지 정의해주는 것. 아두이노에서는 '이 버튼이 눌렸다'라는 사실을 어떤 형태로 게임에 전달할지, 그리고 게임에서는 '이 자리에 이 색상을 점등해라'라는 메시지를 어떤 형태로 아두이노에 전달할지. 즉, 프로토콜의 정의였다. 게임과 아두이노에서 서로의 메시지를 이해할 수 있도록 약속을 정한 것이다.
이런 저런 방식으로 바꿔가며 테스트를 했었는데, 이 방식은 여러 버튼이 동시에 눌렸을 때 지연이 걸리고, 저 방식은 전달 할 데이터의 양이 많아 불빛의 패턴이 빠르게 변화하지 않고 등등 이런저런 시행착오를 거쳤던 걸로 기억한다. 어떤 방식을 썼는지는 시간이 오래되서 기억나지 않지만 코드를 열어보면 나오겠지..
다음은 게임의 제작. 게임을 제작할 방법이라곤 평소에 관심있어서 가끔 만졌던 유니티밖에 떠오르지 않아 다른 방법은 생각하지 않았다. 이 또한 디자인의 D도 모르는 내가 만들었으므로.. 여기저기서 가져온 영상 리소스들을 배경에 깔아 그나마 덜 추하게(?) 하고싶었다.
음악게임이라면 아주 오랫동안 접해왔으니 판정 시스템같은 음악게임의 핵심 요소들은 평소 내가 생각하던 알고리즘대로 제작했다. 원래의 타이밍과 내가 버튼을 누른 타이밍을 비교하여 차이가 얼마나 나는지로 점수를 부여하는 방식.
그리고 마지막으로 이 게임에 사용될 음악과 채보. 음악은 당연히 원래 있는 BMS를 예시로 사용할 생각이었고, 문제는 채보. BMS 포맷을 그대로 읽어서 쓸까 하다가 그건 읽어서 해석하는 코드를 짜기가 귀찮고. 채보 제작툴을 만들까 하다가 그것도 시간이 부족할 거 같고 결국엔.
그냥 보여주기 용 채보 하나 제작을 위해서 내가 정의한 포맷의 채보파일을 직접 메모장으로 작성했다. 지금 생각해보면 정말 무식했던 짓. 키음은 꼭 넣고싶었고, 그렇다고 BMS의 복잡한 박자체계는 구현하기가 귀찮아서 펌프에서 사용하는 틱카운트 방식에 키음을 결합한 짬뽕 포맷이 탄생했다.
이렇게 완성하고 촬영한 구동영상.
음 오랜만에 보는 영상이지만 여전히 썩 마음에 안 든다. 내 서브 유튜브 계정에 미공개로 올라가 있는 영상. 퀄리티가 저질이라 남에게 보여주기가 부끄러워서 음악게임 커뮤니티라던지 다른 곳에 올리진 않았다.
여튼 결과물은 저렇다. 시간과 예산이 더 있었다면 더 나았을지 모르겠지만 이런 저런 실험과 시도를 해볼 수 있어서 좋았고, 무엇보다 만드는 과정에서 재미를 느꼈다는 것에 의의를 두고싶다. 같이 지켜보던 사람들은 게임덕후의 특이한 결과물을 보고 관심을 많이 가져줬던 걸로 기억한다.