인디 게임 개발 #13 ( Indie Game Dev #13 ) 싱크 맞추기 그리고 BGM 제작 ( Syncing and Making BGM)

in #kr8 years ago (edited)

doko.jpg

안녕하세요? 저는 인디게임을 개발하고 있는 도적코볼트라고 합니다.

개발일지도 일주일이나 쓰지 못했네요. 날도 더워서 매일 덥다는 글이나 올리고... 작업도 무진장 진전이 되지 않았습니다. 그러다 오늘 문제였던 부분이 해결됐습니다. 그 덕분에 이렇게 또 개발일지를 쓸 수 있게 되었습니다.

기존에 랜덤 맵 생성에서 기획적으로 변경이 있었습니다.

Good morning? I am a thief kobold who is developing an indie game.

I have not used it for a week. The day is so hot that I write hot daily ... The work has not progressed too much. Then the part that was the problem today is resolved. Thanks to it, I was able to write the development journal again like this.

There has been a planned change in random map generation.

김하너님 아이디어 그림으로.png

제일 중요한 점은 이동도 리듬 게임으로 바꾸는 것이었고 그것을 위해서 작업하고 있었습니다. 그리고 가장 큰 문제는 바로 실제 BGM과 날아오는 바를 일치시키는 것입니다.

The most important thing was to change the mobility to a rhythm game and I was working on it. And the biggest problem is matching the actual BGM with the flying.


[ 리듬 게임, 날아 들어오는 비트와 소리의 박자가 맞아야 리듬 게임의 느낌이 난다 ]
[The rhythm game, the beat of the incoming beat and the rhythm of the sound have to match the rhythm game feel]

그러나 여기서 발생하는 문제점은 제가 노래 듣는 것을 좋아하지만 그런 노래, 음악에 대해서 공부한 적이 없었다는 것이며 그로 인해 기본적인 음악에 대해서 공부를 해야 했습니다.

그 중에 하나가 바로 BPM(beat per minute)이며 4분에 4박자와 같은 박자 그리고 마디의 개념에 대해서 공부해야했습니다. ( 물론 아직도 완벽하게 전부 다 이해한 것은 아니지만 필요한 정도는 이해했습니다. )

중요한 것은 사용되는 BGM( Background music )의 bpm에 따라서 노트가 터치되어야 한다는 것이었습니다.

그렇게 만들었던 것이 요 며칠 약 10일가량 문제가 됐던 것은 바로 싱크를 맞추는 것이었습니다. 그러나 이 싱크를 맞출 때 굉장히 많은 부분에서 문제가 생길 수 있었습니다. 그 중에 제가 눈여겨 봤던 것은 바로

' 오디오 랙 ' 과 ' 비디오 랙 ' 그리고 ' 입출력 랙 '입니다.

But the problem that arises here is that I like to listen to songs but I have never studied such songs or music, so I had to study basic music.

One of them was BPM (beat per minute), and we had to learn about the notion of a beat and a measure, such as four beats in four minutes. (Of course, I did not fully understand everything yet, but I understood what I needed.)

The important thing was that the note should be touched according to the bpm of the background music (BGM) used.

It was the thing that I made so that it was a matter of about 10 days in a few days. However, there were a lot of problems with this sink. What I have noticed is that

'Audio Rack', 'Video Rack' and 'Input and Output Rack'.

' 오디오 랙 '은 실제로 음악 파일이 읽혀질 때 어떻게 읽으냐에 따라서 미세한 차이가 날 수 있는 부분입니다. 예를 들어서 하드 디스크에서 찾아서 노래를 틀게 되면 그 미세한 차이( 기껏해야 0.0x초 길어야 0.x초 이지만 )가 사람의 귀에는 엄청나게 거슬리게 들릴 수 있습니다.

' 비디오 랙'의 경우 시스템적으로 비디오를 렌더링 하는 과정에 따라서 미세하게 차이가 날 수 있는 부분입니다. 음악과 실제 눈에 보이는 렌더가 일치하는 것이 굉장히 중요한데 이런 부분 때문에 여러가지 테스트하는 방법이 존재합니다.

'Audio rack' is a part that can be slightly different depending on how you actually read the music file. For example, if you find a song on your hard disk and play a song, the slight difference (at most 0.0x seconds, at most 0.x seconds) can be extremely annoying to the human ear.

In the case of 'Video Rack', it is a systematic difference in how to render video. It is very important that the music and the actual visible render match, and there are several ways to test it.


[ 랙 해결을 위해 사용되는 방법 ]
[Method used to solve the rack]https://www.youtube.com/watch?feature=player_detailpage&v=MoUIQr2pTAw

' 입출력 랙 ' 도 어떻게 사용자 입력에 따라서, 시스템적으로 적용되느냐에 따라서 달라질 수 있습니다.

'Input / output rack' may also vary depending on user input and how it is systematically applied.


[ 입출력 랙 ]
[Input / Output Rack]

위 영상은 안드로이드와 ios의 os에 따라서 차이가 있는 랙을 보여줍니다.

어찌됐건 저는 제가 잘 모르는 분야와 연관되어 있는 해결해야하는 문제점이 있었습니다. 즉 싱크가 안맞는 문제였고 이것에 있어서 위와 같은 여러 문제점이 있었습니다. 따라서 저는 이런 것들을 체크해야만 했습니다.

과학적인 비교에도 항상 대조군과 실험군이 있습니다. 그것처럼 이야기를 해보면 제가 완벽하게 이해하고 컨트롤 할 수 있는 부분이 대조군이라고 한다면 저는 잘 모르기 때문에 완벽하게 알지 못하는 대조군과 테스트 해야하는 실험군이 있는 상황이었습니다.

그러나 제가 처해있는 문제는 이와는 아예 다른 문제였습니다. 오히려 보다 간단한 문제였죠. 그러나 너무 어렵게 생각했기 때문에 문제가 발생했습니다.

그 문제는 바로 프레임의 간격이 일정하지 않은 문제였습니다.

The above image shows a rack that differs depending on the os of Android and iOS.

In any case, I had a problem that had to be solved that is related to the field I do not know well. In other words, sink was not a problem and there were many problems like this. So I had to check these things.

Scientific comparisons are always in the control and experimental groups. When I talk like that, if I say that the part that I fully understand and can control is the control, I have a control group that I do not fully understand and an experiment group that needs to be tested.

However, the problem I am facing was a different problem. It was rather a simple matter. However, I had a problem because I thought it was too difficult.

The problem was that the spacing of the frames was not constant.

120BPM을 기준으로 했을 때, 0.5초 마다 체크가 필요했습니다. 그러나 컴퓨터에서 시간을 체크하는 방법은 딱 0.5초 일 때 체크를 하지 않습니다.

Based on 120 BPM, we needed a check every 0.5 seconds. However, the way to check the time on the computer is not checked when it is only 0.5 seconds.

그렇다면 우리가 원하는 0.5초 보다 0.01초만큼 늦게 나오고 이것이 매 프레임마다 수행됩니다. 즉 10 프레임이 지났을 때 이 시간의 차이는 0.1초가 되며 뒤로 가면 갈수록 이 시간이 밀려서 점점 싱크가 안맞게 됩니다.

If so, it will be delayed by 0.01 seconds from the desired 0.5 second, and this is done every frame. In other words, when 10 frames have passed, the time difference is 0.1 second. As you go backward, this time is getting shorter and the sink is getting worse.

그래서 이것을 계산해서 생성하게 만들었고 성공적으로 싱크가 맞춰지게 되었습니다.

So I calculated it and created it, and I was able to sync it successfully.

moving1.gif

동영상을 찍을 줄 몰라서 gif로 대신하며 이 때 사용되었던 노래는 the crypt of the necrodancer ost - tombtorial 입니다.

처음 1 마디는 커맨드를 입력하는 상황이며 현재는 L L L L 의 경우 오른 쪽으로 이동하며 A A A A를 입력할 때는 왼 쪽으로 이동하고 있습니다. 이렇게 1 마디 입력 그리고 다음 1 마디에 이동과 같은 애니메이션이 생기게 됩니다. 이렇게 한 마디씩 입력하며 다음 마디는 무엇을 할지 재빨리 생각하며 기존의 프로젝트에 있었던 커맨드를 입력시키면서 전투 및 이동이 가능하게 만드려고 합니다.

I do not know how to take a video, so I replaced it with gif and the song I used was the crypt of the necrodancer ost - tombtorial.

The first one is for entering the command, and now it moves to the right for L L L L, and moves to the left when entering A A A A. In this way, you will have an animation like the one-segment input and the next one segment. I want to be able to combat and move while entering the command in the existing project.

또한 이 노래의 BPM은 다음과 같습니다.

The BPM of this song is also:


[ Crypt of the necrodancer ost의 bpm ]
[Crypt of the necrodancer ost bpm]

요 며칠 간 문제가 되었던 싱크 문제가 해결되면서 저번 개발일지에 말했던 변경된 기획을 가지고 게임을 만들 수 있게 되었습니다. 왜냐하면 이 부분이 굉장히 어려웠고 찾아내기 힘들었거든요.

그리고 BGM을 만들려고 하고 있는데요. 아직은 연습 중입니다만... 따라서 만들어 본 비트입니다. 처음 해보면서 느낀 것은 그냥 꾸준히 취미로 해도 굉장히 재미있을 것 같다는 생각이 듭니다.

I was able to make a game with the changed plan that I talked about in the last development journal as the sink problem which was a problem for a few days was solved. Because this part was very difficult and hard to find.

And I'm trying to make BGM. I'm still practicing, but ... so I made this bit. The first thing I feel when I try it is that I think it will be very interesting even if it is constantly hobby.

허접한 연습용 곡이었지만 이런 식으로 드럼비트가 많이 들어간 BGM까지 제작하고 싶습니다.

모두 읽어주셔서 감사합니다. 사실 싱크 맞추는 문제가 문제점을 찾아내고 해결하는데 굉장히 오래 걸렸는데 막상 이렇게 일지로 쓰기에는 나온 것이 별 볼일이 없네요.

다음에는 더 멋있게 만들어진 상태로 가져오도록 노력하겠습니다. 틈나는대로 비트도 찍어보구요!
다들 읽어주셔서 감사합니다.

좋은 주말 보내시기를 바라겠습니다.

I would like to make BGM which contains a lot of drum beat in this way though it was a trivial practice song.

Thank you for reading all of this. In fact, sinking problems took a long time to find and solve problems.

Next time I will try to bring it to a more beautiful state. Try to take a beat as I do!
Thank you for reading.

I hope you have a good weekend.



---출처---


[ 리듬 게임, 날아들어오는 비트와 소리의 박자가 맞아야 리듬 게임을 할 때 난다 ]
youtu.be/N_3ooCIXG7s

[ 비디오 랙, 오디오 랙에 관련된 정보 ]

[ 랙 해결을 위해 사용되는 방법 ]
https://www.youtube.com/watch?feature=player_detailpage&v=MoUIQr2pTAw#t=54s

[ 입출력 랙 ]

[테스트 곡]

[ Crypt of the necrodancer ost의 bpm ]
http://crypt-of-the-necrodancer.wikia.com/wiki/Music



---source---


[Rhythm game, rhythm game should be beat rhythm beat beat of sound when I'm playing]
Youtu.be/N_3ooCIXG7s

[Video Rack, Information Related to Audio Rack]

[Method used to solve the rack]
Https://www.youtube.com/watch?feature=player_detailpage&v=MoUIQr2pTAw#t=54s

[Input / Output Rack]

[Test Song]

[Crypt of the necrodancer ost bpm]
Http://crypt-of-the-necrodancer.wikia.com/wiki/Music

Sort:  

굉장히 까다로운 직업을 하고계시는 군요.
빨리 완성된 모습이 보고싶네요.ㅎㅎ

감사합니다. 헤헤... 처음 만들어보는 종류의 게임이라 시행착오가 굉장히 많습니다. 특히 싱크 맞추는 부분은 제 실수 때문에 굉장히 오래 걸렸지만... 어느정도 사이즈가 되는 게임은 위에 있는 인,아웃풋, 시스템적인 처리속도 라든가 이런 부분까지도 다 고려해야하더라구요. 왜냐하면 리듬 게임에서 싱크라는게 0.x초 차이도 꽤 크게 나는 거라서....

나름 재미있게 하려고 합니다. 답글 달아주셔서 감사합니다. 행복한 주말 되시기를 바랄게요!

크립트 오브 네크로댄서... 못해먹겠더라고요...

리듬게임이 되면 싱크 맞추는게 가장 중요하죠!
잘 해결하셨다니 대단합니다...
글 잘 읽고 갑니다 :)

답글 감사합니다. 그냥 저런 시스템 자체에 흥미가 있더라구요. 팔짝팔짝 뛰면서 ㅎㅎ;; 보통 저는 게임 만들 때 재미있어 보이는 시스템 구현이 1등입니다... 그러다보니 참 완성시키가 힘든 것 같아요. 헤헤...

저도 팔로우 하겠습니다. 늦은 밤인데 답글 감사드려요!

지정된 시간이 됬거나 지났을경우 노트생성
노트 위치 = 생성될때 노트위치-지연된 시간만큼 이동했어야 할 거리
전 이런식으로 싱크를 맞추고있어요

저도 딴 문제라고 생각해서 어렵게 생각했다가.. 결국엔 다른 쪽에 문제였습니다.. 말씀하신 것처럼 ㅜㅜ

와 엄청나다! 푸울~스택 만능 게임개발자분 여기계시네요ㅎㅎ 브금 영역까지 가시다니 ㅠㅠ 정말 인디개발자는 만능이군요ㅎㅎ 정말 잘봤고 너무 재미있게봤습니다^^