Tick Group란?

Unreal Engine에서 게임 로직은 매 프레임마다 Tick이라는 방식으로 실행됨

근데 모든 액터나 컴포넌트를 한꺼번에 처리하면 순서 꼬이거나 종속성 충돌 날 수 있기에 Tick Group이라는 걸로 실행 순서를 정해두는 것

왜 필요한가

예를 들어

  • 물리 계산 전에 캐릭터 이동부터 반영해야 하고
  • 애니메이션은 물리 결과 이후에 적용해야 하며
  • 카메라는 모든 게 끝난 다음에 위치를 계산해야 함

이런 순서가 안 맞으면 결과가 이상해지기 때문에 Tick Group을 나눠서 조절하는 것

주요 Tick Group

Tick Group 이름설명
TG_PrePhysics물리 계산 전에 실행됨. 캐릭터 이동이나 AI 처리 같은 것들
TG_StartPhysics물리 시작 지점인데 거의 사용 안 함
TG_DuringPhysics물리 계산 도중 실행. 커스텀 물리 처리할 때
TG_EndPhysics물리 계산이 끝난 뒤 실행
TG_PostPhysics물리 후 트랜스폼 업데이트나 후처리
TG_PostUpdateWork렌더링 직전. 카메라 위치 같은 거 여기서 처리
TG_LastDemotable중요도 낮은 작업들. LOD 계산, AI 등 뒤로 미룸

사용하는 방법

액터에 설정

  PrimaryActorTick.TickGroup = TG_PostPhysics;
  

컴포넌트에 설정

  MyComponent->PrimaryComponentTick.TickGroup = TG_PrePhysics;
  

실행 순서 예시

  1. TG_PrePhysics         → 캐릭터 이동, AI 처리
2. TG_DuringPhysics      → 물리 시뮬레이션
3. TG_EndPhysics         → 물리 결과 정리
4. TG_PostPhysics        → 트랜스폼 정리
5. TG_PostUpdateWork     → 카메라 위치 계산
6. TG_LastDemotable      → 덜 중요한 처리 (LOD 등)
  

Tick 의존성 설정

어떤 컴포넌트가 다른 액터보다 나중에 Tick돼야 할 때는
AddTickPrerequisiteActorAddTickPrerequisiteComponent로 의존성을 직접 걸 수 있음

  MyComponent->AddTickPrerequisiteActor(OtherActor);
  

정리

항목내용
목적Tick 순서 제어해서 처리 순서 보장함
대표 그룹PrePhysics, DuringPhysics, PostPhysics 등
설정 방법PrimaryActorTick.TickGroup = TG_PostPhysics 이런 식
종속 처리AddTickPrerequisiteActor()로 명시적 설정 가능