프로그래밍 관련 경험한 것
자바로 리듬게임 만들기 (with 유튜브 강좌)
제작 동기
작년에 파이썬, C언어, 자바스크립트, 자바 등 다양한 언어를 배웠는데 자바만 너무 대충 배운 느낌이 들어서 자바를 다시 한번 공부해보려고 했습니다. 몇 년 전부터 눈여겨봐왔던 '자바로 리듬게임 만들기 강좌'로 실습을 하면서 자바를 다시 복습해보고자 했습니다.
과정 및 결과물
일단 실습 강좌를 하기 전에 자바를 어느 정도는 알아야 할 필요가 있을 것 같아서 TCP SCHOOL 사이트에서 이틀동안 인터페이스까지 공부했습니다. 그리고 3일 차부터 바로 강좌를 들었습니다.
한 강좌당 평균 13분 정도밖에 안되지만 강좌에서 사용한 코드를 검색해서 공부도 하고, 더 추가하고 싶은 기능을 직접 구현하다 보니 한 강좌당 40~50분 정도는 걸린 것 같습니다. 특히 버튼 같은 디자인은 직접 만들다 보니 시간이 더 걸렸습니다. (총 16강으로 이루어져 있습니다)
제가 만든 게임의 메인 화면입니다. 버튼 디자인은 강좌에서는 포토샵을 썼지만 저는 사용 방법을 모르기 때문에 파워포인트로 디자인했습니다. (포토샵도 나중에 배울 예정입니다.)
메인화면에서 START를 눌렀을 때 나오는 노래 선택 화면입니다. 노래는 3개 넣었는데 그중 하나는 제가 즐겨 듣는 노래인 이 세계 아이돌의 RE:WIND로 했습니다. 경험담을 쓰면서 드는 아쉬운 점은 우선 메인화면으로 돌아가는 버튼이 없다는 것과 노래 제목의 글씨 색상과 폰트입니다. 나중에 수정해봐야겠네요.
다음은 게임 화면입니다. 키보드를 눌렀을 때 저렇게 파란색 불빛이 나오는 것처럼 디자인했습니다. 해당 라인의 키를 알려주는 디자인이 약간 불편했지만 어떻게 해야 이쁘게 될지 잘 모르겠어서 일단 패스했습니다.
그다음에는 노트를 디자인하고 박자에 맞춰 노트가 나오게 프로그래밍했습니다. 이 파트의 강좌는 약간 아쉬웠는데 후기 부분에서 자세히 설명드리도록 하겠습니다.
노트 판정까지 프로그래밍하고 나서 강좌가 끝났습니다. 위에 사진은 제가 좋아하는 노래 중 하나인 'Q'를 선택했을 때 나오는 게임 화면입니다. 어쩌다 보니 저작권이 있는 노래들을 사용해버려서 깃허브에 업로드는 못할 것 같네요.
후기
이렇게 따라만 하는 게 무슨 도움이 되겠느냐라고 생각하시는 분들이 많을 것 같습니다. 하지만 저는 그렇게 생각하지 않습니다. 이렇게 따라 하면서 직접 해보는 것이 따라 하는 것을 비판하면서 아무것도 안 하는 것보다는 훨씬 도움이 된다고 생각합니다.
우선 이 실습 경험을 통해 프로그래밍에 대한 흥미도가 더욱 올라갔습니다. 그동안 프로젝트로 불린만한 것을 만들어본 것은 외부 API를 이용한 Discord봇, 딱 하나였습니다. 그 외에는 C언어나 파이썬으로 알고리즘 문제를 풀거나 터미널에 텍스트를 띄우는 것뿐이었습니다. 그래서 약간 지루해질 수밖에 없었죠. 하지만 이 강좌를 통해 좋아하는 노래로 리듬게임을 만들면서 재미있게 자바를 공부할 수 있었고, 그 결과물로 게임이라고 불릴만한 프로그램을 만들어낼 수 있었습니다.
또한, 위에서도 말했다시피, 강좌를 보고 따라만 하는 게 아니라 코드 하나하나 이해하기 전에는 절대 다음 파트로 넘어가지 않았습니다. 그 결과 클래스나 인터페이스 같은 헷갈리는 개념들이 실제 프로그램에서 어떻게 응용되는지 보면서 더 잘 이해할 수 있게 되었습니다.
다만, 아쉬웠던 점이 하나 있었는데 박자에 맞춰 노트를 찍는 부분입니다. 음악에 대한 개념이 부족하면 절대 박자에 맞춰서 노트를 내려보낼 수 없고 저도 이 파트에서 포기할 뻔했습니다. 어차피 자바를 공부하기 위해 듣는 강좌니까 굳이 게임을 완성할 필요는 없다고 생각했죠. 그래도 억지로 음악 박자, BPM, 다른 리듬게임이 박자를 맞춘 방법 등을 구글링 하면서 공부했습니다. 꽤 오랜 시간이 걸렸고 얻은 음악 개념은 부족했지만 그래도 게임에서 박자에 맞게 노트를 내려보낼 수는 있었죠.
후기가 너무 길어져서 요약을 하도록 하겠습니다.
1. 초보자에게는 많은 도움이 된다.
2. 코드를 받아쓰기만 해서는 안되며 모두 이해할 때까지 공부해야 한다.
3. 박자에 맞춰 노트 찍기 파트의 강좌는 약간 아쉽다.
자바를 배우긴 했는데 실제 프로그램을 제작해본 적이 없어서 배운 것들을 어떻게 사용해야 할지 모르겠는 분들에게 추천하는 강좌입니다. 누군가에게는 이 글이 도움이 되었으면 좋겠네요.