0. 수업 전 안내
2주차에서 이어지는 내용이기 때문에 2주차의 내용을 이해했다는 전제 하에 수업을 진행함.
https://dev-sieun.tistory.com/m/132
타격감을 위해 필요한 과정
- 공격이라고 정의내린 액션을 취하는 순간에
- 플레이어 캐릭터 매쉬가 공격 액션 애니메이션을 취하면서
- 적절한 타이밍에 적절한 재질의 사운드를 발생시키는 것
이번 강의에서는 BGM에 대해서 다루고, 시간이 되면 FMod, Wwise를 이용한 Fade in/ out까지 다룰 예정.
이번 주차 제목 : 게임 배경음악 제작 및 구현 - 제가 프로그래머인데 도대체 박자를 왜 알아야해요? (알아야됨)
기획자는 오브젝트의 재질, 사운드와 관련된 내용의 기재를 해 주어야 함.
컨셉, 시스템 뿐만 아니라 어떤 사운드가 어떤 타이밍에 발생하는지의 내용의 기재는 중요하다.
인코딩, 디코딩에도 저작권이 있어 게임 회사에서 ogg를 사용하는 경향이 있다.
1. 게임 사운드의 역할과 특징 (지난 주 이어서)
게임 사운드의 특징
a. 게임 사운드는 시간축에 고정되지 않음
- 플레이어에 따라 게임의 진행속도가 다름
b. 게임 사운드는 무한 반복의 형태를 가져야 함
- 플레이가 중단되기 전까지 소리가 중단되면 안됨
Loop 시연 - Maple story 헤네시스 BGM
마냥 반복만 한다고 제대로 음악의 루프가 되거나 품질이 좋아지지 않는다.
수많은 게임회사에서 루프를 하는 것을 어려워해서 아예 계속 루프가 되게끔 만들어달라는 요청을 많이 한다.
사운드를 한땀한땀 조절하여 완벽한 루프를 만들겠다는 것은 그림판에서 브러쉬로 완벽한 원을 그리려고 하는 것과 같다.
Q. 템포는 사운드 디자이너가 해 주고, 프로그래머는 셋업만 해 주면 되는 게 아닌가요?
A. 프로그래머도 템포에 대한 이해가 필요하다. 템포 깎는 노인이 되고 싶지 않다면.
이렇게 길게 이야기를 계속해서 하는 이유는 중요하기 때문이다.
영상 시청 - Rayman Legends: Castle Rock [100%]
2. Cakewalk 실습 진행
GoPicnic.wav 사용
상단 View > Tempo (Alt + Shift + F5)를 클릭하면 칸이 생긴다.
확대, 축소를 하다 보면 숫자가 적힌 것을 확인 할 수 있다. 몇 번째 마디인지를 의미함.
우클릭 > Update BGM Display During Playback의 체크를 해제 해 준다.
박자에 맞춰 탭을 눌러 템포를 셀프로 체크 할 수 있다.
플레이 버튼을 눌렀을 때 메트로눔이 동작하도록 켤 수 있다.
음원 파형을 확대 해 보면 크게 삐죽 튀어나온 부분을 확인 할 수 있다. 이 부분을 박자로 이해하는 것이 좋다.
선율이 어디서부터 나오는지를 체크하면 된다.
메트로눔은 마디 시작점을 기준으로 나온다.
메인 음이 마디의 시작과 맞아야하고, 맨 뒤로 넘어가 이후에도 템포가 일치하는지를 확인해야한다.
선율이 시작하는 부분과 마디를 매칭 해 주거나 앞부분의 빈 공간을 잘라주는 식으로 싱크를 맞출 수 있다.
가장 근접거리인 뒤의 마디로 밀어주는 방식이 가장 심플한 해결 방법이다.
3. 루프를 최적화, 자연스럽게 구현하는 방법
루프를 위해서는 자연스럽게 동작하도록 설정 해 주어야 한다.
자연스러운 루프를 위해 되도록 4또는 8의 배수로 이동하여 루프 하는 것이 좋다.
ctrl + page up / down을 활용하여 마디를 쉽게 이동 할 수 있다.
2박자 : 쿵/ 짝이 가장 쉬운 리듬 방식이다.
하지만 2박자만으로 음악적 아이디어를 전개하기에는 너무 짧기 때문에 4박자를 많이 사용한다.
가장 쉬우면서 전달이 편한 것이 4/4박자.
2의 배수로 연결을 하면 자연스럽지 않을 수는 있겠지만, 연결은 할 수 있다.
하지만 되도록 4, 8의 배수로 연결하는 것이 좋다.
반복된 음악을 재생하는 데에 n배의 음악을 사용하는 것은 최적화적으로 낭비이다.
위와 같은 반복 형태를 인트로 루프라고 부른다.
FMod, Wwise를 사용하지 않고 직접 기능을 구현하려면 프로그래머의 실력이 중요해진다.
생각보다 많은 프로그래머들이 어려워하는 작업.
대형 회사들도 인트로루프를 잘 모르는 경우가 많다. 교수님은 인트로루프가 무엇인지 반문하는 회사 중에서 인트로 루프를 제대로 구현 할 줄 아는 회사는 한 번도 본 적이 없다. (빅데이터)
유니티, 언리얼의 내장 기능을 사용 할 수도 있겠지만 작업을 하나하나 다 해줘야하는 문제가 생긴다.
하나의 스테이지에서 두 개 이상의 BGM을 사용해야 하는 상황 등. 하나하나 음원을 뽑아줘야하는 등의 문제가 생긴다.
인트로 루프가 포함된 노래를 처음부터 끝까지 루프하게 되면 유저들은 노래가 반복 될 때 마다 몰입이 깨지게 된다.
미들웨어를 사용하지 않고 네이밍을 통해 전달 해 주는 방식
ex : stage01_T125_I2_L19
스테이지 01 음악, 템포 125, 인트로 2마디, 루프 19마디.
프로그래머가 템포를 직접 맞추고 루프 포인트에 맞춰 마디마다 셋업을 해 주어야 한다.
그 모든 과정을 프로그래머가 직접 연구해야 함.
이 연구 과정이 귀찮다면 더더욱 FMod와 Wwise를 사용해야 한다.
4. FMod를 사용하여 인트롤로 루프를 구현하는 방법
Add Tempo Marker를 사용하여 템포를 설정 해 주고, 루프 포인트를 잡아준다.
간단하게 인트로 루프를 구현 가능.
5. Wwise를 사용하여 인트롤로 루프를 구현하는 방법
사운드 디자이너는 Wwise가 편하지 않지만, 프로그래머들은 Wwise를 더 선호하는 경향을 보인다.
PlayListContainer에 PlayList를 만들어주어야 한다.
이 칸이 PlayList. 음원의 추가를 위해서는 꼭 드래그 & 드롭을 해야한다. 클릭을 하면 UI가 바뀌기 때문.
Wwise는 UI의 불편함 때문에 익숙해지기 전까지 자잘한 실수가 많이 일어나게 될 것.
관련된 기능들이 무엇인지를 세세히 배우는 것은 불가능. 관련 내용은 사운드 수업을 수강해야 한다.
시각적으로 보기 어려운 문제는 있으나, 간단하게 구현 가능하다.
오른쪽의 Loop Count를 이용하여 조절 해 주어야 한다.
Infinite로 설정해야 무한 루프가 진행된다.
하나로 되어있는 음악은 어떻게 하는가?
일단 플레이리스트 컨테이너에 넣어야 함.
Tempo와 박자를 지정 해 주어 해결 할 수 있다.
(대충 Wwise의 UI에 대한 욕)
음원 세팅에서 직접 지정 해 줄 수 있다. 이 과정이 사운드 디자이너에게는 매우 불편한 편.
Loop Point는 상위의 Parent에 정보가 있으며, 부모에서 세팅 해 주어야 한다.
6. BPM과 Frame의 계산
BPM이라는 단어를 리듬게임을 플레이 해 본 사람은 알고있을 것이다.
BPM = Beat Per Minute (분당 박자 개수)
1s = 1,000ms
1m = 60s
따라서 1m = 60,000ms
60,000 / 120 = 500
한박자는 500ms
반박자는 250ms
게임이 초당 60 frame일 경우
1frame = 16.7ms
1m = 3600 frame
이를 토대로 몇 프레임에 노트가 떨어져야하는지를 계산하면 된다.
7. 마무리하며...
기본 효과음, 복잡한 효과음, 배경음악을 만드는 방법에 대해 간단하게 진행 해 보았다.
더 깊은 내용을 다루기에 시간이 부족해서 아쉬움. 자세한 내용은 수업에서 진행 예정.
흥미로웠던 질문
관련 설명을 진행 해 주셨지만, 제대로 이해하지는 못 했음. 10:40분 부근 재시청 필요. 이펙터가 필요하다고 언급됨.
음향학적으로 거리 감쇄 등 플러그인 셋팅 및 변수 설정 등의 작업이 필요하여 최소 4시간은 설명이 필요함.
다음 학기에 배경음악 수업을 수강 예정이기 때문에 여쭤 볼 예정.
'스터디' 카테고리의 다른 글
[특강] 교수님 우리 프로젝트 망했어요 (1) | 2023.09.11 |
---|---|
[청강대 2023 ARVR Festa] 공모전 출품작 - VR 슈팅게임 Project: P 플레이 영상 (0) | 2023.08.26 |
[특강] 게임 사운드 제작 기초 및 응용 - 2주차 : 게임 효과음 제작, 미들웨어 사용 (0) | 2023.08.14 |
[특강] 게임 사운드 제작 기초 및 응용 - 1주차 : 기본 게임 사운드 이론, 셋업 (0) | 2023.08.07 |
[특강] 밸런스와 파이썬 (0) | 2023.07.28 |