2025-05-23 TIL

알고리즘 문제

이번 문제도 잘 풀어내지는 못했습니다.
하지만 문제를 이해하거나 분석하는 것에는 크게 어려움을 느끼지 않았는데, 알고리즘을 구현하는 단계에서 어려움을 느껴 풀어내지 못했습니다.
답을 봤을 때에는 알고리즘이 크게 어렵지 않아서 많이 아쉽습니다.
열심히 알고리즘 문제도 학습해서 3레벨 문제들도 잘 풀어내고 싶습니다.
[프로그래머스][C++] 풍선 터트리기

최종 프로젝트

오늘은 오류를 수정하고, 구현된 로직을 연결하는 등 다음과 같은 작업을 진행했습니다.

  1. 인코딩 오류 수정
  2. 무기의 애님 레이어 적용
  3. 팀 내부 간이 시연회

인코딩 오류 수정

#define RS_LOG_C(Str, Color) \
UE_LOG(LogTemp, Warning, TEXT(Str))\
if (GEngine) \
{	\
GEngine->AddOnScreenDebugMessage(-1, 5.f, Color, TEXT(Str)); \
}

위의 코드에서 Str에 한글을 입력하여 사용하면 사용한 소스 파일에서 오류가 나는 문제가 있었습니다.

우선 문제를 추측하기 전에 발생한 오류에 대한 출력을 확인해 보았습니다.
“상수에 줄 바꿈 문자가 있습니다.”라는 오류가 출력됐는데, 구글링하여 검색해보았습니다.
구글링 했을 때 유니코드(UTF-8)로 저장하면 해결할 수 있다는 글을 찾았고, 한번 시도해보았을 때 문제가 해결된다는 것까지 알 수 있었습니다.

C++에서 프로젝트를 진행할 때 유사한 경험이 있었어서 그 경험과 이번 문제의 사실을 정리하여 무엇이 문제일지 추측을 해보았습니다.

우선 이번 문제의 사실은 다음과 같습니다.

  • UTF-8을 사용해야 한글로 로그를 사용할 수 있다.
  • 현재 RS_LOG_C에서 한글을 사용할 경우 오류가 난다.

이제 경험과 이번 문제의 사실을 통해 다음과 같이 추측해보았습니다.

추측한 내용은 비주얼 스튜디오에서는 기본적으로 인코딩을 코드 페이지 949라는 설정으로 돼있는데, 언리얼 엔진의 경우 유니코드를 기준으로 TEXT함수를 사용하기 때문에 문제가 된 것 같습니다.
그렇기 때문에 인코딩을 유니코드로 변경한다면 해당 문제가 해결된다고 생각합니다.

무기의 애님 레이어 적용

애님 레이어는 이전에 애니메이션 레이어 인터페이스를 미리 준비하고, 해당 인터페이스가 부여된 애님 인스턴스를 생성하는 등 필요한 작업을 미리 해두었습니다.
그렇기 때문에 LinkAnimClassLayersUnlinkAnimClassLayers를 사용해 애님 레이어를 적용하거나 해제하는 로직만 작성했습니다.

해당 연결은 무기를 장착하거나 해제하는 로직에 추가로 코드를 작성해주어 기존 로직에 섞이도록 구현했습니다.

간이 시연회 준비

오늘 간이 시연회 준비를 위해 게임 플로우에서 연결되지 않은 로직을 연결해주고, 기타 버그들을 수정했습니다.
그리고, 패키징을 시도했는데 패키징이 되지 않는 문제가 있었습니다.

패키징의 오류는 다음과 같이 출력 됐습니다.

Assertion failed: IsInGameThread() [File:C:\SampleProject\UE\UnrealEngine\Engine\Source\Runtime\CoreUObject\Private\Serialization\AsyncLoading.cpp] [Line: 7453] 
LoadPackageAsync is only thread-safe when using the zenloader (i.e. AsyncLoading2).

이 오류를 구글링하여 검색해보아도 정보가 잘 나오지 않았습니다.

추측하기에도 쉽지 않아서 튜터 선생님에게 어떻게 이 문제를 접근해야할지 여쭤보았습니다.
튜터 선생님의 답변은 패키징을 계속 하다보면 프로젝트에 더미 파일들이 쌓이기도 하고, 다른 파일들에 의해 패키징이 영향을 받을 수 있다고 하셨었습니다.

그래서 프로젝트에 필수가 아닌 파일들 예를 들면, Saved, .vs, .sln 등 파일들을 제거해주었습니다.
그 후 프로젝트들 다시 빌드하여 패키징을 시도해보았고, 이 경우 패키징이 잘 되었습니다.

앞으로 패키징 할 때에도 충분히 이런 일이 발생할 수 있기 때문에, 잘 기록해두고 기억하는게 좋을 것 같습니다.

간이 시연회의 결과는 아쉬운 점이 많았습니다.
게임의 전체적인 플로우가 잘 구현되지 않았고, 각 로직들에 버그들이 존재하였습니다.

전체적인 플로우를 구현하지 못한 문제는 팀원들의 작업이 게임 플로우에는 중요하지 않은 작업들을 수행했기 때문에 발생한 것 같습니다.
그렇기 때문에 팀원들의 일정과 작업에 대해서 다시 한번 재정비 해보았습니다.

각 로직들에 버그가 존재하는 것은 팀에서 다같이 한번 테스트하거나 테스트를 담당하는 담당자를 한명 두면 해결할 수 있을 것으로 생각합니다.
다같이 한번 테스트하는 것은 모두 작업이 멈추기 때문에 테스트를 담당하는 담당자를 한명 두고, 필요한 테스트를 전달하여 결과를 받는 식으로 역할을 분담하여 해결하려고 합니다.

Date:     Updated:

카테고리:

태그:

TIL 카테고리 내 다른 글 보러가기

댓글남기기