블로그 이미지
한국IT전문학교 게임프로그래밍 2018년 졸업생 / 배우고 익히고 정리하는 곳 무명의 공룡

카테고리

분류 전체보기 (133)
Unity (5)
AR / VR (8)
홀로렌즈2 (2)
Unity 3D 액션 게임 제작 (2)
정리 (9)
소소한 배움 (6)
그외 (7)
비공개 (56)
--이전 프로젝트들-- (0)
Tree-sha (팀 3D) (9)
Icicle Game (2D) (19)
MMD RPG (3D) (9)
Total
Today
Yesterday

달력

« » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

공지사항

저번에 이어 해결하지 못 했던 문제를 계속 붙잡아 봤습니다.


결론부터 말하면 해결은 하나도 된게 없습니다. 대신 몇 가지 알아낸 것들이 있어서 그거에 대해 적고 그 다음엔 아마 최적화 관련해서 또 적을거 같습니다.


여기서 적는건 대부분 프로파일러를 참고한 추측과 다른 분들의 블로그를 참고하여 작성하는거라 100% 장담은 못합니다.


먼저 비동기 로딩 중 아예 멈춰있는 것에 관해서는


SceneManager.LoadSceneAsync을 이용하여 비동기 씬 로딩을 진행할 시 유니티는 불러오려는 씬의 오브젝트, 에셋, 스크립트 Awake 등을 로드합니다.


현재 Icicle Game의 로딩시간은 너무나도 짧고 쉽게 강제로 시간을 늘릴 수 있는 부분이 스크립트 부분이라 Awake에 무의미한 반복문을 왕창 돌려본 결과 스크립트의 Awake 로딩은 씬 로딩 과정 중 가장 마지막에 행해지는것 같습니다.


AsyncOperation.progress가 0.9가 되면 사실상 로딩 완료나 다름없는 경과 수치인데 이 상태에서 스크립트 로딩을 하는 것을 보니 생각된 추측입니다.


혹시나 싶어 여러 오브젝트에 더미 스크립트를 막 넣어놓고 해봤는데도 다르지 않습니다. 그냥 스크립트 Awake 로딩을 통째로 묶어 로딩을 하나봅니다.



그리고 컴퓨터에서 로딩을 확인하면 0%에서 99%로 바로 바뀌지만 모바일에서 확인 시 10~20% 사이의 숫자가 잠깐 보이는 것으로 보아, 그리고 위에서 스크립트 실험으로 보아 추측되는 것은 큼직큼직한게 끝날때마다 그 사이에 출력 프레임이 껴있으면 (보통 60프레임 간격) 그 틈새에 다른 동작이 실행되는거 같습니다. 여기서는 동전이 돈다던지


근데 그 큼직큼직의 기준도 잘 모르겠고 애초에 로딩이 스크립트 빼면 1초도 안 걸리니 스크립트 외엔 비동기가 잘 되는지 파악이 불가능해서 좀 더 이런저런 테스트를 더 해봐야 할거 같습니다.


tree-sha로 테스트 하면 딱인데 저 게임은 쉐이더랑 라이팅이랑 별게 다 되있어서 빌드가 너무 오래 걸리는지라...


이렇게 된거 tree-sha을 좀 분해해 보든지 이 겜의 스케일을 키우든지 다른 방법을 찾든지 해서라도 만족할만한 결과를 얻을때까지 삽질을 계속 해봐야겠네요.



이것과는 별개로 로딩때 프로파일러를 보니 가비지가 생각보다 꽤 높은 비율을 차지하더군요.


그리고 동시에 다른 프로그래머 분들 블로그를 돌아다니다보니 예전엔 잘 이해가 가지 않았던 각종 최적화 기법들이 이젠 눈에 들어오기 시작했구요.


그래서 사소한 곳 하나하나 가비지를 없애보려고 해봐야겠습니다.

Posted by 무명의 공룡
, |