어제부터 지금까지 최적화 부분 작업을 했는데 생각보다 최적화라는게 끝이 없어서 이정도까지만 하고 기능 개발로 넘어가기로함.
영상에 보이는것처럼 4만개 ~ 10만개의 아이템 오브젝트는 생각보다 괜찮은데, 두번째 영상에 72만개는 평균 7 ~ 8프레임으로 아직 매우 처참함.
처음에 해결한 최적화는 아이템 렌더링 부분이였는데
아이템마다 Sprite Renderer를 갖고 있어서 이 부분을 GPU Instancing으로 변경 했더니 렌더링 부분에서는 3백만개 이상도 60프레임 넘게 나오게됨.
두번째로 시도한 최적화는 벨트 시뮬레이션 로직이였는데 단순하게 멀티쓰레딩을 추가하니까 계산 순서가 비결정적이라[1] 테스트를 통과하지 못하더라고
그래서 double buffering 으로 읽기 쓰기를 분리해서 적용하니까 테스트는 통과하는데 프레임이 더 떨어지더라고[2] 내가 제대로 코딩한게 아닐수도있는데
문제는 벨트 구조 자체라고 판단했음. 그래서 직선과 커브 벨트끼리는 TransportLine 으로 t-shape, cross는 Junction으로 최적화 하는 방법이 남아 있는데
기능 개발 먼저해서 테스트코드 양을 좀 늘려두고 시도해보려고
메운디 만드시나요?
팩토리오는 어케 최적화 했으려나 입출력 로직은 전부 수치로만 돌아가고 지금 보이는 화면만 비주얼로 표시하는건가
그게 기본이긴하더라 일단 나도 보간이나 이런처리는 다 셰이더에서 하도록 했어