팀프로젝트 (Text RPG 거의 완료) | AI 통한 기본 개념 정리 및 문제 풀이 | 코드카타 (두개 뽑아서 더하기 & K번째수) | TIL 25th | 캠프 25일 차 | 05/27/2026 (Wed)

2026. 5. 27. 23:27·TIL/Boot Camp

팀프로젝트는 현재 거의 완료 되어서 내일 정리해서 올릴예정.

 

팀프로젝트 (Text RPG 거의 완료) | AI 통한 기본 개념 정리 및 문제 풀이 | 코드카타 (두개 뽑아서 더하기 & K번째수)

 

AI 통한 기본 개념 정리 및 문제풀이

 

개념 정리

  • 언리얼 C++ 빌드 프로세스 이해
    • 라이브 코딩은 에디터를 실행한 상태에서 코드 변경사항을 반영할 수 있는 편리한 기능이지만, 모든 변경사항을 완벽하게 지원하지는 않습니다. 클래스 구조의 큰 변경이나 헤더 파일의 일부 변경사항은 에디터 재시작이 필요할 수 있습니다. A, B, D는 모두 라이브 코딩의 올바른 특징입니다.
    • 컴파일 단계는 사람이 작성한 C++ 소스 코드(.cpp 파일)를 컴퓨터가 이해할 수 있는 기계어 형태의 오브젝트 파일(.obj)로 변환하는 과정
    • 링크 (Link) 단계
      • 여러 오브젝트 파일을 하나의 실행 파일로 결합한다
      • 외부 라이브러리의 함수 주소를 연결한다
      • 최종 실행 파일(.exe 또는 .dll)을 생성한다
    • Unresolved External Symbol 오류는 링크 단계에서 발생하는 대표적인 오류로, 선언은 되어 있지만 정의(구현)를 찾을 수 없을 때 발생.
  • Actor 생명주기와 컴포넌트 구조 이해
    • Actor의 생명주기는 Constructor(생성자) → BeginPlay(게임 시작 시 호출) → Tick(매 프레임마다 호출) → EndPlay(소멸 시 호출) 순서로 진행됩니다. Constructor는 Actor가 메모리에 생성될 때 가장 먼저 호출되고, BeginPlay는 게임이 시작되거나 Actor가 스폰될 때 호출되며, Tick은 게임 실행 중 반복 호출되고, EndPlay는 Actor가 제거될 때 마지막으로 호출됩니다.
    • BeginPlay는 게임이 시작되거나 Actor가 런타임에 스폰될 때 단 한 번만 호출되는 함수입니다. 매 프레임마다 반복적으로 호출되는 함수는 Tick 함수입니다. BeginPlay는 초기화 작업을 수행하기에 적합하며, 모든 컴포넌트가 준비된 상태에서 호출되므로 안전하게 컴포넌트에 접근할 수 있습니다.
    • DeltaTime은 이전 프레임과 현재 프레임 사이에 경과한 시간(초 단위)을 나타냅니다. 이 값을 사용하면 프레임률에 관계없이 일정한 속도로 객체를 움직이거나 변화시킬 수 있습니다. 예를 들어 이동 속도에 DeltaTime을 곱하면 프레임률이 다르더라도 동일한 속도로 이동하게 됩니다. 이는 프레임 독립적인 게임플레이를 구현하는 데 필수적입니다.
  • 언리얼 리플렉션 시스템 이해
    • 언리얼 엔진의 **리플렉션 시스템(Reflection System)**은 프로그램이 실행(런타임) 중에 자신의 구조, 즉 클래스, 변수, 함수, 속성 등의 메타데이터를 스스로 조사하고 조작할 수 있게 해주는 기능
    • 기본 C++ 언어는 리플렉션 기능을 지원하지 않지만, 언리얼 엔진은 자체적인 **프로퍼티 시스템(Property System)**을 통해 이를 구현합니다. UCLASS, UPROPERTY, UFUNCTION 같은 매크로를 사용해 C++ 코드를 작성하면, 빌드 시 **언리얼 헤더 툴(UHT, Unreal Header Tool)**이 해당 정보를 분석하여 객체의 메타데이터를 생성합니다.
    왜 리플렉션이 중요한가 (핵심 기능)
    • 에디터 통합 (디테일 패널): C++에 선언한 변수(UPROPERTY)를 언리얼 에디터의 속성 창에 자동으로 노출시키고 편집할 수 있게 합니다.
    • 블루프린트 연동: C++로 작성한 함수(UFUNCTION)나 변수를 블루프린트에서 노드로 가져와 사용할 수 있도록 연결해 줍니다.
    • 가비지 컬렉션 (GC): 메모리에 할당된 객체들의 참조 상태를 추적하여 더 이상 사용하지 않는 객체를 자동으로 해제합니다.
    • 네트워크 리플리케이션(복제): 멀티플레이어 게임에서 서버의 변수 상태를 클라이언트로 동기화할 때 객체의 속성 정보를 활용합니다.
    • 직렬화 (Serialization): 객체의 데이터를 저장(저장 및 로드)하거나 불러올 때 클래스 구조를 파악하여 데이터를 읽고 씁니다.
    주요 매크로 활용 예시
    • UCLASS(): 언리얼 엔진이 해당 클래스를 인식하고 메타데이터를 생성하도록 지시합니다.
    • UPROPERTY(): 변수를 엔진에 등록하여 가비지 컬렉션의 대상이 되거나, 블루프린트 에디터에 노출시킵니다.
    • UFUNCTION(): C++ 함수를 엔진(블루프린트 등)에서 호출할 수 있는 이벤트나 함수로 등록합니다.

    • 리플렉션 시스템은 UPROPERTY, UFUNCTION 등의 매크로를 명시적으로 사용한 멤버에만 적용됩니다. 일반 C++ 멤버 변수나 함수는 리플렉션 시스템에 등록되지 않습니다. 나머지 선택지들은 모두 리플렉션 시스템의 올바른 특징입니다.
    • UPROPERTY 매크로는 프로퍼티를 가비지 컬렉션 시스템에 등록하고, 에디터에서 편집 가능하게 만들며, 시리얼라이제이션(저장/로드)을 지원하는 역할을 합니다.
    • BlueprintCallable 지정자는 C++로 작성된 함수를 블루프린트 그래프에서 노드로 호출할 수 있게 해줍니다. 이는 블루프린트와 C++ 간의 상호운용성을 제공하는 핵심 기능입니다. 나머지 선택지들은 BlueprintCallable과 관련 없는 기능들입니다.
  • 언리얼 엔진의 강력한 기능들은 대부분 이 리플렉션 시스템을 기반으로 작동합니다.
  • 블루프린트와 C++ 연동 방식 이해
    • 블루프린트로 작성된 함수도 BlueprintImplementableEvent나 BlueprintNativeEvent를 통해 C++에서 호출할 수 있습니다.
    • C++로 작성한 함수에 UFUNCTION(BlueprintCallable)을 지정하면 블루프린트에서 호출할 수 있다
    • 블루프린트에서 구현한 이벤트를 C++에서 호출하려면 UFUNCTION(BlueprintImplementableEvent)를 사용한다
    • C++ 클래스를 블루프린트로 상속받아 확장할 수 있다

 

문제풀이

언리얼 C++ 빌드 프로세스 이해

  • 언리얼 엔진에서 C++ 코드 빌드 과정의 순서를 옳게 나열한 것은?
    컴파일 → 링크 → 실행 파일 생성링크 (Link): 컴파일된 여러 오브젝트 파일과 엔진 라이브러리, 필요한 리소스 등을 하나로 연결하여 하나의 실행 가능한 파일(예: .exe 또는 .dll)로 묶어주는 작업입니다.
  • 실행 파일 생성: 링크 과정을 통해 최종적으로 언리얼 에디터를 실행하거나 패키징할 수 있는 결과물이 완성됩니다.
  • 컴파일 (Compile): 작성한 C++ 코드(.cpp)를 컴퓨터가 이해할 수 있는 기계어 형태의 오브젝트 파일(.obj 또는 .o)로 변환합니다. 이 단계에서 문법 오류를 검출합니다.
  • A컴파일 → 링크 → 실행 파일 생성 B링크 → 컴파일 → 실행 파일 생성 C실행 파일 생성 → 컴파일 → 링크 D컴파일 → 실행 파일 생성 → 링크
  • 언리얼 엔진의 라이브 코딩(Live Coding) 기능에 대한 설명으로 옳지 않은 것은?
    라이브 코딩은 에디터를 실행한 상태에서 코드 변경사항을 반영할 수 있는 편리한 기능이지만, 모든 변경사항을 완벽하게 지원하지는 않습니다. 클래스 구조의 큰 변경이나 헤더 파일의 일부 변경사항은 에디터 재시작이 필요할 수 있습니다. A, B, D는 모두 라이브 코딩의 올바른 특징입니다.
  • A에디터를 종료하지 않고 C++ 코드를 수정하고 반영할 수 있다 B단축키 Ctrl+Alt+F11을 사용하여 라이브 코딩을 실행할 수 있다 C모든 종류의 코드 변경사항을 완벽하게 핫리로드할 수 있다 D개발 속도를 향상시키기 위한 기능이다
  • 컴파일(Compile) 단계에서 수행되는 작업으로 옳은 것은?
    컴파일 단계는 사람이 작성한 C++ 소스 코드(.cpp 파일)를 컴퓨터가 이해할 수 있는 기계어 형태의 오브젝트 파일(.obj)로 변환하는 과정입니다. A, C, D는 모두 링크(Link) 단계에서 수행되는 작업입니다.
  • A 여러 오브젝트 파일을 하나의 실행 파일로 결합한다 B 소스 코드(.cpp)를 기계어 오브젝트 파일(.obj)로 변환한다 C 외부 라이브러리의 함수 주소를 연결한다 D 최종 실행 파일(.exe 또는 .dll)을 생성한다
  • 링크(Link) 단계에서 발생할 수 있는 오류로 옳은 것은?
    Unresolved External Symbol 오류는 링크 단계에서 발생하는 대표적인 오류로, 선언은 되어 있지만 정의(구현)를 찾을 수 없을 때 발생합니다. A는 컴파일 단계의 오류이며, C와 D는 런타임 오류입니다.
  • A Syntax Error - 문법 오류 B Unresolved External Symbol - 정의되지 않은 외부 심볼 C Null Pointer Exception - 널 포인터 예외 D Array Index Out of Bounds - 배열 인덱스 범위 초과

Actor 생명주기와 컴포넌트 구조 이해

  • Unreal Engine에서 Actor의 생명주기 함수들의 실행 순서로 옳은 것은?
    Actor의 생명주기는 Constructor(생성자) → BeginPlay(게임 시작 시 호출) → Tick(매 프레임마다 호출) → EndPlay(소멸 시 호출) 순서로 진행됩니다. Constructor는 Actor가 메모리에 생성될 때 가장 먼저 호출되고, BeginPlay는 게임이 시작되거나 Actor가 스폰될 때 호출되며, Tick은 게임 실행 중 반복 호출되고, EndPlay는 Actor가 제거될 때 마지막으로 호출됩니다.
  • A.Constructor → BeginPlay → Tick → EndPlay B.BeginPlay → Constructor → Tick → EndPlay C.Constructor → Tick → BeginPlay → EndPlay D.BeginPlay → Tick → Constructor → EndPlay
  • 다음 중 BeginPlay 함수에 대한 설명으로 옳지 않은 것은?
    BeginPlay는 게임이 시작되거나 Actor가 런타임에 스폰될 때 단 한 번만 호출되는 함수입니다. 매 프레임마다 반복적으로 호출되는 함수는 Tick 함수입니다. BeginPlay는 초기화 작업을 수행하기에 적합하며, 모든 컴포넌트가 준비된 상태에서 호출되므로 안전하게 컴포넌트에 접근할 수 있습니다.
  • A.게임이 시작될 때 한 번만 호출된다 B.Actor의 모든 컴포넌트가 초기화된 후 호출된다 C.매 프레임마다 반복적으로 호출된다 D.Actor가 월드에 배치되었을 때 게임 시작 시점에 실행된다
  • Tick 함수의 DeltaTime 매개변수의 용도로 가장 옳은 것은?
    DeltaTime은 이전 프레임과 현재 프레임 사이에 경과한 시간(초 단위)을 나타냅니다. 이 값을 사용하면 프레임률에 관계없이 일정한 속도로 객체를 움직이거나 변화시킬 수 있습니다. 예를 들어 이동 속도에 DeltaTime을 곱하면 프레임률이 다르더라도 동일한 속도로 이동하게 됩니다. 이는 프레임 독립적인 게임플레이를 구현하는 데 필수적입니다.
  • A.게임 시작 후 경과한 총 시간 B.이전 프레임과 현재 프레임 사이의 시간 간격 C.다음 프레임까지 남은 시간 D.초당 프레임 수(FPS) 값

언리얼 리플렉션 시스템 이해

  • 언리얼 엔진의 리플렉션 시스템(Reflection System)에 대한 설명으로 옳지 않은 것은?B.가비지 컬렉션, 시리얼라이제이션, 네트워크 리플리케이션 등의 기능을 지원한다D.블루프린트와 C++ 간의 상호운용성을 가능하게 한다
    리플렉션 시스템은 UPROPERTY, UFUNCTION 등의 매크로를 명시적으로 사용한 멤버에만 적용됩니다. 일반 C++ 멤버 변수나 함수는 리플렉션 시스템에 등록되지 않습니다. 나머지 선택지들은 모두 리플렉션 시스템의 올바른 특징입니다.
  • C.UPROPERTY와 UFUNCTION 매크로 없이도 모든 C++ 멤버에 자동으로 적용된다
  • A.런타임에 클래스, 프로퍼티, 함수 등의 메타데이터에 접근할 수 있게 해준다
  • UPROPERTY 매크로의 주요 역할로 옳은 것을 모두 고르면?
    UPROPERTY 매크로는 프로퍼티를 가비지 컬렉션 시스템에 등록하고, 에디터에서 편집 가능하게 만들며, 시리얼라이제이션(저장/로드)을 지원하는 역할을 합니다. 나머지 선택지들은 UPROPERTY의 역할과 관련이 없는 기능들입니다.
  • A.가비지 컬렉션 대상으로 등록, 에디터에서 편집 가능, 시리얼라이제이션 지원 B.컴파일 속도 향상, 메모리 사용량 감소, 코드 최적화 C.자동 주석 생성, 코드 포맷팅, 변수명 검증 D.멀티스레딩 동기화, 예외 처리, 타입 변환
  • 다음 코드에서 빈칸에 들어갈 적절한 매크로는?A.UFUNCTION B.UPROPERTY C.USTRUCT D.UENUM
    멤버 변수(프로퍼티)를 리플렉션 시스템에 등록하고 에디터에서 편집 가능하게 만들려면 UPROPERTY 매크로를 사용해야 합니다. UFUNCTION은 함수용, USTRUCT는 구조체용, UENUM은 열거형용 매크로입니다.
  • UCLASS() class MYGAME_API AMyActor : public AActor { GENERATED_BODY() ___________(EditAnywhere, BlueprintReadWrite) int32 Health; };
  • UFUNCTION 매크로의 BlueprintCallable 지정자의 역할은?
    BlueprintCallable 지정자는 C++로 작성된 함수를 블루프린트 그래프에서 노드로 호출할 수 있게 해줍니다. 이는 블루프린트와 C++ 간의 상호운용성을 제공하는 핵심 기능입니다. 나머지 선택지들은 BlueprintCallable과 관련 없는 기능들입니다.
  • A.블루프린트에서 해당 함수를 호출할 수 있게 만든다 B.함수를 자동으로 컴파일 타임에 인라인 처리한다 C.함수 실행 시 자동으로 로그를 출력한다 D.함수를 멀티스레드 환경에서 안전하게 만든다

블루프린트와 C++ 연동 방식 이해

  • 언리얼 엔진에서 블루프린트와 C++의 연동 방식에 대한 설명으로 옳지 않은 것은?
    블루프린트로 작성된 함수도 BlueprintImplementableEvent나 BlueprintNativeEvent를 통해 C++에서 호출할 수 있습니다. A는 C++ 함수를 블루프린트에 노출하는 방법, B는 블루프린트 이벤트를 C++에서 호출하는 방법, C는 일반적인 연동 방식으로 모두 옳은 설명입니다.
  • A.C++로 작성한 함수에 UFUNCTION(BlueprintCallable)을 지정하면 블루프린트에서 호출할 수 있다 B.블루프린트에서 구현한 이벤트를 C++에서 호출하려면 UFUNCTION(BlueprintImplementableEvent)를 사용한다 C.C++ 클래스를 블루프린트로 상속받아 확장할 수 있다 D.블루프린트로 작성된 함수는 C++에서 직접 호출할 수 없으므로 반드시 C++로 재작성해야 한다

 

코드 카타: 두개 뽑아서 더하기 & K번째수

 

  • 049. 두 개 뽑아서 더하기 | Solved Date: 2026-05-27-Wed | Problem Link
  • 048. K번째수 | Solved Date: 2026-05-27-Wed | Problem Link
저작자표시 동일조건 (새창열림)
'TIL/Boot Camp' 카테고리의 다른 글
  • Text RPG 팀플 발표 | 코드 카타 (Code Kata) 콜라 문제 | TIL 27th | 캠프 27일 차 | 05/29/2026 (Fri)
  • Unreal 주특기 입문 (아타니) (AI) 개념 정리 + 문제 풀이 | 코드 카타: (푸드 파이트 대회 | 가장 가까운 같은 글자) | TIL 26th | 캠프 26일 차 | 05/28/2026 (Thur)
  • 기초 개념 문제 풀이 정리 (C++ & Blue Print) | Git Gmail 세팅 | | 팀프로젝트 | 코드카타 (문자열 내 마음대로 정렬하기) | TIL 24th | 캠프 24일 차 | 05/26/2026 (Tue)
  • 게임 프로그래밍 전문가 국가기술자격증 | Code Kata: 가운데 글자 가져오기, 수박수박수박수박수박수, 내적, 약수의 개수와 덧셈 | TIL 19th | 캠프 13일 차 | 05/08/2026 (Fri)
DevCol
DevCol
DevCol (Development Collaboration). 함께 개발 & 공부 & IT 정보 나눔장소
  • DevCol
    DevCol (Development Collaboration)
    DevCol
  • 블로그 메뉴

    • Unreal Engine
    • TIL
    • 게임국가기술자격검정 게임프로그래밍전문가 [한국콘텐츠진흥원]
    • 분류 전체보기 (73) N
      • Unreal Engine (31) N
        • Project (2) N
        • Dev Log (0)
        • Debugging (2) N
        • Blueprint (1)
        • UE 기초 (25) N
        • UE 심화 (0)
        • TA (1) N
      • Programming Language (0)
        • C++ (0)
        • C# (0)
      • Unity Engine (0)
      • 자격증 (3)
        • 게임국가기술자격검정 [한국콘텐츠진흥원] (3)
      • Coding Test | 코딩테스트 (0)
        • 프로그래머스 기초 (0)
        • 프로그래머스 입문 (0)
      • TIL (38) N
        • Boot Camp (32) N
      • Git & Github (1)
  • 링크

    • Youtube
    • GitHub
    • itch.io
    • Blog (En)
  • 공지사항

  • 인기 글

  • 태그

    게임 개발
    내일배움캠프
    C++
    Code Kata
    Game Dev
    UE
    프로그래밍
    코드 카타
    게임개발
    코드카타
    til
    Boot Camp
    c
    Devlog
    언리얼 엔진
    Programming
    cpp
    기초
    UE5
    Unreal engine
  • 최근 글

  • GitHub Youtube itch
  • hELLO · Designed By 정상우.v4.10.6
  • DevCol
    팀프로젝트 (Text RPG 거의 완료) | AI 통한 기본 개념 정리 및 문제 풀이 | 코드카타 (두개 뽑아서 더하기 & K번째수) | TIL 25th | 캠프 25일 차 | 05/27/2026 (Wed)
    상단으로

    티스토리툴바