안동민 개발노트

본문 시작

크로스 플랫폼 배포 고려사항

PC·모바일·콘솔의 성능·입력·UI·인증 차이를 비교하고 프로젝트에 맞는 배포 순서와 플랫폼 전략을 결정합니다.

한 플랫폼에만 배포하면 운영은 단순하지만, 사용자 확장 여지도 그만큼 제한됩니다.

반대로 PC, 모바일, 콘솔을 함께 노리면 기회는 커지지만 입력 방식, 성능 한계, 심사 규정이 모두 달라져 준비해야 할 항목이 급격히 늘어납니다.

이번 절에서는 크로스 플랫폼 배포(Cross-Platform Deployment)를 준비할 때 반드시 확인해야 할 기술적·운영적 포인트를 정리합니다.

플랫폼별 최적화 우선순위, UI/UX 조정, 인증 대응 흐름을 함께 보면서 실무에서 자주 놓치는 위험을 줄이는 것이 목표입니다.

이 절을 마치면 프로젝트 특성에 맞는 크로스 플랫폼 전략을 스스로 선택하고 실행할 수 있습니다.


크로스 플랫폼 배포의 중요성 및 과제

하나의 게임을 여러 플랫폼에 배포하는 것은 분명한 이점을 제공하지만, 동시에 해결해야 할 과제들도 존재합니다.

중요성

  • 시장 확대 및 플레이어 접근성 증가: PC 게이머뿐만 아니라 모바일, 콘솔 사용자들에게도 게임을 제공하여 잠재적인 플레이어 수를 크게 늘립니다.
  • 수익 증대: 더 많은 플레이어가 게임을 구매하거나 인앱 결제를 할 기회를 제공하여 매출을 높입니다.
  • 브랜드 인지도 강화: 다양한 플랫폼에서 게임을 접할 수 있게 함으로써 게임의 브랜드 인지도를 높이고 팬덤을 구축하는 데 기여합니다.
  • 개발 비용 효율성: 언리얼 엔진과 같은 크로스 플랫폼 엔진을 사용하면 각 플랫폼별로 완전히 다른 게임을 개발하는 것보다 개발 비용과 시간을 절약할 수 있습니다.

주요 과제

  • 성능 최적화: 플랫폼별 하드웨어 성능 차이가 커서, 저사양 기기에서도 원활하게 작동하도록 정교한 최적화가 필요합니다.
  • 입력 방식의 차이: 키보드/마우스, 게임패드, 터치스크린 등 플랫폼별로 다른 입력 방식을 모두 지원해야 합니다.
  • UI/UX 조정: 화면 크기, 해상도, 조작 방식에 따라 사용자 인터페이스(UI)와 사용자 경험(UX)을 재설계해야 합니다.
  • 플랫폼별 요구사항 및 인증: 각 플랫폼(Google Play, Apple App Store, Steam, PlayStation, Xbox, Nintendo 등)마다 고유한 기술적 요구사항, 콘텐츠 가이드라인, 인증 절차를 준수해야 합니다.
  • 버그 및 QA: 플랫폼별로 발생하는 버그가 다를 수 있으며, 모든 플랫폼에서 충분한 QA(품질 보증)가 이루어져야 합니다.
  • 메모리 및 저장 공간 제약: 특히 모바일이나 구형 콘솔의 경우 메모리 및 저장 공간 제약이 더 엄격합니다.

플랫폼별 성능 최적화 전략

언리얼 엔진은 기본적으로 크로스 플랫폼 렌더링을 지원하지만, 최적의 성능을 위해서는 각 플랫폼의 특성을 고려한 미세 조정이 필요합니다.

모바일 플랫폼 (iOS, Android)

  • 높은 최적화 요구: PC나 콘솔보다 하드웨어 성능이 낮으므로 드로우 콜, 텍스처 크기, 이펙트 비용을 더 엄격하게 제한해야 합니다.
  • 폴리곤 및 드로우 콜 제한
    • 화면에 보이는 삼각형 수와 제출·픽셀 비용을 실기기에서 측정해 예산을 정합니다. 모든 모바일에 통하는 고정 폴리곤 상한은 없습니다.
    • Merge Actors, HISM 컴포넌트를 사용하여 드로우 콜을 최대한 줄입니다.
  • 텍스처 해상도 및 압축:
    • Max Texture Size를 낮게 설정하고, ASTC·ETC2 등 엔진 버전과 대상 기기가 지원하는 압축 포맷을 선택합니다. 기기별 품질·메모리와 실제 쿠킹 결과를 확인합니다.
  • 머티리얼 및 셰이더 복잡도
    • Shader Complexity 뷰 모드를 사용하여 복잡한 셰이더를 단순화하고, Masked 또는 Opaque 머티리얼을 선호합니다.
    • Unlit 머티리얼 활용을 고려합니다.
  • 광원 및 그림자
    • 선택한 모바일 렌더링 경로가 지원하는 광원 Mobility와 그림자 기능을 확인합니다. 정적 조명이 적합한 장면은 베이크를 검토하고 동적 비용은 실기기에서 측정합니다.
    • 동적 그림자는 최소화하거나 품질을 대폭 낮춥니다.
  • 포스트 프로세싱
    • 대부분의 고비용 포스트 프로세싱 효과(SSR, SSAO, 복잡한 블룸)를 비활성화하거나 매우 낮은 품질로 설정합니다.
  • LOD 및 컬링
    • LOD 설정을 적극적으로 활용하고, Cull Distance를 적절히 설정하여 불필요한 오브젝트를 컬링합니다.
  • 프로젝트 설정
    • Project Settings > Engine > Rendering의 Mobile HDR와 모바일 렌더링·안티앨리어싱 설정을 확인합니다. HDR 비활성화는 색 공간·후처리 기능도 바꾸며, MSAA 지원은 렌더링 경로에 따라 다릅니다.

콘솔 플랫폼

  • 하드웨어 표준화: PC와 달리 하드웨어 스펙이 고정되어 있어 특정 콘솔에 맞춰 최적화하기 용이합니다.
  • 목표 FPS 및 해상도: 각 콘솔의 목표 FPS(30fps 또는 60fps)와 해상도(720p, 1080p, 4K)를 달성하도록 최적화합니다.
  • 메모리 관리: 콘솔별로 할당된 메모리 제한을 준수해야 합니다. Memreport나 Unreal Insights로 메모리 사용량을 면밀히 분석합니다.
  • 최적화 도구: 콘솔 개발 키트에 포함된 프로파일링 도구와 언리얼 엔진의 Stat 명령어, ProfileGPU를 함께 활용합니다.
  • 로드 시간 최적화: 게임 로드 시간이 길어지지 않도록 에셋 로딩 전략(Streaming Levels, Async Loading)을 최적화합니다.

PC 플랫폼

  • 다양한 하드웨어 스펙: 저사양부터 고사양까지 다양한 PC 환경을 고려해야 합니다.
  • 확장성 설정 (Scalability Settings): Scalability 프리셋·설정 파일과 Game User Settings를 사용해 플레이어가 게임 내 옵션 메뉴에서 그래픽 품질(Low, Medium, High, Epic, Cinematic)을 직접 조절할 수 있도록 구현합니다. (9장 3절 참조)
  • DX12 / Vulkan 지원: 대상 하드웨어와 필요한 기능에 맞는 RHI를 선택합니다. API 이름만으로 성능 향상을 보장하지 말고 드라이버·셰이더·프레임 시간을 비교합니다.
  • 벤치마크 도구: 다양한 GPU 및 CPU 조합에서 게임의 성능을 테스트하기 위한 벤치마크 기능을 포함하는 것도 좋습니다.

입력 및 UI/UX 고려사항

플랫폼별로 다른 입력 방식과 화면 특성을 반영해야 합니다.

입력 방식

  • 키보드/마우스 (PC): 정밀한 조작에 유리.
  • 게임패드 (PC, 콘솔): 진동 피드백, 아날로그 스틱 조작. UI 탐색 시 포커스 관리 중요.
  • 터치스크린 (모바일): 멀티터치, 스와이프, 핀치 줌 등 직관적인 제스처. 버튼 크기 및 간격, 터치 피드백 고려.
  • 언리얼 엔진의 Enhanced Input System: 하나의 입력 액션을 여러 디바이스에 매핑할 수 있도록 설계되어 크로스 플랫폼 입력 관리에 용이합니다.

UI/UX 디자인

  • 해상도 및 화면 비율: 다양한 해상도와 화면 비율에 대응할 수 있도록 UMG 위젯의 Anchor·Padding과 DPI Scaling·Safe Zone을 함께 사용합니다. TV의 시청 거리와 모바일의 노치 영역도 확인합니다.
  • 정보 밀도: 작은 화면(모바일)에서는 정보 밀도를 줄이고, 큰 화면(PC, TV)에서는 더 많은 정보를 표시할 수 있도록 디자인합니다.
  • 버튼 크기: 모바일 터치 환경에서는 버튼 크기가 충분히 커야 하고, 간격도 적절해야 오작동을 줄일 수 있습니다.
  • 폰트 가독성: 작은 화면에서도 폰트가 잘 읽히도록 크기, 색상, 대비를 조절합니다.
  • 네비게이션: 게임패드나 키보드로 UI를 탐색할 때의 포커스 이동 순서를 명확하게 설정합니다.

플랫폼별 배포 및 인증

각 플랫폼에서 게임을 출시하려면 해당 플랫폼의 고유한 요구사항과 절차를 따라야 합니다.

  • Google Play Store (Android)
    • 개발자 계정 등록, 앱 서명(Keystore), 스토어의 현재 요구에 맞는 AAB(Android App Bundle) 등 배포 파일 생성, 앱 정보 및 스크린샷 등록.
    • Google Play Console을 통해 앱 버전 관리 및 출시.
  • Apple App Store (iOS)
    • Apple Developer Program 등록, 앱 서명(Certificate, Provisioning Profile), IPA 파일 생성, 앱 정보 및 스크린샷 등록.
    • App Store Connect를 통해 앱 버전 관리 및 출시.
  • Steam (PC)
    • Steamworks 파트너 프로그램 등록, SteamPipe를 통한 빌드 업로드 및 업데이트 관리. Steam API 기능을 사용할 때는 해당 SDK를 연동합니다.
    • 상점 페이지 설정, 도전 과제, 클라우드 저장 등 Steam 기능 연동.
  • Epic Games Store (PC)
    • Epic Developer Portal에서 제품·스토어 배포 설정, 개발자 포털을 통한 빌드 업로드 및 관리.
  • 콘솔 플랫폼 (PlayStation, Xbox, Nintendo)
    • 각 콘솔 제조사의 공식 개발자 프로그램에 등록하고 NDA(비밀유지협약)를 체결해야 합니다.
    • 전용 개발 키트(Dev Kit) 사용, 플랫폼 SDK 통합, 엄격한 인증(Certification) 절차 통과가 필수적입니다.
    • 언리얼 엔진은 각 콘솔 SDK와 연동되어 빌드를 생성하지만, 콘솔별로 고유한 빌드 파이프라인과 추가적인 설정이 필요합니다.

크로스 플랫폼 배포의 워크플로우

초기 기획 단계부터 크로스 플랫폼 고려: 처음부터 모든 플랫폼을 지원할지, 어떤 플랫폼을 우선시할지 결정하고, 이에 맞춰 게임 디자인과 아트를 설계합니다.

점진적 최적화: 출시 목표와 콘텐츠 요구에 따라 기준 플랫폼을 정합니다. 공통 콘텐츠가 가장 낮은 지원 사양에서도 성립하는지 확인하고 플랫폼별 품질을 조정합니다.

플랫폼별 분기 처리: Device Profiles·Scalability 등 데이터 설정으로 품질 차이를 관리합니다. 로직 분기가 필요하면 Blueprint의 Get Platform Name이나 C++의 PLATFORM_ANDROID 같은 실제 플랫폼 매크로를 사용합니다. 공통 게임 규칙에 분기를 흩뿌리지 말고 필요한 경계에 모읍니다.

자동화된 빌드 시스템: CI/CD(Continuous Integration/Continuous Deployment) 시스템을 구축하여 여러 플랫폼에 대한 빌드를 자동화하고, 패키징 및 테스트 프로세스를 효율화합니다.

다양한 기기에서의 QA: 각 플랫폼별로 다양한 기기(저사양, 중사양, 고사양)에서 철저한 QA를 진행하여 호환성과 안정성을 확보합니다.

플랫폼 의사결정 순서 (권장)

  1. 1차 출시 플랫폼(수익/유저 기반)을 먼저 고정하고, 나머지는 후속 포팅으로 계획합니다.
  2. 입력 체계(패드/터치/키보드) 차이를 기준으로 UI/UX 공통 컴포넌트를 분리합니다.
  3. 가장 낮은 사양 플랫폼에서 안정 FPS를 확보한 뒤 상위 플랫폼 품질을 확장합니다.
  4. 각 스토어의 인증 요구사항(개인정보, 결제, 저장 정책)을 기능 요구사항으로 역산합니다.
  5. 빌드 자동화(CI/CD)와 기기 QA 기준표를 동시에 운영해 릴리즈 리스크를 줄입니다.

운영 전 최종 점검 체크리스트

  • 플랫폼별 입력 충돌(버튼 맵핑/포커스 이동) 이슈를 전수 테스트했는가?
  • 저사양 기기에서 열/메모리 스로틀링 시 프레임 저하를 측정했는가?
  • 스토어 인증 체크리스트(아이콘, 권한, 개인정보 고지)를 사전 검수했는가?
  • 크로스 플랫폼 저장 데이터 호환 정책(버전, 마이그레이션)을 정의했는가?
  • 릴리즈 이후 핫픽스 절차(롤백 포함)를 운영 문서로 준비했는가?

공통 기능과 플랫폼별 검증

공통으로 유지할 것플랫폼마다 확인할 것
게임 규칙·세이브 의미계정·저장 위치·업데이트 후 호환
입력 액션의 의미키보드·패드·터치 매핑과 포커스
콘텐츠의 플레이 목적렌더링 기능·메모리·열·프레임 예산
오류·복구 시나리오서명·권한·연결 해제·스토어 제출 조건

하나의 실행 파일을 복사하는 방식이 아니라 대상별 산출물과 QA 결과를 관리합니다. 스토어·SDK의 세부 요구는 제출 시점의 공식 지침을 확인합니다.