모바일 게임 그래픽 최적화에서 타협해야 할 핵심 요소들

모바일 그래픽 최적화는 화질을 일방적으로 낮추는 일이 아니라 기기 발열과 배터리, 프레임 안정성, 제작 비용 사이에서 우선순위를 정하는 과정이다. 실제 프로젝트에서 판단 기준으로 쓸 수 있는 핵심 타협 지점을 정리한다.

✓ 복사 완료!
챕터일반 가이드
난이도중급
상태● 검토 완료
대상 엔진
Engine Agnostic
최종 업데이트
모바일 게임 그래픽 최적화에서 타협해야 할 핵심 요소들

모바일 게임의 그래픽 최적화는 ‘무엇을 줄일 것인가’보다 ‘어떤 경험을 지킬 것인가’를 먼저 정하는 일에 가깝다. 같은 30fps라도 입력이 즉시 반응하고 전투 장면에서 프레임이 흔들리지 않는 게임은 더 쾌적하게 느껴진다. 반대로 정적인 화면이 아무리 선명해도 발열과 배터리 소모가 심하면 장시간 플레이 경험은 나빠진다.

특히 인디 팀은 모든 기기에서 최고 품질을 목표로 삼기보다 주 타깃 기기와 게임의 핵심 장면을 기준으로 예산을 배분하는 편이 현실적이다.

먼저 정할 것: 프레임 시간 예산

성능 목표는 평균 FPS가 아니라 프레임 하나를 처리하는 데 쓸 수 있는 시간으로 세우는 편이 좋다. 30fps 목표라면 프레임당 약 33.3ms, 60fps 목표라면 약 16.7ms 안에 CPU 작업과 GPU 렌더링을 모두 끝내야 한다.

frame time (ms)=1000target FPSframe\ time\ (ms)=\frac{1000}{target\ FPS}

여기서 중요한 점은 CPU와 GPU 시간이 단순히 더해지지 않는 경우도 있다는 것이다. 파이프라인 구성에 따라 두 작업은 일부 겹치지만 어느 한쪽이 계속 오래 걸리면 결국 그쪽이 병목이 된다. 따라서 프로파일러에서 CPU 프레임 시간, GPU 프레임 시간, 드로우 콜, 오버드로우를 함께 확인해야 한다.

최적화 우선순위는 보통 다음 질문으로 좁힐 수 있다.

  • 전투나 이동처럼 조작이 집중되는 장면에서 목표 프레임을 지키는가?
  • 몇 분 플레이한 뒤에도 성능이 크게 떨어지지 않는가?
  • 저사양 기기에서 해상도를 낮췄을 때도 게임 규칙과 정보 전달이 유지되는가?

해상도와 선명도: 가장 빠르게 얻고 가장 쉽게 잃는 것

렌더 해상도를 낮추면 채우기 부담과 후처리 비용을 빠르게 줄일 수 있다. 화면 전체에 효과가 많거나 고해상도 기기를 겨냥하는 게임이라면 동적 해상도도 유효한 선택지다. 다만 작은 텍스트, 얇은 UI 선, 픽셀 단위의 조준 요소는 해상도 변화에 특히 취약하다.

해상도를 낮출 때는 월드와 UI를 같은 기준으로 취급하지 않는 것이 좋다. 월드는 약간 부드러워져도 플레이에 큰 문제가 없을 수 있지만 체력 수치나 버튼 라벨은 즉시 읽혀야 한다. 가능하다면 UI는 별도 캔버스 또는 별도 렌더 경로에서 네이티브 해상도에 가깝게 유지하고 3D 월드 렌더링에만 스케일을 적용한다.

실무 판단 기준

  • 빠른 액션 게임: 시야 확보와 입력 반응을 위해 프레임 안정성을 우선한다.
  • 퍼즐·캐주얼 게임: 작은 텍스트와 아이콘의 가독성을 먼저 지킨다.
  • 사진풍 배경이 핵심인 게임: 해상도보다 텍스처 품질과 압축 방식이 더 크게 보일 수 있다.

텍스처 품질과 메모리: 보이는 면에만 비용을 쓴다

모바일에서 텍스처는 시각 품질뿐 아니라 메모리 사용량, 로딩 시간, 대역폭에 영향을 준다. 큰 원본 파일을 그대로 넣는다고 언제나 선명해지지는 않는다. 화면에서 작게 보이는 소품에 지나치게 큰 텍스처를 사용하면 메모리만 차지하고 캐시 효율을 해칠 수 있다.

가장 먼저 확인할 것은 실제 화면 점유율이다. 카메라에서 멀리 있는 오브젝트, 반복 배치되는 배경 소품, 빠르게 지나가는 효과는 상대적으로 낮은 해상도와 공격적인 압축을 적용할 여지가 크다. 반대로 캐릭터 얼굴, 장비 아이콘, 반복해서 확인하는 UI 이미지는 우선순위를 높게 둔다.

밉맵과 압축의 대가

밉맵은 멀리 있는 텍스처의 깜빡임을 줄이고 샘플링 비용을 안정화하는 데 도움이 된다. 그러나 메모리를 추가로 사용한다. 화면에서 거의 축소되지 않는 UI 스프라이트에 밉맵을 무조건 켜면 이득보다 낭비가 클 수 있다.

텍스처 압축도 같은 방식으로 판단한다. 압축률이 높은 형식은 메모리를 줄이지만 색 띠 현상이나 블록 노이즈가 눈에 띌 수 있다. 피부 그라데이션, 하늘, 어두운 안개처럼 부드러운 색 변화가 중요한 자산은 실제 기기에서 반드시 확인해야 한다. 에디터 미리보기만으로는 기기별 디코딩 결과와 화면 특성을 충분히 판단하기 어렵다.

드로우 콜과 배칭: 숫자만 줄이지 않는다

드로우 콜을 줄이는 일은 여전히 중요하지만 무조건 하나의 큰 메시나 아틀라스로 합치는 것이 정답은 아니다. 과도한 병합은 컬링 효율을 떨어뜨리고 자산 수정과 메모리 관리도 복잡하게 만들 수 있다.

효과적인 배칭은 같은 재질, 셰이더 변형, 텍스처 상태를 공유하는 오브젝트에서 잘 작동한다. 따라서 아트 제작 단계부터 재질 수를 제한하고 비슷한 소품이 서로 다른 셰이더를 쓰지 않도록 기준을 세우는 편이 좋다.

// 예: 품질 단계에 따라 그림자와 후처리 비용을 함께 조절한다.
public void ApplyGraphicsTier(int tier)
{
    QualitySettings.shadowDistance = tier switch
    {
        0 => 0f,
        1 => 20f,
        _ => 45f
    };

    postProcessingEnabled = tier >= 2;
    dynamicResolutionScale = tier == 0 ? 0.75f : 1.0f;
}

이처럼 옵션을 하나씩 독립적으로 노출하기보다 플레이어가 이해하기 쉬운 품질 단계로 묶는 방식이 운영 면에서 편하다. 다만 내부적으로는 어느 설정이 CPU 병목을 줄이고 어느 설정이 GPU 병목을 줄이는지 분리해 기록해 두어야 한다.

조명, 그림자, 후처리: 분위기를 유지하는 최소 단위 찾기

실시간 그림자와 화면 전체 후처리는 장면의 인상을 크게 바꾸지만 모바일 GPU 비용도 빠르게 늘린다. 모든 광원에 그림자를 켜기보다 게임플레이상 중요한 광원 한두 개만 그림자를 맡기고 나머지는 베이크 조명이나 그림자 텍스처로 보완하는 방식이 흔하다.

후처리는 특히 ‘켜기 또는 끄기’로 판단하기 쉽지만 효과별 비용과 역할을 분리해야 한다. 색 보정은 게임의 톤을 유지하는 데 비해 비용이 비교적 예측 가능할 수 있다. 반면 블룸, 화면 공간 반사, 깊이 기반 효과는 해상도와 장면 구성에 따라 부담이 커질 수 있다. 핵심 분위기를 만드는 효과를 먼저 남기고 중복되는 장식 효과를 제거하는 순서가 좋다.

추천하는 검증 순서

  1. 후처리를 모두 끈 상태에서 목표 프레임을 확인한다.
  2. 게임의 미술 방향에 꼭 필요한 효과만 하나씩 다시 켠다.
  3. 전투, 메뉴, 컷신처럼 성격이 다른 장면에서 각각 측정한다.
  4. 충분히 긴 플레이 뒤의 발열과 클럭 저하도 확인한다.

발열과 배터리: 평균 성능이 아니라 지속 성능

초기 몇 분 동안 60fps가 나와도 기기가 뜨거워진 뒤 30fps 이하로 떨어진다면 사용자 입장에서는 성능이 좋은 게임이 아니다. 지속 성능은 기기 온도, 화면 밝기, 네트워크, 백그라운드 앱 등 외부 조건의 영향도 받는다. 그래서 단일 벤치마크 결과보다 실제 플레이 흐름을 포함한 반복 측정이 중요하다.

프레임 제한은 품질을 포기하는 기능이 아니라 전력 예산을 관리하는 도구가 될 수 있다. 빠른 반응이 필요하지 않은 메뉴나 보상 연출에서는 낮은 프레임 제한을 고려할 수 있고 게임플레이 장면에는 더 높은 목표를 적용할 수 있다. 단, 장면 전환 때 프레임 제한이 갑자기 바뀌어 체감이 거칠어지지 않는지 확인해야 한다.

기기 등급은 기능 삭제가 아니라 경험 조절이다

저사양 기기용 설정을 만들 때 핵심 기능 자체를 제거하면 게임의 정체성이 흔들릴 수 있다. 대신 거리, 밀도, 갱신 빈도, 해상도처럼 품질을 연속적으로 조절할 수 있는 항목을 우선 활용한다.

예를 들어 적의 수가 많은 전투에서 다음과 같은 조절이 가능하다.

  • 먼 거리의 그림자와 애니메이션 갱신 빈도를 낮춘다.
  • 파티클 개수와 지속 시간을 줄인다.
  • 배경 오브젝트의 LOD 전환 거리를 앞당긴다.
  • 중요한 공격 이펙트의 색 대비와 실루엣은 유지한다.

마지막 항목이 중요하다. 최적화로 제거해도 되는 것은 대개 정보 전달과 직접 관련 없는 세부 묘사다. 회피 타이밍을 알려 주는 공격 범위, 적과 아군을 구분하는 색, 수집 가능한 오브젝트의 강조 표시는 먼저 지켜야 한다.

마무리: 측정 가능한 타협을 만든다

좋은 모바일 그래픽 최적화는 낮은 옵션을 숨기는 일이 아니다. 어떤 장면에서 무엇을 지키고 무엇을 줄일지 팀이 설명할 수 있게 만드는 일이다. 목표 기기별 프레임 시간, 메모리 사용량, 발열 이후 성능, 핵심 장면의 가독성을 기준으로 잡으면 논의가 ‘더 예쁘게’와 ‘더 가볍게’의 충돌에서 벗어난다.

결국 남겨야 할 것은 게임의 첫인상보다 플레이 중 반복해서 마주치는 경험이다. 조작이 흔들리지 않고 정보가 읽히며 오랜 시간 플레이해도 성능이 유지된다면 그 타협은 대체로 올바른 방향에 가깝다.