최적화

개같이 안나오는 프레임을 어떻게든 살려보려고 한 일들

범인은 누구냐?

먼저 뭐때문에 프레임이 떨어지는지 확인해야 했다.

먼저 CPU, GPU 어느게 문제인지 확인하자.

ex_screenshot
위 메뉴로 stat unit 콘솔 명령어 이외의 다른 것들을 한번에 띄울 수 있다.

ex_screenshot
특정 위치에서 보이는 결과

Frame 시간이 Game과 거의 비슷한데,

이 경우에는 GameThread에서 소요되는 시간이 문제가 된다고 보면 된다.

GPU와 비슷하다면, 그래픽 연산쪽 문제이다.


1차 범인 색출

비슷한 오브젝트를 무리지어서 한개씩 지워보기로 했다.

특정 나이아가라 이팩트를 사용중인 오브젝트가 지워지는순간 프레임이 확 오르는 것을 확인.

알고보니 해당 나이아가라에서 CPU 연산을 너무 많이 해서 그렇더라.

GPU보고 대신 하라고 넘겨줬다.


그래도 아직 낮은 프레임

또 다시, 비슷한 오브젝트를 무리지어서 한개씩 지워본다.

약 30마리정도의 배치된 몬스터를 삭제하는순간 프레임이 안정적으로 돌아왔다.

언리얼 인사이트를 이용해 확인해본다.

ex_screenshot
인사이트 결과, 게임스레드 필터링

SK_Skeleton, 및 SK_Lich에서 시간이 많이 걸린다.

요 두개는 내가 배치한 몬스터들이 사용하는 스켈레탈 메시 이름이다.

2차 범인 색출

알고보니 사용중인 몬스터들은 피직스 에셋으로 히트판정을 하고 있었는데,

특정 몬스터의 피직스 에셋이 개복잡했던 것.

단순하게 바꿔줬다.


해결된줄알았지?

여전히 프레임이 낮다.

스켈레탈 메시들의 LOD를 손보기로 한다.

다음 페이지를 참고했다.

https://darkcatgame.tistory.com/33

여기에 추가로, URO라는것도 적용해보기로 했다.

URO는 멀리 있는 대상의 애니메이션 프레임을 감소시키는 방법이다.

위 사이트에 URO 관련 페이지와 코드가 있으니 확인해보길 바란다.


결과

뭐 어찌저찌 60프레임까지는 올렸다.

근데 이제 겨우 60프레임이면 다른 컴퓨터에서는 프레임이 얼마나 떨어진다는 거지…

골치아프다.