티스토리 뷰

반응형

 

0. 메모리 최적화는 모바일 게임을 만들 때 특히 중요하다.
  - PC는 실제 메모리 사양보다 더 많이 사용할 수 있다.
  - 모바일은 게임에 사용할 수 있는 메모리가 실제 사양보다 적다.

1. Asset 중복
유니티는 중복 파일 체크를 하지 않기 때문에 동일한 Asset( font, audio, texture, mesh, 등 )을 여러 폴더에 뒀을 때 메모리를  불필요하게 차지할 수 있다.

 

2. Asset Bundle
Asset Bundle을 사용할 때 Asset 디펜던시로 인해서 하나의 Asset이 중복되어 메모리에 올라갈 수 있다.
EX) 하나의 Texture를 공유하는 여러 프리팹을 번들로 만들고 Texture는 번들로 만들지 않으면 Texture가 중복으로 들어가게 된다.( addressables 사용 추천 )

3. Audio
ForceToMono 속성을 사용하면 오디오의 스테레오 정보를 없애고 Mono로 만드는 만큼 용량이 줄어든다.
Mute가 돼도 메모리에는 존재하고 있기 때문에 선택 옵션이 아니면 제거한다.

 

4. Mesh
Read/Write Enabled 옵션을 사용하면 CPU와 GPU 메모리 양쪽에 올리기 때문에 사용하지 않는 것이 좋다. ( 2019.2 이전에는 기본이 켜져 있는 거다. )
필요하지 않은 옵션은 끄는 게 좋다.( Rig, BlendShapes, Normal, Tangent, Lightmap UVs, Generate Colliders )

5. Shader Variants

하나의 Shader라도 다양한 조건에 따라 수만 가지의 바이너리 조각들이 생겨 비용이 비싸지고 너무 많아지는 것을 셰이더 폭발이라고 한다.

그리고 에디터에서 동작하는 것과 빌드한 후 동작하는 것이 다르기 때문에 에디터에서 진행한 프로파일링과 다를 수 있다.

Shader Variants를 줄이기 위한 기법들
 - 타겟 Graphics API 지정(Player Settings)
 - Shader Stripping(Graphics/URP Settings)
 - URP Asset에서 미사용 기능 비활성화
 - multi_compile vs shader_feature // 상황에 맞게 사용
 - ShaderVariantCollection(Hiccup vs Memory) // 상황에 맞게 사용
 - Log Shader Compilation

6. Text Mesh Pro
글자들을 미리 텍스쳐로 제작하여 사용하는 방식이다.

한글의 경우 초성, 중성, 종성을 조합하는 방식이어서 Texture로 제작하면 메모리가 커지게 된다.

최적화가 필요한 경우 Static 한 방식과 Dynamic 한 방식을 테스트해 보고 적합한 방식을 선택하여 사용할 필요가 있다.

Static
   사용될 모든 아틀라스를 미리 생성한다.
Dynamic
   실시간으로 필요한 아틀라스를 생성한다.( 원본 폰트 필요 )

7. Baked Lighting
Lightmap
   넓은 Scene의 경우 메모리 이슈가 발생할 가능성이 있다.
Light Probe
   저장형태 : 개당 float * 30 + α
Reflection Probe
   저장형태 : 개당 Cubemap Texture
   많이 사용할 경우 메모리 이슈가 발생할 가능성이 크다.

8. Texture
사이즈 가능한 작은 게 좋고 적절한 압축 형식을 사용해야 한다.
2D 및 UI는 SpriteAtlas 적극 활용할 필요가 있다.

Read/Write Enabled 옵션을 사용하면 CPU와 GPU 메모리 양쪽에 올리기 때문에 사용하지 않는 것이 좋다.
Mipmap을 사용하면 메모리가 33.33% 증가하기 때문에 필요 없으면 끈다.

9. Texture Compression
PNG, JPEG 등 원본 이미지 포맷과는 무관하다.
기기별로 지원되지 않는 Texture Format을 사용하면 압축이 풀려서 올라가기 때문에 지원되는 Format을 사용해야 한다.

10. Scene Loading

Scene에서 다음 Scene을 불러올 때 현재 Scene과 다음 Scene의 데이터를 모두 가지고 있게 되는데, 두 Scene이 모두 무거운 Scene이면 문제가 발생할 가능성이 높다 때문에 중간에 가벼운 Scene을 추가한다.

 

 

참고 : https://www.youtube.com/watch?v=52ehLUfk3DQ

 

반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday
글 보관함
«   2024/05   »
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