Unreal Engine 기본개념

주상돈·2025년 1월 8일

TIL

목록 보기
11/53

언리얼 엔진은 개인 개발 엔진이다. 1988년 에픽 게임즈Epic Games가 개발했으며, 1인칭 슈팅 게임(FPS)을 위해 만들어졌다. 지금은 대전 게임, RPG, 스텔스 게임, MMORPG 등의 게임을 만드는 데에도 쓰인다. 주로 C++ 언어가 사용되고, 게임 개발자들 사이에서도 유명하고 잘 쓰이지만 대부분의 개발자들은 게임 개발을 위해 유니티를 사용한다. 유니티는 초보자들과 신입들이 사용하기 좋은 기본적인 개발 기술을 제공하기 때문이다.
언리얼 엔진에대해 더욱 자세히 알고 싶다면
-> 언리얼 엔진 위키백과

언리얼 엔진의 특징

키워드를 통해 한번 알아보자.

1️⃣ 실시간 렌더링 기능
언리얼 엔진은 실시간 렌더링 기술이 뛰어나서 최상의 비주얼을 손쉽게 구현 가능하다.

2️⃣ 블루 프린트
아무리 좋아도 구현이 복잡하면 안된다
블루 프린트를 활용하면 프로그래밍을 몰라도 게임 로직을 만들 수 있다.
바로바로 눈으로 확인하면서 개발 할 수 있다.

3️⃣ 모든 플랫폼에서 가능
PC, 콘솔, 모바일 까지 한번에 지원된다.
한번의 구현으로 다양한 기기에 배포가 가능하니 효율이 좋다.

4️⃣ 활성화된 커뮤니티
튜토리얼이 잘 작성되어있고 포럼이 활성화 되어있다.

액터란?

👉 언리얼 엔진에서 게임에 배치될 수 있는 모든 객체를 통틀어서 엑터 라고 한다.

예를 들어 비행기 게임에서 비행기가 될수도 있고, RPG 게임에서 주인공도 엑터가 될 수 있다.
이번 시간에는 간단하게 엑터를 생성하고 로그를 출력하는 실습을 해보자.

Actor의 생성

1️⃣ 틀에서 새로운 C++ 클래스를 선택 한다.

2️⃣ 액터를 클릭하시고, 다음을 누른다.

3️⃣

액터의 이름을 입력하고 클래스 생성을 누른다 이때 액터 이름을 공백이나 한글로 하지 않는걸 권장한다.

4️⃣ 액터가 만들어지고 Visual Studio가 입력 된다. 아래와 같이 UE_LOG를 추가하고 저장한다.

해당 부분을 간략히 설명드리면 엑터가 동작할때 수행되는 함수이다.

5️⃣ 다시 언리얼 엔진으로 콘텐츠 드로워를 통해 생성한 Actor 를 화면에 배치 하자.

6️⃣ 코드를 실행한 후 출력로그를 확인해보자.

로그 출력 좀더 알아보기

언리얼 엔진에는 다양한 로그 출력 방법이 있지만 UE_LOG에 대해 좀더 알아보자.

👉 UE_LOG를 사용하게 되면 언리얼 엔진의 출력 로그에서 확인할 수 있다.
프로그램 실행 도중 문제가 발생하거나 특정 정보를 확인하고 싶을 때 UE_LOG를 활용하면 쉽게 찾을 수 있다.

UE_LOG의 구조

👉 UE_LOG는 3가지로 구성되어 있습니다.

1️⃣ 카테고리

태그를 붙인다고 생각하면 된다. 특정 카테고리만 분류해서 보고 싶을때 많이 활용된다.
자신이 카테고리를 만들수도 있고 보통 LogTemp를 많이 쓴다.

아래 처럼 언리얼 엔진에서 카테고리별로 선택 가능 하다.


2️⃣ 심각성

중요도에 따라 심각성을 분류할 수 있으며, 각 로그는 색이 다르게 출력된다.

심각도콘솔 출력 색상
Log일반적인 메시지, 색상 없음 (기본 검정 텍스트, 흰색 배경) 또는 흰색.
Display파란색 (일반 정보를 강조하기 위해 표시).
Warning주황색 또는 노란색 (경고 메시지를 시각적으로 강조).
Error빨간색 (문제가 되는 상황을 강조).
Fatal빨간색 (치명적 오류이며 이후 프로그램 종료).

3️⃣ 실제 출력할 내용
실제 로깅할 내용이다.

void TestUELogExamples()
{
    // 1. 일반 로그(Log) - 개발자가 디버깅을 위해 사용하는 기본 메시지
    UE_LOG(LogTemp, Log, TEXT("Game has started. Player has joined the game."));

    // 2. 중요 정보(Display) - 항상 표시되는 정보 메시지
    FString PlayerName = TEXT("Player1");
    UE_LOG(LogTemp, Display, TEXT("Welcome, %s! Enjoy the game."), *PlayerName);

    // 3. 경고(Warning) - 잠재적 문제가 있을 때 경고를 출력
    int PlayerHealth = 50;
    if (PlayerHealth < 100)
    {
        UE_LOG(LogTemp, Warning, TEXT("Player health is below maximum: %d"), PlayerHealth);
    }

    // 4. 오류(Error) - 실행에 영향을 줄 수 있는 문제
    int AmmoCount = 0;
    if (AmmoCount == 0)
    {
        UE_LOG(LogTemp, Error, TEXT("No ammo left! Player cannot shoot."));
    }

    // 5. 문자열 결합 - 다양한 데이터를 한 메시지로 출력
    int Score = 150;
    int TimeLeft = 120;
    UE_LOG(LogTemp, Log, TEXT("Score: %d, Time Left: %d seconds."), Score, TimeLeft);

    // 6. 부동소수점(Floating Point) 값 출력
    float PlayerSpeed = 325.5f;
    UE_LOG(LogTemp, Display, TEXT("Player speed: %.2f units/sec"), PlayerSpeed);

    // 7. 여러 심각도 사용 - 게임 상태에 따라 로그를 구분
    bool bIsPaused = true;
    if (bIsPaused)
    {
        UE_LOG(LogTemp, Warning, TEXT("Game is currently paused."));
    }
    else
    {
        UE_LOG(LogTemp, Log, TEXT("Game is running normally."));
    }

    // 8. 디버깅용 메시지 (Developer Note)
    UE_LOG(LogTemp, Display, TEXT("This message is for developers to debug the game state."));
}

0개의 댓글