C++/Game

[게임 프레임워크 개발 일지] #16 일단 마무리

Kareus 2023. 8. 9. 11:06

최근에 개발을 마무리지었습니다.

쓰다 보면 또 부족한 게 무더기로 나올 느낌이지만, 일단은 말입니다.

사실 포스팅으로 쓸 건 없는데 마무리는 해야 되겠다 싶어서 글을 씁니다.

 

1. 윈도우가 여러 개일 때 루프 처리

일반적으로는 윈도우는 하나만 띄워둡니다만, 윈도우를 Entity로 추가한 이상

여러 개가 동시에 있는 것도 구현을 해야겠죠.

 

실제 인게임은 Scene의 loop로 돌아가니, 메인에서 렌더링만 처리해줬습니다.

//previous version
while (window->isRenderable())
{
    sf::Time delta = clock.restart();

    loop(delta.asSeconds());
    window->render();
}

->

while (true)
{
    auto windows = mainEntities.getEntitiesAs<Window>();
    if (windows.empty()) break;

    sf::Time delta = clock.restart();
    loop(delta.asSeconds());

    for (auto window : windows)
    {
        if (window)
        {
            if (window->isRenderable()) window->render();
            else mainEntities.destroy(window->getEntityID());
        }
    }
}

모든 윈도우가 닫히면 루프에서 빠져나옵니다.

예외 경우가 있으면 그건 이벤트로 처리해야겠죠.

 

2. 안 만들래

처음에는 모드나 모바일 플랫폼을 고려해봤는데, 얘는 지금은 건드릴 수 있는 게 아닌 것 같습니다.

모드는 게임을 실제로 만들 때나 생각할 수 있는 것이고, 모바일은 굳이 해야되나 싶네요.

난이도도 저한테는 높을 뿐더러, 뭐라도 만들기나 할 것이지 왜 이런 걸 고민하고 있나 싶기도 하고...

 

3. SFML 2.6

2023년 6월 말 즈음에 2.6이 드디어 나왔습니다.

버전 2로써는 마지막으로 나오는 버전이고, 이제 3.0을 만든다고 하네요.

 

추가된 기능이 여럿 있습니다만, 잘은 모르겠습니다.

알기 쉬운 건 mp3 포맷 지원이 드디어 추가됐다는 것이군요.

이제 SoundFileReader 어쩌고를 따로 등록하지 않아도 됩니다.

 

4. github에 올리려고 했는데

라이브러리 파일로 빌드하고, 사용하려고 보니까 dependency가 너무 많습니다.

SFML도 쓰고, entt도 쓰고 개인적으로 만든 충돌 알고리즘 라이브러리도 씁니다.

2.6으로 업그레이드 된 게 아니었으면 minimp3도 썼을 겁니다.

#14에서도 다룬 거지만, sound panning을 하려면 SoLoud 같은 라이브러리도 끌어와야 됩니다.

 

라이브러리 이름 뭘로 할지 고민까지 하면서 namespace로 다 묶어놨더니

막상 남들에게 공개하기 좀 그렇게 됐네요. 이건 보류해야겠습니다.

뭐 지금도 그렇고, 누가 신경이나 쓰겠습니까

 

 

속도로 보아하니 10년만 기다리면 게임을 만들겠네요

이야 신난다