엔진 틱 대 시퀀서 FPS
언리얼 엔진은 최대한 빨리 프레임을 렌더링하려고 합니다. 대다수 리얼타임 애플리케이션에서는 최대한 매끄러운 플레이어 경험을 제공하는 게 목표이므로 옳은 방향성이라 할 수 있습니다.
단방향 콘텐츠의 경우, 일반적으로 제작하는 미디어에 따라 특정 프레임 레이트 내에서 작업을 하며, 30FPS 및 24FPS가 가장 일반적입니다.
시퀀서(Sequencer)를 사용하면 프레임 레이트를 지정할 수 있습니다. 그러나 시퀀서에서는 샷 길이를 기준으로 특정 이벤트가 발생해야 하는 시간을 지정합니다. 엔진 틱(Engine Tick) 레이트를 원하는 초당 프레임(Frames Per Second)으로 조절해 주는 것은 아닙니다.
이는 커브의 애니메이션이나 키 작업을 할 때는 보통 문제가 없으며, 리얼타임 애플리케이션에서 시퀀스를 트리거할 때는 바람직합니다. 하지만 예측 가능하며 일관된 타임 스텝이 필요한 시뮬레이션 작업 시에는 예기치 못한 행동이 발생할 수 있습니다.
아래의 영상에서는 오른쪽 아래에 나이아가라에서 보이는 것처럼 엔진 델타 타임 을 표시하는 단일 스프라이트 가 추가되어 있습니다. 시스템이 최대한 빨리 틱하고 있음을 알 수 있을 것입니다. 이 틱 레이트는 레벨 내의 다른 엘리먼트에 따라 바뀝니다. 다른 엘리먼트가 리소스를 사용할 경우, 틱 레이트는 떨어지고 시뮬레이션 내 타임 스텝은 증가할 것입니다. 따라서 샷에 엘리먼트를 추가할수록 시뮬레이션이 다르게 보일 수 있습니다.
디스플레이 속도를 실행시간에 잠금
시퀀서에는 지정한 프레임 레이트로 엔진이 틱하게 강제할 수 있는 옵션이 있습니다. 엔진이 훨씬 빠르게 실행될 가능성이 있다 하더라도 시퀀서가 이를 조절합니다. 틱 레이트를 프레임 레이트와 동기화하면 시뮬레이션이 훨씬 더 일관된 방식으로 발전해 나가며, 무비 렌더 큐(Movie Render Queue, MRQ)에서 출력된 것과 더 일치하게 됩니다.
디스플레이 속도를 실행시간에 잠금(Lock to Display Rate at Runtime)은 에디터에서 플레이할 때 및 MRQ를 실행할 때 적용됩니다. 템포럴 서브 스텝(Temporal Sub Steps)을 정의했다면 이를 간섭합니다. 여기에 관한 자세한 내용은 나중에 다루겠습니다.
고정된 틱 델타 시간
각 나이아가라 시스템에는 타임 스텝 길이를 고정하는 옵션이 있습니다. 나이아가라가 엔진 틱이 처리할 수 있는 레이트와 무관하게 특정 레이트로 시스템이 틱하도록 강제합니다. 이 옵션을 사용하면 시뮬레이션이 예측 가능한 레이트로 틱하도록 강제할 수 있습니다.
이 접근법은 나이아가라가 씬 복잡도 및 엔진 틱이 해당 틱 레이트를 지원하지 못할 경우에도 해당 레이트를 강제한다는 단점이 있습니다. 복잡한 시뮬레이션을 매우 작은 델타 타임으로 틱하도록 강제하면 에디터 인터랙션에 문제가 발생할 수 있습니다.
에디터에서 정확한 프리뷰가 가능하다는 점에서 정말 유용한 툴이라 할 수 있지만, 한계가 있습니다. 복잡도가 증가하면 엔진 틱 레이트가 떨어집니다. 원하는 프레임 레이트 이하로 떨어지고 나면 더 이상 정확한 프리뷰가 불가능합니다. 이 시점에서 가장 신뢰할 수 있는 반복작업 방법은 MRQ를 사용하는 것입니다.