물리 시뮬레이션 성능 조정
충돌 형상·활성 물체·서브스텝과 수면 상태를 조정하고 프로파일러로 물리 시뮬레이션의 CPU 병목을 줄입니다.
물리 상호작용을 늘리면 게임은 풍부해지지만, 성능은 가장 먼저 흔들립니다.
특히 많은 오브젝트가 동시에 충돌하거나 콜리전 메시가 복잡하면 CPU 비용이 급격히 올라가 프레임이 불안정해집니다.
이번 절에서는 물리 시뮬레이션이 게임 성능에 미치는 영향을 확인하고, 시각적 손실을 최소화하면서 프레임을 지키는 최적화 방법을 다룹니다.
충돌 단순화, 시뮬레이션 대상 관리, 서브스텝 조정 같은 즉시 적용 가능한 포인트를 중심으로 살펴보겠습니다.
이 절을 마치면 물리 품질과 성능 사이에서 프로젝트에 맞는 균형점을 직접 설정할 수 있습니다.
물리 시뮬레이션 성능 최적화의 중요성
이 절의 Chaos 강체 시뮬레이션은 주로 CPU에서 계산하며, 렌더링과 디버그 표시의 GPU 비용은 별도로 측정합니다. 특히 동시다발적으로 많은 오브젝트가 물리 상호작용을 할 때 성능 병목 현상을 일으키기 쉽습니다.
- 안정적인 프레임 속도 유지: 물리 시뮬레이션으로 인한 프레임 드랍은 플레이어 경험을 크게 저해합니다. 모든 상황에서 목표 프레임 속도를 유지하는 것이 중요합니다.
- 리소스 효율성: CPU, GPU, 메모리 등 한정된 시스템 리소스를 효율적으로 사용하여 게임의 전반적인 성능을 향상시킵니다.
- 멀티플랫폼 지원: 고사양 PC뿐만 아니라, 콘솔, 모바일 등 다양한 하드웨어 스펙을 가진 기기에서도 게임이 원활하게 실행되도록 합니다.
- 게임 플레이 일관성: 물리 버그(오브젝트 뚫림, 떨림 등)를 줄이고, 의도한 물리적 반응을 유지하여 게임 플레이의 일관성을 높입니다.
주요 물리 시뮬레이션 최적화 전략
물리 시뮬레이션 최적화는 보이는 물체와 실제 계산이 필요한 물체를 분리하는 데서 시작됩니다.
물리 시뮬레이션은 여러 계층에서 최적화할 수 있습니다.
가장 중요한 몇 가지 전략을 살펴보겠습니다.
충돌 메시 복잡도 최적화
충돌 형상과 접촉 수는 물리 비용에 영향을 줍니다. 가장 큰 병목인지는 측정으로 확인합니다.
-
Simple Collision (단순 충돌)적극 활용- 핵심: 대부분의 스태틱 메시는 간단한 기하학적 형태(상자, 구, 캡슐, Convex Hull)로 충돌을 계산하는 Simple Collision을 사용해야 합니다. 이는 매우 성능 효율적입니다.
Static Mesh Editor에서Collision메뉴를 통해 자동으로 생성하거나 직접 추가할 수 있습니다.
-
Complex Collision (복잡 충돌)사용 제한- 메시의 실제 폴리곤을 사용하는 Complex Collision은 매우 정확하지만, 엄청난 성능 부하를 유발합니다.
- 선택 기준:
Use Complex as Simple은 필요한 접촉 정확도와 비용을 비교한 뒤 선택합니다. 이 설정의 메시 자체는 물리 시뮬레이션할 수 없습니다. - 예외: 복잡한 절벽 지형처럼,
Simple Collision으로 근사화하기 어렵고 플레이어가 직접 밟고 이동해야 하는 매우 큰Static Mesh Actor에는Use Complex as Simple을 고려할 수 있습니다. 지형의 형태에 따라 Landscape도 비교하되, 동굴·절벽 구조를 일괄 대체할 수 있는 것은 아닙니다.
물리 시뮬레이션 활성화 관리
모든 오브젝트가 항상 물리 시뮬레이션될 필요는 없습니다.
-
Simulate Physics의 전략적 사용- 핵심:
Simulate Physics옵션은 오직 실제로 물리적 상호작용이 필요한 오브젝트에만 활성화해야 합니다. - 정적인 배경 오브젝트나, 미리 애니메이션된 오브젝트에는 이 옵션을 비활성화합니다.
- 핵심:
-
물리 오브젝트 수 제한
- 화면 안팎을 포함해 동시에 활성화된 물리 오브젝트 수를 관리합니다.
- 폭발 등으로 파편이 생성될 경우, 파편의 수와 물리 시뮬레이션 시간을 제한하는 로직을 블루프린트나 C++로 구현합니다.
-
물리 오브젝트 '슬립(Sleep)' 관리
- 언리얼 엔진의 물리 엔진은 움직임이 거의 없는 물리 오브젝트를 자동으로 슬립(Sleep) 상태로 전환하여 활성 강체의 적분·해결 비용을 줄입니다. 충돌 자료와 깨어날 조건까지 사라지는 것은 아닙니다. 이는 중요한 최적화 요소입니다.
- 물리 시뮬레이션이 활성화된 액터의
Details패널Physics섹션에서Start Awake옵션이 있습니다. 기본적으로 체크되어 있으며, 이 오브젝트가 생성될 때부터 바로 물리 시뮬레이션되도록 합니다. 만약 특정 오브젝트가 생성되자마자 정지 상태여야 한다면 이 옵션을 비활성화하여 시작부터 슬립 상태로 만들 수 있습니다. - 필요할 때
Wake Rigid Body로 깨우고, 정지한 물체는 Sleep 상태를 확인합니다. 충돌이나 힘에 의한 깨움과 Sleep/Wake 이벤트 알림 설정은 구분합니다.
물리 서브스텝 설정
프로젝트 전체 물리 설정에서 충돌 정확도와 성능 사이의 균형을 맞춥니다.
- 위치:
편집(Edit) > 프로젝트 세팅(Project Settings) > 엔진(Engine) > 물리(Physics) -
Enable Substepping (서브스텝 활성화)- 고속으로 움직이는 오브젝트가 서로 뚫고 지나가는 현상(터널링)을 줄이는 데 도움을 주고 물리 시뮬레이션의 안정성을 높입니다.
- 활성화 시 성능 비용 증가: 서브스텝은 정확도를 높이지만, 더 많은 물리 계산을 수행하므로 성능 부하가 커집니다.
- 조절: 필요한 경우에만 활성화하고,
Max Substep Delta Time과Max Substeps값을 합리적으로 조절합니다.Max Substep Delta Time을 너무 작게 설정하면 서브스텝 수가 늘어나고,Max Substeps를 너무 높게 설정하면 프레임 속도가 크게 저하될 수 있습니다. 기본값을 유지하거나 약간 조절하는 것이 좋습니다.
물리 재질의 효율적 사용
- 재질 에셋 개수만으로 물리 비용을 판단할 수는 없습니다.
Friction(마찰)과Restitution(반발력) 값을 너무 극단적으로 설정하면 물리 시뮬레이션이 불안정해지거나 계산량이 늘어날 수 있습니다. 현실적인 값을 유지합니다. Density값을 과도하게 변경하면 질량 계산에 영향을 미쳐 예상치 못한 물리 반응을 유발할 수 있습니다.
물리 시뮬레이션 관련 디버깅 및 프로파일링 도구
물리 시뮬레이션 문제를 진단하고 최적화할 때 유용한 언리얼 엔진 내장 도구들입니다.
- 충돌 형상: 뷰포트의
Show > Collision과 스태틱 메시 에디터의 Simple/Complex Collision 표시로 실제 형상을 확인합니다. 색만으로 종류를 단정하지 않습니다. - Chaos Visual Debugger: 지원 버전에서 물리 기록을 수집해 바디·접촉·시간별 상태를 확인합니다. UE4 PhysX용
PXVIS명령을 UE5 Chaos의 공통 명령으로 사용하지 않습니다. - Unreal Insights: 같은 장면의 CPU 타이밍에서 물리 작업이 차지하는 시간을 비교합니다.
stat physics는 해당 빌드가 제공하는 통계를 빠르게 확인하는 보조 수단이며 표시 항목은 버전마다 다릅니다. - 렌더링 비용:
stat scenerendering과ProfileGPU는 렌더링·GPU 비용을 확인합니다. 이를 강체 solver의 CPU 시간으로 읽지 않습니다.
측정 장면과 오브젝트 수를 고정하고, 활성 바디·충돌 형상·CCD·서브스텝 중 한 항목을 바꾼 뒤 같은 상호작용에서 시간과 접촉 품질을 다시 비교합니다.
추가적인 최적화 팁
- 복잡 충돌용 LOD:
LOD For Collision으로 복잡 충돌에 사용할 LOD 하나를 고를 수 있습니다. 화면 거리로 렌더 LOD가 바뀔 때 충돌 LOD도 자동 교체되는 방식은 아닙니다. - 물리 시뮬레이션 종료/시작 로직: 특정 오브젝트가 플레이어로부터 멀어지거나 중요도가 낮아지면 물리 시뮬레이션을 비활성화하고, 다시 가까워지면 활성화하는 로직을 블루프린트나 C++로 구현합니다. (이는 엔진의 슬립 기능보다 더 적극적인 제어입니다.)
- 고속 오브젝트에
CCD (Continuous Collision Detection)사용:Simulate Physics가 활성화된 액터의Details패널Physics섹션에서Use CCD를 활성화합니다. 이는 터널링 위험을 줄이지만, 성능 비용이 있으므로 꼭 필요한 매우 빠른 오브젝트(예: 총알, 빠른 차량)에만 적용합니다.
물리 시뮬레이션 성능 조정은 시각적 품질과 게임 플레이 반응성 사이에서 균형을 찾는 작업입니다.
이 절에서 다룬 충돌 메시 최적화, 물리 시뮬레이션 활성화 관리, 서브스텝 조정, 디버깅 도구 활용법을 바탕으로 성능 기준을 반복 점검해 보세요.
지속적인 테스트와 프로파일링이 결국 안정적인 최적화 결과를 만듭니다.
이것으로 7장 물리 환경 설정을 마칩니다.