DevLog/D2D11 프로젝트

[Devlog-DX11] HOLLOW KNIGHT 모작 - Audio 기능

게임 개발 2024. 10. 17. 19:43

 
Sound 클래스에서 STL map 을 이용한 SoundList를 관리한다.
Key에는 해당 사운드를 불러올 string 을 넣어주고, 
Value에는 SoundNode 구조체를 가지고 있다.
 
따라서 Key값의 string 입력에 규칙을 정하면 음원 관리가 가능하다.
 
아래는 음원 규칙에 관련된 코드이다.
E는 effect관련이며 (NPC대화 목소리, UI 소리 등)
M는 배경음악을 관리한다.
 

void Sound::SetAllVolume(float scale)
{
    for (auto iter = SoundList.begin(); iter != SoundList.end(); iter++)
    {
        iter->second->channel->setVolume(iter->second->volume * app.soundScale * scale);
    }
}

void Sound::SetEffectVolume(float scale)
{
    for (auto iter = SoundList.begin(); iter != SoundList.end(); iter++)
    {
        if (iter->first[0] == 'E')
        {
            iter->second->volume = scale;
            iter->second->channel->setVolume(iter->second->volume * app.soundScale);
        }
    }
}

void Sound::SetMusicVolume(float scale)
{
    for (auto iter = SoundList.begin(); iter != SoundList.end(); iter++)
    {
        if (iter->first[0] == 'M')
        {
            iter->second->volume = scale;
            iter->second->channel->setVolume(iter->second->volume * app.soundScale);
        }
    }
}

 
 
그 외에도 STL map을 이용하여, 
UIManager, LevelManager를 만들어 사용하고 있다.
 
UI에는 HUD클래스들을 들고있는 Map을 가지고 있다.
이 HUD를 상속받은 클래스들을 통해서 Menu만든다.
씬 이동은 하지 않되, 화면에 띄우고 사라지는 기능을 하기 위해서 만들었다.
 
오디오 UI 영상 업로드
 

 
 
 
HUD와 Menu&&& 사이에 Menu클래스를 하나 더 만드는 게 좋을지,
이게 불필요하게 과도한 클래스화일지 아직 잘 모르겠다.
 
D2D11 플젝에 블룸필터 적용해서 블러처리 넣으면서,
D3D11 강의 다시 슬슬 봐야겠다.

12월 안에는 할로우 나이트 끝내놓자
 
D3D11 툴 만들기까지 꼭 해봐야겠다.
이후에 언리얼 다시 만져보면서 구조 익혀보자.
내일은 언리얼도 만지자.