로그와 디버깅은 게임개발에 있어서 매우 중요한 역할을 수행한다.
로그
로그는 콘솔 아웃풋에 메시지를 알리는 기능을 수행하는데, 대표적으로 카테고리,로깅수준,형식,인자등을 알려준다.
아래는 UE4공식문서에서 로그인자들을 추려서 적은것이다.
namespace ELogVerbosity
{
enum Type
{
NoLogging =0,
Fatal //수준 로그는 항상 콘솔 및 로그 파일에 출력되며 로그가 비활성화된 경우에도 작동이 중단된다.
Error //수준 로그는 콘솔 및 로그 파일에 출력되며, 이 로그는 기본적으로 빨간색으로 표시된다.
Warning //수준 로그는 콘솔 및 로그 파일에 출력되며, 이 로그는 기본적으로 노란색으로 표시된다.
Display //수준 로그는 콘솔및 로그 파일에 출력된다.
Log //수준 로그는 로그 파일에는 출력되지만, 게임 내의 콘솔에서는 출력되지 않지만, 에디터의 출력 로그 탭을 통해서는 계속 출력된다.
Verbose //수준의 로그는 로그 파일에는 출력되지만, 게임 내의 콘솔에는 출력되지 않는다. 일반적으로 자세한 로깅 및 디버깅에 사용된다.
VeryVerbose //수준의 로그는 로그 파일에는 출력되지만, 게임 내의 콘솔에는 출력되지 않는다. 이 수준의 로그는 일반적으로 대량의 로그를 출력하는 상세한 로깅에 사용된다.
All,
NumVerbosity,
VerbosityMask =0xf,
SetColor =0x40,
BreakOnLog =0x80,
}
}
Warning과 Error메시지를 테스트해보자
void AMyActor::BeginPlay()
{
Super::BeginPlay();
UE_LOG(LogTemp, Warning, TEXT("Begin %d"), 4);//카테고리,로깅수준,형식,인자
}
// Called every frame
void AMyActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
UE_LOG(LogTemp, Error, TEXT("Tick %f"),DeltaTime);
}
콘솔아웃풋창에 이러한 로그들이 찍히는것을 알 수 있다.
이러한 로그들은 해당 프로젝트의 Saved파일에 저장된다.
디버깅
유니티의 경우 코드에서 즉각적으로 BreakPoint등을 잡아 디버깅이 가능하지만 언리얼의 경우 다소 다른점이 있다.
Visual에서 디버깅을 눌렀는데 언리얼이 켜지고 플레이 버튼을 눌러야 디버깅을 시작하는 현상이 일어나며 디버깅을 종료하면 엔진자체도 꺼지는 현상이 일어난다.
그러므로 언리얼에서는 에디터를 먼저 실행하고 코드의 바뀐 부분만 실행하는 것을 핫 리로드라고 한다.
디버깅 종류
DebugGame/Editor: 개발할때 일반적으로 사용하는 Debug모드와 동일. 최적화가 덜 되어 있지만 디버깅 정보가 들어가 있기 때문에 실행파일의 상태를 확인할수 있음.
Development/Editer: 개발할때 사용하는 Release모드와 동일. 디버깅 정보를 삽입하지 않고 코드를 최적화한다.
Shipping: 최종적으로 제품을 완성해서 배포할때 사용. 가장 타이트하게 최적화를 해준다.
Non Editer와 Editer의 차이
Editor와의 차이는 DebugGame의 경우 exe파일을 생성하여 디버깅하는데, 이때 아트리소스나 기타소스들이 실행파일에 묶여서 실행되는 것이 아니며 별도의 폴더및 소스를 같이 제공해야한다.반면 Editor의 경우 Editor상에서 돌아가는 dll을 생성해준다.
'UE4' 카테고리의 다른 글
Ureal) 언리얼 게임엔진의 이해 (0) | 2021.11.03 |
---|
댓글