서론
기존에 Godot Engine 사용기를 올렸었는데
이건 사실 다음 게임 개발을 위한 복선이었다. 이번에 기획한 게임은 후배와 함께 만드는 2인 개발 게임이다. 서로 이야기를 하다가 나랑 한건하자 라는 느낌으로 시작 하게 되었다. 개발할 장르는 리듬게임이고 최종 목표는 steam 출시이다. 역할로는 기획, 개발은 같이 진행하고 내가 음향, 후배가 디자인을 맡기로 했다. 내가 음향을 맡은 이유는 예전부터 작곡에 관심이 있었는데, 이참에 실력을 업그레이드 할 계기가 될 수 있을 거라 생각했기 때문이다.
목표
우선 첫 목표를 itch.io에 prototype형식으로 올리는 것을 목표로 하였다. 기획한 아이디어가 충분히 재미가 있고 경쟁력이 있는지 확인하기 위함이다. 이러한 피드백을 해외 또는 국내에서 받고 수정하고 적용하며 develop해 가기 위함이다. 비슷한 개발론으로는 애자일한 방식이라고 할 수 있을 것이다. 좀더 세상이 빠른 걸 요구하는 것 같다.
기획
먼저 초기 기획이다. 내가 준비한 건 아니고 후배가 가져온 아이디어이다. 기존의 리듬게임들은 크게 건반형, 비건반형 대체로 둘로 나뉜다. 건반형 같은 경우에는 DJMAX, 비건반형으로는 얼불춤이 있을 것이다. 건반형 리듬게임은 사실 정형화되어 있고 디자인이 다르다거나 곡이 다르다거나 등으로 경쟁력이 없어 보여서 비건반형을 구상하게 되었다.
위의 그림같은 형태로 공이 원의 표면에서 특정지점을 도달할때 입력하는 것이 큰 아이디어이다. 즉, 위와 같이 구현하기 위해서 어떠한 내용들이 필요한지 고민하며 구현하게 되었다.
구현 및 여러 시도들
가장 먼저 시작한 것은 시스템 매니저들을 구상하고 만들었다. 기본적으로 게임을 개발할 때 필요한 요소들이다. 그리고 나서는 인게임 구현에 들어갔다. 어떠한 형태의 데이터가 입력됐을 때, 이를 화면에 보여줄 수 있게 하는것이다. 그럼 정의해야되는 것이 두 개다.
1. 어떠한 형태의 데이터인가?
2. 해당 데이터를 어떻게 보여 줄 것인가?
1번에 해당하는 부분을 후배 친구가 구현을 했고 2번을 내가 구현하였다. 정확히 나누지는 않았고 필요한 부분을 부분부분 돌아가면서 했다.
처음은 "10101111" 이런식으로 들어왔을 때, 시작점에서 다음 쳐야될 위치에 해당하는 부분을 수식을 세워 쳐야할 좌표를 계산해서 해당 위치로 보내줬다. 이는 원위의 점이고 8박 16박 등으로 특정한 값으로 나뉘기 때문에 계산 할 수 있다. 보낼 위치를 구하고 나서 가는데 얼마나 걸리냐는 노래를 마디 만큼 나눴을 때, bpm에 따라 한 박자 가는데 걸리는 시간을 구할 수 있다. 이 과정을 반복하면 하나의 시스템이된다.
그렇게 구현된것이 위 영상이다. 다음으로는 쳐야될 장소를 가시적으로 보여줘야된다. 화살표를 추가하고 쳐야될 위치에 원을 추가하고 쳐야될 타이밍에 맞게 원을 줄어들게 만들었다.
이제 위처럼 구현된 것에 좀 더 깔끔하게 만져줬다. 메인 시스템이 어느정도 완성이 된 뒤로는 게임성을 높이기 위한 작업들에 들어갔다.
1. 곡 선택 창 추가
2. 결과 창 추가
3. 데이터 저장 및 편의성 추가
결과
https://sjmjys954646.itch.io/circle-game
Circle game by sjmjys954646, GGanari
Select Song “Click the Buttons” or “Select with arrows and press Space” to play the song. You can set the offset and volume by dragging the bar. To set the offset If you have blue a lot : add the offset ( + ) If you have yellow a lot : minus the of
sjmjys954646.itch.io
게임은 위 사이트에서 플레이 할 수 있다. 다운받아서 플레이하는 걸 권장한다.
갑자기 비약이 크다고 느낄 수 있는데, 핵심 아이디어는 위가 전부다.
https://www.youtube.com/watch?v=PotgS6yigJg
영상으로만 보면 현재 가장 어려운 난이도의 곡인 csikos post 다.
후기
짜잘짜잘 하지만 다양한 것을 배우게 되었다.
1. 클래식을 선정한 이유
다름이 아니라 저작권 문제다. 클래식은 저작권자들이 오래전에 돌아가셔서 사용할 수 있다. 인공지능 suno AI를 써볼까도 고민을 해봤지만 일단 프로토타입에서는 클래식 곡만 사용하였다. 이 때, 인터넷에 돌아다니는 음원을 사용할 수도 있지만, 인간이 치는 것은 결국 정확한 타이밍에 치기 어렵기 때문에 우리가 음원을 직접 만들어야 했다. 내가 피아노로 치고 이를 작곡툴에서 quantize했다. 이 과정속에서 내 피아노 실력이 늘었다.
2. 곡마다 패턴을 만드는 과정
우선 해당 곡의 bpm을 알아야한다.
https://www.beatsperminuteonline.com/
Tap BPM - Online Beats Per Minute Calculator And Counter
Counting the tempo of your music manually is a drag. This BPM tapping counter tool is especially useful for musicians and dancers who want to measure tempo for mp3 file id3 tags in programs such as iTunes, Spotify, Pandora, etc. The BPM tapper is also effe
www.beatsperminuteonline.com
위 사이트에서 곡을 들으면서 타이밍에 맞게 두드리면 해당 곡의 bpm을 알 수 있다.
3. 리듬게임 실력 증가
수많은 디버깅 과정에서 리듬게임의 실력이 늘었다.
itch.io에서 많은 피드백을 받았고 지인들에게 google form을 통해 여러 피드백을 받은 만큼, 수정 보완해서 더 나은 게임을 만들어 다음 후기에 적어보도록 할 것이다.
'프로그래밍 > 게임개발' 카테고리의 다른 글
VR 농구 만들기 (0) | 2025.02.12 |
---|---|
Hololens를 이용한 VR튜토리얼 (0) | 2025.02.06 |
SceneManager를 잘 만들려면 어떻게 해야할까? (0) | 2024.12.03 |
FMOD in godot 사용법 (0) | 2024.11.29 |
Godot Engine 사용기 3 (0) | 2024.11.09 |