icon
10장 : 배포 및 유지보수

환경 설정의 배포 준비


이전 장들에서 게임의 다양한 핵심 요소들을 구현하고 성능을 최적화하는 방법을 배웠습니다. 이제 여러분의 게임은 플레이어에게 선보일 준비가 거의 완료되었습니다. 10장 "배포 및 유지보수"에서는 개발된 게임을 플레이어에게 실제로 제공하고, 출시 후에도 안정적으로 관리하는 데 필요한 과정들을 다룹니다. 그 첫걸음은 바로 환경 설정의 배포 준비입니다. 이는 개발 환경에서 정상적으로 작동하던 게임이 최종 사용자 환경에서도 문제없이 실행되도록 각종 설정들을 최종 점검하고 패키징하는 일련의 과정을 의미합니다. '나 혼자 언리얼 기본' 교재를 통해 여러분이 언리얼 엔진에서 게임을 성공적으로 배포하기 위한 환경 설정 점검 사항과 준비 절차를 이해하고, 이를 통해 완벽하게 준비된 게임을 세상에 내놓을 수 있도록 안내해 드리겠습니다. 마치 여행 전 짐을 꼼꼼히 싸듯, 여러분의 게임도 배포 전 모든 환경 설정을 빠짐없이 점검해 봅시다.


배포 준비의 중요성

배포 준비는 게임 개발의 마지막 단계이자, 플레이어에게 게임의 첫인상을 결정짓는 매우 중요한 과정입니다.

  • 안정적인 실행 보장: 개발 환경과 플레이어 환경은 다를 수 있습니다. 배포 준비는 다양한 사용자 환경에서 게임이 문제없이 실행되도록 보장합니다.
  • 최적의 성능 제공: 최종 빌드에 필요한 최적화 설정들이 올바르게 적용되었는지 확인하여, 모든 플레이어에게 쾌적한 경험을 제공합니다.
  • 파일 크기 및 로딩 시간 최적화: 불필요한 데이터를 제거하고 효율적인 패키징을 통해 게임의 설치 용량과 로딩 시간을 줄입니다.
  • 보안 및 저작권 보호: 게임 데이터를 적절히 암호화하거나 패키징하여 무단 변조 및 저작권 침해를 방지합니다.
  • 플랫폼별 요구사항 충족: PC, 모바일, 콘솔 등 각 플랫폼이 요구하는 고유한 배포 기준과 인증 절차를 충족시킵니다.

프로젝트 설정 (Project Settings) 최종 점검

편집(Edit) > 프로젝트 세팅(Project Settings) 메뉴는 게임 배포를 위한 핵심적인 전역 설정들을 포함하고 있습니다. 다음 항목들을 최종 점검합니다.

프로젝트 (Project) 섹션

  • Maps & Modes (맵 및 모드)
    • Default Maps (기본 맵)
      • Editor Startup Map: 에디터 시작 시 로드될 맵 (개발용).
      • Game Default Map: 게임 시작 시 로드될 맵 (배포용). 반드시 게임의 시작 맵으로 설정합니다.
      • Transition Map: 레벨 로딩 중 표시될 맵 (선택 사항).
    • Default GameMode: 게임의 기본 GameMode 클래스가 올바르게 설정되었는지 확인합니다.
  • Packaging (패키징)
    • List of maps to include in a packaged build: 빌드에 포함할 맵 목록을 정의합니다. 게임에 사용되는 모든 맵이 여기에 포함되어야 합니다.
    • Build Configuration: Development (개발용), Shipping (최종 배포용), DebugGame (디버그 정보 포함) 중 Shipping을 선택합니다. Shipping 빌드는 최적화가 가장 잘 되어 있고 디버그 정보가 거의 포함되지 않아 가장 작고 빠릅니다.
    • Use Pak File: 일반적으로 활성화하여 게임 데이터를 .pak 파일로 압축합니다. 이는 파일 크기 감소 및 로딩 속도 향상에 도움이 됩니다.
    • For Distribution: 최종 배포를 위한 빌드임을 나타내며, 추가적인 최적화 및 보안 설정이 적용됩니다. (서명, 암호화 등)
    • Cook everything in the project content directory: 모든 콘텐츠를 쿠킹(Cook)할지 여부. 일반적으로 활성화하지만, 특정 콘텐츠만 빌드하는 경우 비활성화할 수 있습니다.
  • Descriptions (설명)
    • Project Name, Company Name, Copyright Notice: 게임의 이름, 회사명, 저작권 정보 등을 정확히 입력합니다. 이는 설치 파일이나 실행 파일 정보에 표시될 수 있습니다.
    • Project Version: 게임의 현재 버전 정보를 명시합니다.

엔진 (Engine) 섹션

  • Rendering (렌더링)
    • Frame Rate: Fixed Frame Rate를 사용하지 않는 경우, Use Less CPU when in Background 등을 통해 백그라운드 성능을 조절할 수 있습니다.
    • Motion Blur, Anti-Aliasing Method, Global Illumination, Reflections 등 9장 3절에서 다룬 렌더링 품질 설정을 최종적으로 검토하고, 목표 플랫폼에 맞는 최적의 균형점을 찾습니다. (예: 저사양 플랫폼에서는 불필요한 고품질 효과 비활성화)
  • Input (입력)
    • Action MappingsAxis Mappings: 모든 게임 컨트롤이 올바르게 매핑되었는지, 중복되거나 누락된 키는 없는지 확인합니다. (특히 Escape 키 같은 기본 시스템 키와의 충돌 여부)
  • Physics (물리)
    • Framerate and Substepping: 9장 4절에서 다룬 Max Physics Delta Time, Max Substeps 등의 설정이 게임의 물리 시뮬레이션 안정성에 적합한지 확인합니다.

플랫폼별 설정 (Platform Settings) 점검

각 플랫폼(Windows, Android, iOS 등)은 고유한 배포 요구사항을 가집니다.

  • 프로젝트 세팅 > 플랫폼 (Platforms) 섹션에서 대상 플랫폼을 선택하고 다음 항목들을 점검합니다.
  • Windows
    • Executable Name: 최종 실행 파일의 이름.
    • Icons: 게임 아이콘 설정.
    • Packaging 섹션: Install Location (기본 설치 경로), Prerequisites (필요한 외부 라이브러리) 등.
  • Android / iOS
    • Package Name, Version Name, Version Code: 앱의 고유 식별자, 버전 정보.
    • Signing: 앱 서명을 위한 키스토어(Android) 또는 인증서/프로비저닝 프로파일(iOS) 설정.
    • Build: ETC2 (Android), PVRTC (iOS) 등 플랫폼별 텍스처 압축 포맷 설정.
    • Minimum SDK Version, Target SDK Version: 지원할 최소/최대 OS 버전.
    • Orientation: 화면 방향 설정 (Portrait/Landscape).
    • Architecture: 64비트 (ARM64) 아키텍처 지원 여부.
  • 콘솔 (Console)
    • 각 콘솔 제조사(Sony, Microsoft, Nintendo)의 개발자 프로그램에 등록하여 SDK 및 배포 가이드를 따릅니다. 언리얼 엔진은 해당 SDK와 연동하여 빌드를 생성합니다.

코드 및 콘텐츠 최종 점검

환경 설정 외에도 최종 빌드를 위한 코드와 콘텐츠 점검이 필요합니다.

코드 및 블루프린트 정리

  • 디버그 코드 제거: 개발 과정에서 사용했던 Print String, Draw Debug Sphere 등의 디버그 노드를 모두 제거하거나, WITH_EDITORONLY_DATA와 같은 조건부 컴파일 매크로 안에 넣어 최종 빌드에서 제외되도록 합니다.
  • 사용하지 않는 코드/블루프린트 제거: 더 이상 사용되지 않는 함수, 변수, 이벤트 그래프 노드 등은 정리합니다.
  • 주석 및 문서화: 최종 코드에 대한 주석과 문서화를 통해 향후 유지보수를 용이하게 합니다.

콘텐츠 정리 및 검토

  • 사용하지 않는 자산 제거: 콘텐츠 브라우저에서 감사(Audit) > 참조 뷰어(Reference Viewer)를 사용하여 특정 자산이 어디에서 사용되는지 확인하고, 사용되지 않는 자산은 제거합니다.
  • 중복 자산 제거: 동일한 자산이 여러 개 복제되어 존재하지 않는지 확인하고 하나로 통일합니다.
  • LOD 및 충돌 메시 최종 확인: 9장 2절에서 다룬 LOD와 충돌 메시 최적화가 모든 메시에 올바르게 적용되었는지 재확인합니다.
  • 퀄리티 체크: 모든 텍스처, 머티리얼, 메시가 시각적 결함 없이 의도한 대로 표시되는지 최종적으로 검토합니다.

빌드 및 테스트 준비

배포 준비의 마지막 단계는 실제 빌드를 생성하고 테스트하는 것입니다.

패키징 (Packaging)

  • 파일(File) > 프로젝트 패키징(Package Project) 메뉴를 사용하여 원하는 플랫폼(Windows, Android 등)으로 게임을 패키징합니다.
  • Build ConfigurationShipping 으로 설정하는 것을 잊지 마세요.
  • 패키징 과정에서 오류가 발생하면 출력 로그(Output Log) 창을 확인하여 원인을 분석하고 해결합니다. (예: 컴파일 오류, 자산 참조 오류)

최종 테스트 (Final Testing)

  • 다양한 환경 테스트: 가능한 한 다양한 하드웨어 스펙(저사양/고성능)과 운영체제 버전에서 빌드된 게임을 테스트합니다.
  • 버그 보고 및 수정: 발견된 버그는 신속하게 보고하고 수정합니다.
  • 로딩 시간 측정: 게임의 로딩 시간이 허용 가능한 범위 내에 있는지 측정합니다.
  • 성능 측정: Stat FPS 등을 사용하여 최종 빌드에서도 목표 FPS가 달성되는지 확인합니다.

환경 설정의 배포 준비는 게임 개발의 결실을 맺는 중요한 단계입니다. 이 절에서 배운 프로젝트 설정, 플랫폼별 설정, 코드/콘텐츠 정리, 그리고 최종 빌드 및 테스트 준비 과정을 철저히 거쳐 여러분의 게임이 플레이어에게 완벽한 상태로 전달될 수 있도록 노력해야 합니다. 이 모든 과정은 여러분의 게임이 성공적으로 출시되고, 플레이어들에게 좋은 인상을 남기는 데 결정적인 역할을 할 것입니다.