Unreal 동적으로 생성된 타일맵의 Navigation Paths 가 제대로 적용되지 않는 문제 해결

개요

개발 중인 게임에서 외부 자료로 타일맵을 생성하도록 작업했습니다. 모든 것이 정상이라고 생각되었는데 그 위에 StateTree 를 이용한 액터를 배치하니 이상한 현상이 있었습니다. 원래 Navigation Paths 가 생성된 곳에서만 동작을 하는 것이 원칙인데 그곳을 벗어나는 문제가 있었습니다.

문제 확인 및 범위 한정

에디터에서 게임을 실행하고 P(Navigation) 키를 눌러보면 검은색의 Paths 를 볼 수 있는데 이것이 전혀 나타나지 않았습니다.

Navigation Paths 가 제대로 나타나는 경우. 아래쪽 타일에 Collision이 적용되어 있다
Navigation Paths 가 제대로 나타나는 경우. 아래쪽 타일에 Collision이 적용되어 있다

C++ 코드를 이용해서 타일맵을 생성했습니다. 수동으로 생성한 타일맵에서는 정상적으로 나타났습니다. 동적으로 타일맵이 생성될 때 타이밍이나 등록 문제 때문에 정상적으로 동작하지 않는 것으로 판단되었습니다. 그래서 이 부분을 중심으로 이리저리 코드를 변경해 보았습니다. 그리고 이상한 점이 Outliner 에서 동적으로 생성된 타일맵을 한번 선택해 주면 정상적으로 동작했습니다. 아예 안되는 것은 아니라는 것을 확인했습니다.

해결

결국 등록과 관련한 문제였습니다. 다음과 같이 타이머를 이용해서 약간의 시간 지연 후 등록과정을 거치면 정상적으로 Navigation Paths 가 나타납니다.

FTimerHandle TimerHandle;
GetWorld()->GetTimerManager().SetTimer(TimerHandle, FTimerDelegate::CreateLambda([&]() {
    GetWorld()->GetTimerManager().ClearTimer(TimerHandle);

    UNavigationSystemV1* NavSystem = UNavigationSystemV1::GetCurrent(GetWorld());
    if (NavSystem) { 
        NavSystem->OnActorRegistered(this);
        NavSystem->Build();
    }
}), 0.2f, false);

핵심은 7번째 행인데 OnActorRegistered 메소드 수행 후 빌드해 주면 정상적으로 StateTree 를 사용한 액터가 정상적으로 동작하게 됩니다.

결과만 보았을 때는 간단한 것 같지만 이것을 알아내는데 상당한 시간이 소요되었습니다. 필자와 같은 문제를 겪은 분들께 도움이 되었으면 좋겠습니다.

QCY H2 Pro

개요

요즘 대중 교통이나 길을 걸어갈 때 커다란 헤드셋을 착용하시는 분들을 많이 보게 되었습니다. 기존에 사용하던 무선 이어폰이 이상한 동작을 해서 실내에서만 사용할 목적으로 헤드셋을 알아보게 되었습니다.

수 많은 헤드셋

검색해 보니 정말 많은 헤드셋이 있었습니다. 가격도 상상을 초월하는데 너무 비싸서 살 엄두가 나지 않았습니다. 정신을 차리고 자세히 보니 가성비 헤드셋도 있었습니다. 이른바 막귀이고 입문이니 비싸지 않을 것으로 일단 경험해 보고자 하는 것이 강했습니다.

선택

아주 저가도 있었는데 선뜻 구매하기가 꺼려 졌습니다. 너무 빨리 고장이 날 것 같은 생각이 들어 가격대를 조금 높였더니 QCY H2 Pro 가 눈에 들어왔습니다.

구매

가격이 매우 비싸지는 않아 필자가 생각하고 있던 예산 범위에 들어와서 크게 고민 없이 구매했습니다. 직구 제품과 정식 수입품이 따로 있었는데 정식 수입품으로 구매했습니다. 색상은 검은색과 베이지색이 있었습니다. 베이지색이 깔끔해 보여 선택했습니다.

개봉

제품을 받아보니 생각보다 가벼웠습니다. 상자도 예상한 것 보다는 작았습니다.

QCY H2 Pro 상자
QCY H2 Pro 상자
QCY H2 Pro 상자 뒷면
QCY H2 Pro 상자 뒷면

상자 자체는 얇은 비닐로 덮여 있었습니다. 제품을 오염을 방지할 수 있어 마음에 들었습니다. 상자를 열어보니 헤드셋 본체가 비닐에 담겨 있었습니다.

상자 개봉
상자 개봉

제품을 꺼내 보니 모양이 조금 이상했습니다. 보통 완전한 헤드셋 모양으로 되어 있기 마련인데 달랐습니다.

접힌 채로 비닐에 들어있는 제품
접힌 채로 비닐에 들어있는 제품

비닐을 제거하고 보니 접혀있었습니다. 접히는 헤드셋을 처음 봤는데 신기했습니다. 보관하는 공간을 적게 차지하는 점이 좋았습니다.

접힌 것을 펴 보니 기존 헤드셋과 동일한 모양이 되었습니다. 귀를 덮는 부분이 약간 타원형으로 되어 있어서 전체를 덮을 수 있는 부분이 마음에 들었습니다. 머리 크기에 따라 조정하는 부분도 약간 씩 걸리는 느낌이 있어서 조절하기가 쉬웠습니다.

헤드셋을 펼친 모양
헤드셋을 펼친 모양
헤드셋 안쪽 모양
헤드셋 안쪽 모양
헤드셋 바깥쪽 모양
헤드셋 바깥쪽 모양

전체적으로 깔끔하고 가벼워 마음에 들었습니다.

사용

설명서를 참고해서 일단 완전 충전한 후 PC와 휴대폰과 연동을 진행했습니다. 음악을 들어보니 기존 이어폰과는 다르게 저음이 더 잘 들렸습니다. 고가의 헤드셋을 사용해 본 적이 없어 직접 비교는 불가능 했지만 가격에 비해 성능이 괜찮다고 느껴졌습니다. 도저히 들을 수 없는 음질이라는 상품평을 보기는 했는데 필자는 그 정도는 아니었고 오히려 괜찮다고 느껴졌습니다.

게임을 할 때에도 사용해 보았는데 주변음이 많이 차단되고 유닛이 커서 그런지 몰입감이 컸습니다.

한번에 오랜 시간을 사용하기는 좀 무리가 있을 것 같았습니다. 아무리 가벼워도 무게가 있어서 어느정도 사용하고 잠깐 쉬어주는 것이 필요할 것 같았습니다. 필자는 길지 않게 일정 시간 사용하고 쉬었습니다. 제품 특성 상 아주 더운 여름에는 사용하기 어려울 것 같습니다.

오랜만에 구입한 헤드셋 이었는데 상당히 만족했습니다. 가격도 부담되지 않고 들인 돈 값 정도는 사용할 수 있다는 생각이 들었습니다. 필자처럼 처음 헤드셋에 입문할 때 경험해 보아도 괜찮은 제품이라고 생각합니다.