09.19 - TIL

김혁·2025년 9월 19일

TIL

목록 보기
22/84

오늘의 코드카타

숫자 타자 대회

오늘의 공부

팀 프로젝트 진행 내용

  • 커스텀 뎁스를 활용해서 머터리얼, 포스트 프로세스를 통해 장애물을 관통한 액터에게 아웃라인을 표시해주는 기능 연구

오늘의 CS

언리얼 엔진의 실행 라이프사이클

  1. 엔진 초기화
    • UEngine -> UGameEngine 초기화
    • 렌더링, 오디오, 네트워킹 등 서브시스템 초기화
  2. GameInstance 생성
    • 프로젝트 전역에서 한 번만 생성되는 객체
    • 게임 시작 시 유지되며, 로그인, 네트워크 연결, 세션 관리에 주로 사용
  3. World 생성
    • 맵이 로드되면서 UWorld가 만들어짐
    • 맵 로딩 시 GameMode, GameState의 엔진의 메인 프레임워크 클래스들이 생성됨
  4. PlayerController / Pawn 생성
    • PlayerController : 입력 처리
    • Pawn : 실제 조작 가능한 캐릭터
  5. 게임 루프 진행
    • Tick() 호출이 반복되며 게임 진행
  6. 게임 종료
    - EndPlay() 호출
    - GameInstance 파괴
    - 엔진 리소스 해제 후 종료


액터 라이프사이클

  1. 생성 (Constructor)
    • C++ 생성자 호출
    • GC에 의해 관리되므로 new 직접 호출하지 않음
  2. PostInitProperties
    • 리플렉션 시스템을 통해 프로퍼티 초기화
  3. OnConstruction()
    • 레벨 에디터에서 액터를 배치할 때, 혹은 런타임에서 Spawn할 때 호출
    • 블루프린트의 Construction Script와 대응
  4. BeginPlay()
    • 게임 시작 또는 액터가 스폰된 순간 호출됨
    • 초기화 로직을 두는 곳
  5. Tick()
    • 매 프레임마다 호출
    • 액터의 지속적인 동작을 업데이트
  6. EndPlay()
    • 레벨 전환, 게임 종료, Destroy() 호출 시 실행
    • 리소스 정리 로직 배치
  7. Destroy()
    - 액터가 제거되고, GC에서 메모리 해제


ECS (Entity Component System)

  • 개념
    1. Entity
      • 게임 세계 안에 존재하는 객체를 식별하는 ID 같은 개념
      • 스스로 데이터나 동작을 갖지 않음
    2. Component
      • 엔티티가 가진 데이터 (순수 데이터 구조체에 가까움)
      • 로직은 포함하지 않고 상태만 가짐
    3. System
      • 특정 컴포넌트를 가진 엔티티 집합을 대상으로 로직을 처리하는 모듈
      • 게임 루프에서 실행되며, 데이터를 읽고 갱신
  • 장점 ( 데이터 중심 설계 )
    • 캐시 친화적 : 컴포넌트 데이터를 SoA로 저장 -> CPU 캐시 효율 상승
    • 유연성 / 확장성 : 새로운 기능을 추가할 때 엔티티에 컴포넌트만 붙이면 됨
    • 병렬 처리 용이 : 시스템 단위로 멀티스레드 처리하기 좋음
    • 의존성 감소 : 데이터(컴포넌트)와 로직(시스템)을 분리 -> 유지보수 용이
profile
게임 개발자를 향해..

0개의 댓글