다양한 기록

Parrying Sword #56 : 유니티 프로파일러 본문

유니티 엔진/Parrying Sowrd

Parrying Sword #56 : 유니티 프로파일러

라구넹 2024. 5. 22. 19:38

패링 소드의 최적화 작업을 시작했습니다.

유니티의 프로파일러 기능을 사용하면 어떤 작업 때문에 처리가 느려지는지 알 수 있습니다.

 

맵이 크면 프레임 드랍이 좀 심해서 최적화가 필요하다고 느꼈는데,

일단 유니티 엔진의 버전을 올리니 최대 6배 가량 프레임이 빨라지는 등

프레임에 문제가 없어져서 플레이 환경에서 별로 문제는 없는데, 일단 프로파일러로 어디서 문제가 발생하는지 확인을 해보았습니다.

 

 

 

 

사실 이대로면 분석을 하는 의미가 없기에 맵을 과하게 확장시켰습니다. (21 * 21 크기, 기본 맵 크기는 훨씬 )

맵의 규모가 커지면 그냥 단순히 오브젝트가 많아서 부하가 걸리는 건지,

렌더링하느라 시간이 걸리는 건지, 물리 엔진 문제인지 그냥은 알기가 힘들기 때문에 테스트가 필요했습니다.

 

프로파일링을 보면 물리엔진에서 문제가 생겼습니다.

아무래도 맵을 만들면서 맵 조각 내부에 컬라이더를 좀 많이 넣어서 물리 엔진에서 부하가 걸렸을 것입니다.

 

타임라인으로 보면 다음과 같은 문제를 확인할 수 있습니다.

Physics2D.Collider2D.DestroyShapes 라는 메시지가 나옵니다

처음에 폭탄으로 맵을 부수는 기능을 만드려고 위 이미지처럼 맵의 조각을 냈고,

지금은 와이어 액션에서 와이어가 잡는 위치를 자연스럽게 하려고 저렇게 만들어뒀습니다.

 

스프라이트를 자르는 과정에서 조금 빈틈이 생겨서 맵을 조금씩 늘려서 자연스럽게 이어지게 했는데

이때 컬라이더가 겹치면서 생기는 충돌에 의해 문제가 생긴 것으로 확인됩니다.

 

컬라이더를 통일하면 괜찮겠지만 그러면 와이어액션이 부자연스러워질 것입니다.

컬라이더를 잘 조정해서 충돌이 덜 발생하도록 수정하면 해결될 것입니다.