멈추지 않고 끈질기게
[기타] 모바일 디바이스의 특징 본문
※ 해당 포스팅은 개인의 공부 정리용 글입니다. 틀린 내용이 있다면 추후 수정될 수 있습니다.
이번 포스팅에서는 모바일 디바이스의 특징에 대해 알아보겠습니다.
1. UMA(Unified Memory Architecture)
PC에서 메모리라 함은 보통 CPU에서 사용하는 RAM을 말하며, 그래픽카드에는 GPU가 사용하는 메모리가 별도로 존재합니다. 전에 다룬 가상 메모리에 관한 포스팅에서도 소개했듯이, PC에서는 가상 메모리 시스템을 통해 실제 물리 메모리보다 더 큰 사이즈의 프로세스도 실행할 수 있습니다.
다만 모바일에서는 얘기가 다릅니다. 모바일 디바이스에는 물리 메모리가 1개 존재하며, CPU와 GPU가 하나의 메모리를 공유하는 구조이며, 이를 UMA(Unified Memory Architecture)라고 합니다. 모바일 OS도 물론 가상 메모리 시스템을 이용하지만, 구조상 CPU가 메모리 전체를 쓸 수 없기 때문에 PC와 반대로 프로세스가 사용할 수 있는 메모리의 크기가 실제 물리 메모리보다 작아지게 됩니다. 또한 OS에서 메모리 점유율이 너무 높다고 판단할 경우 강제로 프로세스를 종료시켜 버리는 경우도 발생하기 때문에, 모바일 게임은 메모리 사용량을 타겟 디바이스의 메모리 크기보다 작게 유지할 필요가 있습니다.
2. 스로틀링(Throttling)
또한 모바일 디바이스는 스로틀링(Throttling)이 발생하기 쉽습니다. 쓰로틀링이란 CPU나 GPU 등 주요 부품이 심하게 과열되었을 때, 클럭을 낮추는 등 성능을 강제로 낮추어 발열을 제어하는 기능을 말합니다. PC의 경우 쿨러를 신경써서 고르고 주기적으로 청소해주는 등 발열을 관리할 여지가 많이 있기 때문에 스로틀링을 크게 걱정할 필요 없으나, 모바일은 디바이스 크기의 한계상 발열 문제에 취약하기 때문에 스로틀링이 일어나기 쉽습니다.
따라서 타겟 디바이스의 원래 성능이 타겟 프레임을 충분히 유지할 수 있다고 하더라도, 실제로 유저가 플레이할 때는 스로틀링에 의한 프레임 드랍을 겪을 수 있습니다. 따라서 모바일 게임은 최적화 문제에 PC 게임보다 더 민감합니다. 프로파일러를 통한 프레임 타임 체크는 물론이고, 가능하면 실제 타겟 디바이스에 빌드를 설치하여 장시간 플레이 테스트를 해보는 것이 좋습니다.
3. 네트워크
모바일 기기는 네트워크 안정성에 있어서도 불안정한 부분이 많습니다. 버스나 지하철 같은 교통수단을 타고 빠르게 이동하면서 사용하는 경우도 많으며, 공공장소에 설치된 와이파이 같이 불안정한 네트워크를 사용하는 경우도 많기 때문입니다. 특히 밖에서 빈 시간에 잠깐 실행하는 경우, 빠르게 홈 버튼으로 최소화하고 실행중인 프로세스를 모두 닫기 버튼으로 종료시키는 경우도 부지기수입니다. 이러한 특징을 고려하여 모바일 게임은 특히나 네트워크가 갑자기 끊기는 예외상황에 대한 방어 코드가 중요합니다.
'기타' 카테고리의 다른 글
[기타][메모용] 행렬의 변환 (0) | 2023.10.23 |
---|---|
[기타][메모용] 길찾기 관련 (0) | 2023.08.06 |
[Photon][저장용] IP 변경 시 설정 (0) | 2023.06.03 |
[기타][저장용] 어셈블리 언어 (0) | 2023.02.28 |
[기타] 얕은 복사 vs 깊은 복사 (0) | 2023.01.28 |