드로우콜 문제
매일 하고자 하는것은 진행도 못 하고 있는데 버그만 발견하네요.
어제도 하나 터져서 그거 잡는다고 시간 다 보내긴 했는데 반쯤 예상했던거라 그나마 빨리 잡았는데 이건 뭐가 문젠지 모르겠습니다.
스탯 창입니다.
Tris와 Verts는 무시하셔도 됩니다. 어차피 게임 시작해서 초기화 과정 거치면 다 줄어듭니다.
중요한건 SetPass calls랑 Batches입니다.
위 수치가 정상수치입니다.
그리고 적당히 게임 진행중일때입니다.
SetPass calls랑 Batches가 증가해 있습니다.
이 수치는 거의 화면상에 존재하는 코인의 개수와 비례합니다.
여기까지만 보면 코인에 문제가 있는거 같긴 한데...
문제는 딱 게임처럼 고드름이 땅에 닿으면서 코인을 뱉어낼 때만 저 증상이 나타납니다. 그것도 각 코인마다 몇 초간만요.
혹시 몰라 짐작가는거 테스트 다 해봤습니다.
1. 고드름이 떨어지면 코인을 뱉지 않게 한다. => SetPass calls랑 Batches의 수치 변화 1~2
2. 고드름 대신 처음부터 코인이 떨어지게 한다. => SetPass calls랑 Batches의 수치 변화 1~2
3. 고드름이 터질때 고드름 파편이 생성되지 않게 한다. =>SetPass calls랑 Batches의 수치 변화가 다소 줄었지만 여전히 변동 폭 큼. 웃긴건 1번의 실험 결과로 고드름 파편 자체는 문제가 없다는 것을 알아냈는데 변화가 있다.
4. 고드름이 코인을 뱉되 코인의 Rigidbody 삭제 => 동일 문제
이외에 짜잘하게 변화 주면서도 해봤지만 전반적으로 알 수 있던 것은
1. Sprite Packer의 아틀라스 기능에는 문제가 없다.(고드름 단독, 코인 단독 호출 시의 수치 변화 값을 참고)
2. 오디오 출력에도 문제가 없다.(위와 동일. 플레이어가 코인을 먹어도 수치 변화 없음)
3. 물리엔진에도 문제가 없다.
4. 오브젝트 풀에도 문제가 없다.
이와 같이 문제가 없는 것만 잔뜩 찾았기 때문에 문제가 있습니다.
그나마 문제라면
- 코인이 생기는 순간 SetPass calls랑 Batches의 수치가 늘어나지만 몇 초 지나면 해당 코인으로 늘어난 만큼은 줄어든다.
정도겠네요. 몇 초라는 점에 중점을 두고 찾고 있습니다.
근데 코드도 아직 별거 없고 위에서 의심가는 부분은 전부 문제 없다고 스스로 증명해버려서 알아내려 할 수록 혼란스럽네요.
하... 이것도 문제를 알고나면 별거 아닐거 같은데 화가 나네요.
최적화 때문에 물리엔진 쓰는 부분도 전부 수제작으로 바꿀까 고민 중인데 SetPass calls가 하늘을 뚫으려는 심각한 버그가 발생하다니
Batches가 50만 찍어도 컴퓨터 프레임이 1500에서 700으로 뚝 떨어지는거 보고 기겁했습니다.
해야할게 많은데 큰일이네요. 해결하면 또 글 쓰겠습니다.
ps. 위 스탯 창에서의 프레임은 프레임 제한 걸어놔서 그렇습니다.
'Icicle Game (2D) > 문제&해결' 카테고리의 다른 글
드로우콜 문제(해결?) (0) | 2017.12.24 |
---|