2026. 5. 18.

Unity/DOTS 최적화 경험 정리

대량 오브젝트와 반복 연산이 많은 Unity 프로젝트에서 DOTS 관점으로 병목을 정리한 경험.

#Unity#DOTS#Optimization

Unity 최적화에서 가장 먼저 한 일은 “감”이 아니라 프로파일러로 병목을 고정하는 것이었습니다. 렌더링, 스크립트 업데이트, GC Alloc, 물리 연산을 나누어 보고 프레임 타임을 흔드는 지점을 먼저 좁혔습니다.

DOTS로 옮기기 전 기준

모든 코드를 한 번에 ECS로 바꾸기보다, 반복 연산이 많고 데이터 구조가 단순한 영역부터 분리했습니다.

  • 매 프레임 동일 패턴으로 순회하는 로직
  • 오브젝트 수가 늘수록 선형으로 무거워지는 처리
  • MonoBehaviour 간 참조가 과하게 얽힌 구간

배운 점

DOTS는 마법처럼 성능을 올리는 버튼이 아니라, 데이터를 어떻게 배치하고 어떤 순서로 처리할지 강제하는 설계 방식에 가까웠습니다. 그래서 성능 개선만큼이나 코드의 책임 경계가 명확해지는 효과가 있었습니다.

다음 프로젝트에서는 초기부터 “게임플레이 표현”과 “대량 데이터 처리”를 분리해, 나중에 최적화를 덧대는 비용을 줄이는 방향으로 설계하려고 합니다.