걍 습관처럼 차량에 스테레오 깔고 있는데, 생각이 들었음. 캐릭터가 음악 들을 때 게임에서도 음악이 들려오면 어떨까? 폴아웃에서 라디오 키면 막 개쩌는 음악 나오고 것처럼 막 그러면 뽕맛 장난 아닐거 같았음. 그래서 바로 작업 시작함.


일단 가장 처음 고려한 방법은 사운드팩임. 사운드팩에 json 파일 넣어서 제법 자유롭게 여러 음향효과/브금을 넣을 수 있다 알고 있거든. 근데 이 페이지(https://github.com/CleverRaven/Cataclysm-DDA/blob/master/doc/SOUNDPACKS.md)로 들어가 사운드팩 모딩할 때 사용 가능한 세부 기능들 보니 아무래도 안될거 같음. 게임 내부 음향효과는 크게 사운드이펙트와 플레이리스트로 나뉘는데, 사운드이펙트는 뭐 할 때마다 효과음 나오는거라서 이걸로 음악 하려 하면 몇초에 한번씩 음악 새로 재생되고 그럼. 그래서 보통 배경음악 같은건 플레이리스트를 이용해서 하는데, 그쪽은 게임 내부 상태에 뭐 후킹할 수 있는 id 목록이 그냥 전무함. 그래서 이걸로 하면 어느 상황에 음악이 나오는지 조건을 걸 수 없음.


근데 더 알아보니 이런 상황에서 모딩으로 내가 바라는 기능을 구현할 길이 없더라. 그래서 걍 오늘 빨간날인걸 이용해 직접 소스코드 수정을 하기로 함. 건드려본적 없는 거대 프로젝트 직접 컴파일해야하는게 좀 부담되어서 뭐 바이트패치 같은건 안 되나 봤지만, 오픈소스라 역시 그런건 없더라. 그냥 소스 수정하면 되는데 왜 누가 굳이 바이트패치 같은거 만드는 툴에 시간 낭비하겠음. 근데 다행히 CMake가 잘 되어 있어서 컴파일은 크게 어렵진 않았음.


처음 들어가며 대강 어설프게 잡은 계획은 이러했음. 포크한 프로젝트 클론하는 동안 대충 깃헙 페이지 들어가 코드 좀 보니 일단 서로 다른 id를 통해 종류가 구분되는 플레이리스트를 구현할 수 있는 기반은 모두 다 이미 있는거 같았음. 걍 아무도 그걸 가지고 그걸 구현하지 않아서 문제지. 어찌 됬던 기존에 존재하는 유일한 id인 "title" 외에 내가 새로 "music" id를 추가하고 플레이어가 음악을 듣고 있는 동안 그 "music" id의 플레이리스트가 재생되도록 코드를 좀 추가하면 될거 같았음.


사실 말은 좀 간단한데 낯선 프로젝트라 그 구체적 방법에서 헤매야 했음. 그래도 빨간날 불태워서 대강 어찌 만들어낸거 같음.


다음 기능을 구현함.


1. 게임 내부 캐릭터가 어떠한 종류의 음악이던 듣고 있는 경우 사용중인 사운드팩에서 따로 지정 된 음악이 재생.

2. 음악을 듣지 않다 갑자기 음악을 듣게 될 경우 기존 플레이리스트 중단 후 지정 음악 재생.

3. 듣고 있던 음악이 중단 될 경우 지정 음악 재생 중단.




잘 돌아가는거 같음.