2022/12/02 개발 일지
UGameInstance을 C++에서 상속 받은 후 다시 블루프린트에서 상속받아서 사용할 경우 블루프린트에서 호출한 Shutdown가 호출 안되는 문제
만약 C++코드에서 UGameInstance을 상속 받아서 오버라이드 한 후 해당 함수에서 Super::Shutdown()을 추가해 주지 않았다면 블루프린트에서 호출되는 Shutdown 이벤트은 호출되지 않는다. 왜냐하면 UGameInstance::Shutdown()에서 블루프린트의 Shutdown이벤트인 ReceiveShutdown()함수을 호출해 주고 있기 때문이다.
함수 뒤에 오는 const의 의미
해당 함수 안에서 아무것도 바꿀 수 없다는 의미~
ChunkDownloader은 패치 서버의 셧 다운 여부을 제대로 확인하지 못한다.
청크 다운로더은 한번 매니페스트 파일을 다운 받아 놓았다면 그 다음에 패치 서버가 접속 시도시 패치 서버가 셧 다운 되어 있어도 패치 서버가 셧 다운 되어 있는지 알 수가 없다. 그냥 엔진 단에서 Http접속 오류만 출력할 뿐이다.
즉 청크 다운로더의 에러을 출력하는 부분에서는 아무런 오류을 출력하지 않는다.
청크 다운로더가 패치 서버의 셧 다운 여부을 확인할 수 있는 방법은 기존에 다운 받은 매니페스트 파일을 삭제한 상태에서만 패치 서버 접속을 시도할 때 뿐이다.
따라서 청크 다운로더을 실행하기 전에 Http관련 기능패치 서버의 실행 여부을 확인하는 로직을 먼저 실행 시켜서 그에 따른 예외 처리을 해 줘야 한다.
ChunkDownloader의 문제점
1.패치 서버의 매니페스트 파일이 갱신되어도 클라이언트의 청크다운로더는 인식하지 못한다.
2.일단 문서에서는 청크다운로더가 패치 서버의 갱신된 매니페스트 파일을 다시 다운 받게 하는 방법은 ContentBuildId을 갱신하는 방법 뿐 이라고 한다. 즉 FChunkDownloader::UpdateBuild()메서드의 두번째 인자(ContentBuildId)가 바뀌어야 하는데 이렇게 되면 결국 실행 파일도 다시 빌드해 줘야 한다는 것이 문제다.
따라서 해결책은 별도로 Http 기능으로 패치 서버의 파일(txt)로 부터 새로운 ContentBuildId을 얻어서 실행 파일 인자로 넣어주는 방법 뿐이다.
3.결론은 청크다운로더 만으로는 기능이 완벽하지 않다. 추가적인 구현들이 필요하다.