오늘은 최적화를 해봤어.
솔직히 말해서 이걸 최적화라고 말하는 지는 의문이지만...
코딩 순서도 그리면서 렉걸리는 부분을 찾아봤어.
나만의 팁인데 chat gpt한테 그냥 코딩 던져주고 정리해봐 보다는 순서도로 일단 그려보라고 해봐.
짧은 코딩같은 거는 chat gpt가 잘 정리해주는데 몇십줄 넘어가면 애가 지 멋대로 생략하더라구. 그게 난 화딱지가 나더라.
순서도로 정리해달라하면 처음에 이상한 거 만들어 주는데 gpt랑 말싸움하면서 순서도 정리해봐. 머릿속에 코딩들이 와닿아.
일단...
상태: 유닛수가 200이 넘으면 순간적으로 렉이 걸린다.
멀티스레드도 해보고 <- 얘는 아직 gpt한테 물어보니까 오류범벅으로 알려주더라... 멀티스레드는 혼자서 길찾기랑 적찾기만 건들어봤는데 이상하게 렉이 심해지더라... ㅠㅠ
싱글톤(오토로드)도 해보고 <- 미미한 차이... 그래두 코드가 엄청나게 간결해졌어.
내가 엔진 건든 지 얼마 안되서 밑의 편리한 기능을 뻘짓을 하고나서 알았어...
디버깅으로 성능을 확인할 수 있더라구? 대충 빨간 직선이 기준이고 ms를 얼마나 먹는 지 보여주는 그래프야.
ms란 대충 한 프레임에 얼마나 많은 시간을 소비하냐, 이렇게 생각하면 돼. 한마디로 ms가 높으면 한프레임에 많은 시간을 소비하는거지?
위에 그래프를 보면 갑자기 말도 안되게 치솟는걸 볼 수 있어. 저게 딱 100vs100에서 유닛들이 싸우기 시작하는 타이밍이야.
와... 저걸 보고 깜짝놀랐다니까? 이건... 문제가 있다. 고쳐야만 한다. 마음 먹었지.
그래서 확인 해보니까... 아니 오디오? 오디오가 반 이상의 ms를 먹네? 애니메이션, 체력, 공격, 파티클... 그런게 아니고? 오디오라고? 뒷통수 세게 맞은 기분이었어.
심지어 CPU는 놀고 있더라구...? 애초에 이쪽 문제가 아니니까 멀티스레드가 소용이 없던거지...
바로 뜯어 고쳐봤어.
오디오는 공격 소리밖에 없으니까 그것만 싱글톤으로 빼 놓았어.
풀링 시스템을 이용해서 미리 세팅해둔다음에 소리가 나는 개수를 제한을 걸었지. 밑에가 결과야.
심지어 이거는 200 vs 200의 결과야... 빨간 직선을 넘는 게 사라졌어! 렉도 사라졌고
오디오가... 오디오가 범인이었다니...
약간 시원하긴 한데... 오늘 하루는 너무 아쉬웠던 거 같아...
원인 찾는 데만 시간 쓰고 고치는 거는 10분도 안걸렸던 거 같아...
랙이걸리면 일단 오디오와 택스쳐를 체크..