IronBird 개발일지 #8
드로우콜 최적화 시도 - PC 프로파일링 결과 분석
Shadow Casting · Object Pool · 콜리전 분리 · 프로파일링
🎯 목표
모바일 목표 수치(드로우콜 100 이하, FPS 30 안정)를 향해 최적화를 시도한다. PC에서 프로파일링하고 각 최적화 기법의 실제 효과를 측정한다.
최적화는 반드시 수치로 증명해야 한다. "빠를 것 같다"는 감이 아니라 Before/After 측정이 기준이다.
📊 Before 수치
측정 환경: PC, 엔진 퀄리티 중간, 게임플레이 중 적 다수 존재

🔧 최적화 시도 결과
✅ Object Pool - 효과 있음 (이전 #3에서 측정)
Game 스레드 17.35ms → 13.05ms (-25%), FPS 59 → 76 (+27%)
✅ 콜리전 아키텍처 분리 - 구조적 개선
MeshComponent NoCollision + USphereComponent hitbox 분리. FBX 복잡한 콜리전 계산 제거.
✅ 불필요한 라이팅 제거
DirectionalLight, SkyAtmosphere, VolumetricCloud, ExponentialHeightFog 제거. Unlit 머티리얼 사용으로 라이팅 연산 불필요.
⚠️ Shadow Casting Off - PC에서 효과 미미
총알·적·플레이어 MeshComponent->SetCastShadow(false) 적용. Draws 252 → 302로 오히려 증가. 이미 Unlit 머티리얼이라 Shadow 연산이 없었던 것이 원인.
✅ Object Pool 크기 축소
BulletPool 30→20개, EnemyBulletPool 15개로 축소. 초기 메모리 할당 감소.
🔍 분석
PC에서 Draws 252는 게임 오브젝트보다 씬 자체(SM_SkySphere, SkyLight 등)의 비중이 크다. 게임 오브젝트 최적화만으로는 전체 드로우콜을 100 이하로 낮추기 어렵다.
핵심 인사이트: PC stat 수치는 참고용이다. 모바일 최적화의 실제 지표는 Android 실기기에서 Unreal Insights로 측정해야 한다. PC에서 최적화 효과가 미미했던 Shadow Casting Off도 모바일 GPU에서는 다른 결과가 나올 수 있다.
💡 배운 것
• 최적화는 항상 수치로 검증해야 한다. "효과가 있을 것 같다"는 감으로 적용하면 오히려 역효과가 날 수 있다.
• Shadow Casting Off는 Lit 머티리얼에서 효과적이다. Unlit 머티리얼에서는 이미 Shadow 연산이 없어 효과가 없다.
• PC 드로우콜과 모바일 드로우콜은 다르다. 실기기 측정 없이 PC 수치만으로 최적화 완료를 판단할 수 없다.
• Object Pool은 드로우콜보다 Game 스레드 ms에 영향을 준다. 최적화 목표에 맞는 지표를 선택해야 한다.
📌 다음 작업
[IronBird #9] Android 빌드 + 실기기 프로파일링
Android SDK/NDK 세팅 후 실기기 빌드. Unreal Insights로 실측 수치 기록. PC와 모바일 수치 비교.
'개인프로젝트 > IronBird' 카테고리의 다른 글
| [IronBird #9] Android 빌드 + 실기기 프로파일링 (Galaxy S23+) (0) | 2026.06.08 |
|---|---|
| [IronBird #7] BGM + 이펙트 + 하트 아이템 + 틸팅 + UMG 메인화면 (0) | 2026.06.02 |
| [IronBird #6] 메인화면 + 점수 시스템 + 게임오버/클리어 (0) | 2026.05.28 |
| [IronBird #5] 보스 페이즈 + 적 3종류 + 충돌 시스템 구현 (0) | 2026.05.28 |
| [IronBird #4] 적 스폰 시스템 구현 (0) | 2026.05.28 |