본문 바로가기

유니티 최적화

(12)
[유니티최적화] 용량 최적화 (#12 Minify 옵션) Minify 옵션 중요도 : 중 난이도 : 상 Player setting-> Custom Proguard File 설정에서 Minify 옵션을 확인 할 수 있습니다. 스크립트 파일(.cs)의 코드 들은 모두 실행 파일에 포함됩니다. 유니티에서는 사용하지 않는 코드들을 빌드시 제거하면서 난독화를 해주는 기능으로 Proguard라는 기능을 지원합니다. 사용하지 않는 코드들이 제거 되기 때문에 스크립트 파일의 용량이 줄어들고, 코드를 난독화 해주기 때문에 보안측면에도 이점이 있습니다. 2019 이전버전에서는 proguard설정만 할 수 있었는데 2020이상 버전에서는 R8기능을 사용 할 수 있습니다. R8은 디슈가링, 축소, 난독화, 최적화, 덱싱 등 더 많은 코드 최적화 기능이 추가 되었다고 설명하고 있습니..
[유니티최적화] 용량 최적화 (#11 매쉬 용량 최적화 ) 중요도 : 중 난이도 : 하 모델 임포트 창에서 모델 창을 클릭하면 매쉬를 임포트 할 때 설정을 세팅 할 수 있습니다. https://docs.unity3d.com/kr/2021.3/Manual/mesh-compression.html 메시 데이터 압축 - Unity 매뉴얼 Unity에서 메시 데이터를 압축하여 크기를 줄이면 성능이 향상될 수 있습니다. Unity는 메시를 압축하는 두 가지 방법을 제공합니다. 이러한 방법은 서로 다르게 작동하며 여러 측면에서 성능에 영 docs.unity3d.com 매쉬 데이터를 압축하는 방법은 버텍스 압축과 메쉬 압축 2가지 중에 선택 할 수 있습니다. 버텍스 압축은 Player Setting에서 설정 할 수 있고 모델 임포트 세팅 중 Mesh Compression가 O..
[유니티최적화] 용량 최적화 ( #10 애니메이션 ) 모델 임포트 창에서 애니메이션 정보에 대한 압축 설정을 세팅 할 수 있습니다. https://docs.unity3d.com/kr/2020.3/Manual/class-AnimationClip.html Anim. Compression 설정에서 Optimal을 설정한 뒤 Animation Compression Errors 값을 조절하는 것을 추천 합니다. 애니메이션 탭 - Unity 매뉴얼 애니메이션 클립 은 Unity에서 가장 작은 애니메이션 블록입니다. 왼쪽 달리기(RunLeft), 점프(Jump) 또는 기어가기(Crawl) 등 각각의 독립적인 모션을 의미하며 다양한 방법으로 조작하고 통합하여 실 docs.unity3d.com
[유니티 최적화] 앱 다운로드 크기 최적화 #9 ( 쉐이더 Shader 용량 최적화 ) 쉐이더( Shader ) 용량 최적화 쉐이더는 게임 상에서 사용하지 않는 쉐이더라도 프로젝트 폴더안에 있으면 컴파일 후에 빌드에 포함되게 된다. 쉐이더의 개수가 많다면 빌드 시간과 용량이 증가하는 원인이 된다. 확실히 사용하지 않는 쉐이더 파일 이라면 (.shader) 제거하는 것이 좋다. 보통 쉐이더의 용량은 크지 않은데 '쉐이더 배리언트'라는 방식이 용량 증가의 원인이 된다. GPU는 대표적인 SIMD 병렬처리 장치인데 Single Instruction Multiful Data 라는 것의 약자로 같은 연산을 여러 데이터에 대해서 동시에 병렬처리 하는 장치라는 뜻이다. 그래픽 연산을 하는 과정에서는 벌텍스 데이터(Vertext Data) 나 픽셀 데이터( Pixel )에 대한 병렬 처리가 일어나게 된다..
[유니티 최적화] 앱 다운로드 크기 최적화 #8 ( Texture 최적화 2 ) Generate Mip Maps 옵션은 GPU에서 텍스쳐를 사용할때 Filtering을 하는 과정이 있는데 이때 미리 생성된 이미지를 사용해 성능을 높이는 방식이다. Mip Map은 같은 이미지를 1/2, 1/4, 1/8과 같은 작은 사이즈를 별도로 생성하게 되고 각 단계별로 Mip Map Level 이라고 표현한다.( Mip Map Level 1, Mip Map Level2 ..) Mip Maps이 생성된 텍스쳐는 필터링 성능이 향상 되게 된다. 만약 필터 모드( Bilinear 로 설정된 화면 )를 No Filter로 설정한다면 Mip Maps 을 생성할 필요가 없다. Mip Maps을 생성하면 메모리가 약 33%늘게 된다. 필터링은 텍스쳐가 텍스쳐의 해상도보다 화면에 작게 보일때 일어나는데, 예를들..
[유니티 최적화] 앱 다운로드 크기 최적화 #7 ( Texture 최적화 ) 텍스쳐(Texture) 사이즈 최적화 중요도 : 상 ( 매우 중요 ) 난이도 : 경우에 따라 다름 Texture라는 용어는 Image나 Sprite 다르게 조금 생소할 수 있는데, 컴퓨터에서 화면이 그려질때는 모든 이미지들이 GPU에서 렌더링 과정을 거쳐서 화면에 보이게 된다. 이때 GPU에서 처리하기 위한 이미지 데이터를 Texture라고 생각하면 이해하기 편하다. 즉 2D UI Sprite도 Texture 형식으로 GPU에 넘어가고, 3D 오브젝트에 맵핑되어 있는 이미지도 Texture 형식으로 GPU에 넘겨진다. 때문에 Texture에는 GPU에서 연산하기 위한 옵션들을 설정 할 수 있다. Texture 최적화는 게임 제작시 매우 중요한 부분이기 때문에 용량 외에도 고려해야 할 것이 많다. 이번 포..
[유니티 최적화] 앱 다운로드 크기 최적화 #6 ( 폰트 font 사이즈 줄이기 ) 폰트(font) 사이즈 중요도 : 상 난이도 : 중 Font 리소스의 크기는 Editor Log 상에서 Other Assets 사이즈에 포함된다. Editor Log를 확인하는 법은 아래 글 참고 https://pokaragames.tistory.com/4 [유니티 최적화] 앱 다운로드 크기 최적화 #2 ( 빌드에 포함된 리소스 크기 확인 ) 앱 크기 확인 방법 유니티에서 앱을 빌드 한 뒤 Console 창으로 이동(메뉴: Window > General > Console)하여 오른쪽 상단의 작은 드롭다운 패널을 클릭하고 Open Editor Log 를 선택하고 스크롤을 내리다 보면 pokaragames.tistory.com 폰트 파일은 .ttf 나 .otf 로 표기됨 유니티에서는 두가지 형식 모두 사용 ..
[유니티 최적화] 앱 다운로드 크기 최적화 #5 ( Audio 사이즈 줄이기 ) 사운드 리소스 최적화 중요도 : 상 난이도 : 하 사운드 리소스는 데이터의 크기가 비교적 큼. 배경음악과 이펙트 사운드로 나눌 수 있는데 배경음악은 30초 이내의 반복되는 사운드로 사용하는 것을 권장. 각 Audio Clip을 선택해서 개별적으로 세팅 할 수 있다. 옵션을 변경하고 Apply를 누르면 설정이 변경되어 Import 된다. Import Size와 Original Size의 비율이 Ratio로 표시 된다. Force To Mono 는 스테레오로 제작된 사운드를 Mono로 재생하는 옵션, 스테레오는 출력 스피커가 여러개일 경우 스피커 별로 차이를 두어 출력하는 방식이다. Normalize옵션은 스테레오 사운드가 mono로 변환 될 때 자연스럽게 정규화 시켜주는 옵션. 모바일의 경우 의미 없는 경..