본문으로 건너뛰기

안동민 개발노트

본문 시작

환경 설정의 배포 준비

프로젝트·플랫폼·코드·콘텐츠 설정을 릴리스 기준으로 최종 점검해 개발 환경과 사용자 빌드의 차이를 줄입니다.

기능 구현과 성능 점검을 마쳤다면, 이제 결과물을 실제 사용자 환경으로 옮길 준비를 할 단계입니다.

10장 배포 및 유지보수는 게임을 플레이어에게 전달한 뒤에도 안정적으로 운영하기 위한 실무 흐름을 다룹니다.

그 시작점은 환경 설정의 배포 준비이며, 개발 환경에서만 동작하던 설정을 실제 사용자 환경에서도 문제없이 재현되도록 점검하는 과정입니다.

이번 절에서는 배포 직전 확인해야 할 설정 항목과 준비 순서를 정리합니다.

이 과정을 거치면 릴리스 직후 발생하기 쉬운 실행 환경 이슈를 크게 줄일 수 있습니다.

배포 준비 점검

맵, 패키징, 플랫폼 요구사항, 코드와 콘텐츠 정리를 릴리스 전에 한 흐름으로 확인한다.

  1. 1
    Maps

    게임 시작 맵과 게임 모드가 배포용으로 지정됐는지 본다.

  2. 2
    Packaging

    Shipping, Pak, 포함 맵 목록 같은 패키징 기준을 맞춘다.

  3. 3
    Platform

    아이콘, 서명, SDK, 최소 버전을 플랫폼별로 확인한다.

  4. 4
    Cleanup

    디버그 출력과 미사용 콘텐츠를 정리한다.


배포 준비의 중요성

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

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

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

배포 준비 최종 점검표

배포 준비는 패키징 버튼을 누르기 전 프로젝트 설정, 플랫폼 설정, 콘텐츠 정리, 테스트 기준을 한 번에 맞추는 과정입니다.

  1. 프로젝트 정보

    름, 설명, 아이콘, 기본 맵처럼 사용자에게 보이는 정보를 정리합니다.

  2. 플랫폼 옵션

    해상도, 입력, 렌더링 품질, 권한 설정을 목표 플랫폼에 맞춥니다.

  3. 콘텐츠 정리

    미사용 에셋, 임시 폴더, 디버그 블루프린트를 패키징 전에 제거합니다.

  4. 최종 테스트

    깨끗한 실행 환경에서 시작, 저장, 종료, 재실행 흐름을 확인합니다.

편집(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: 게임의 현재 버전 정보를 명시합니다.

패키징 항목은 서로 의존성이 높아 한 번에 점검해야 누락을 줄일 수 있습니다.

아래 시각자료로 Build Configuration 선택 기준과 필수 체크 항목을 함께 확인하세요.

배포 설정 묶음

한 항목만 맞아도 다른 설정이 빠지면 실행 실패나 누락 에셋 문제가 생길 수 있으므로, 프로젝트 섹션의 핵심 값을 함께 점검합니다.

  1. 기본 맵과 GameMode

    maps 실행 시작점이 개발용 맵이 아니라 실제 시작 맵을 가리키는지 확인합니다. ✓ Game Default Map ✓ Default GameMode

  2. Build Configuration

    shipping 최종 배포용은 디버그 정보와 콘솔 기능이 줄어든 Shipping 기준으로 만듭니다. ✓ Shipping 선택 ✓ For Distribution 검토

  3. 맵 포함과 Pak 파일

    package 필수 맵을 목록에 넣고, Pak 파일로 묶어 배포 파일 수와 로딩 부담을 줄입니다. ✓ List of maps ✓ Use Pak File

엔진 (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와 충돌 메시 최적화가 모든 메시에 올바르게 적용되었는지 재확인합니다.
  • 퀄리티 체크: 모든 텍스처, 머티리얼, 메시가 시각적 결함 없이 의도한 대로 표시되는지 최종적으로 검토합니다.

빌드 및 테스트 준비

프로젝트 설정 최종 점검 흐름

패키징 직전에 프로젝트 식별자, 입력, 렌더링, 품질 설정을 순서대로 묶어 누락을 줄입니다.

  1. 1
    프로젝트 식별

    Project Name, Company Name, 버전, 아이콘과 시작 맵을 확정합니다. 메타데이터

  2. 2
    입력과 플랫폼

    키보드, 패드, 터치 입력 매핑과 플랫폼별 해상도 정책을 대조합니다. 입력 일관성

  3. 3
    렌더링 기본값

    품질 프리셋, 셰이더 모델, 모바일 HDR 같은 설정을 대상 장치 기준으로 고정합니다. 성능 기준

  4. 4
    콘텐츠 참조

    사용하지 않는 에셋과 누락 참조를 정리한 뒤 쿠킹 대상 폴더를 확인합니다. 쿠킹 안전

  5. 5
    클린 빌드

    캐시를 비운 환경에서도 같은 결과가 나오는지 확인합니다.

  6. 6
    시작 경로

    실행 파일에서 메뉴, 로딩, 첫 플레이까지 끊김이 없는지 봅니다.

  7. 7
    설정 기록

    변경된 Project Settings 항목을 릴리스 노트와 맞춥니다.

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

패키징 (Packaging)

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

최종 테스트 (Final Testing)

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

Shipping 빌드가 만들어졌다는 사실보다, 설치 후 시작과 종료까지 실제 플레이어 환경에서 재현되는지가 더 중요합니다.

  1. Shipping 빌드 생성

    package 개발용 로그와 에디터 전용 데이터가 빠진 배포 구성을 사용합니다.

  2. 깨끗한 환경 설치

    install 엔진이 없는 장비에서 실행 파일, 권한, 필수 런타임을 확인합니다.

  3. 핵심 플레이 경로

    scenario 시작, 로딩, 저장, 종료, 재실행까지 최소 성공 경로를 밟습니다.

  4. 성능 기준 확인

    measure 목표 FPS, 로딩 시간, 메모리 사용량이 허용 범위인지 기록합니다.

  5. 멈춰야 하는 신호

    hold 시작 맵 누락, 검은 화면, 저장 데이터 손상 hold 패키징 로그의 누락 에셋, 서명 오류, 권한 실패 hold 목표 장비에서 프레임과 로딩 시간이 기준선 초과

  6. 빌드 실행 통과 조건

    설치 런타임 의존성 포함 실행 시작 맵 진입 확인 기록 측정값과 버전 태그 보관


배포 준비에서는 프로젝트 설정, 플랫폼 설정, 코드/콘텐츠 정리, 최종 빌드 테스트를 체크리스트로 관리해야 합니다.

이 과정은 출시 전 오류를 줄이고 플랫폼별 요구사항을 확인하는 기준이 됩니다.

아래 점검표는 개발 중 설정을 배포 가능한 설정으로 잠글 때 함께 확인해야 하는 항목을 정리합니다.

배포 설정 최종 점검

프로젝트가 에디터에서는 정상이어도 패키징된 실행 파일에서는 시작 맵, 포함 맵, 플랫폼 설정 누락으로 실패할 수 있습니다.

  1. Game Default Map

    시작 맵 실제 플레이 시작 지점이 테스트 맵이 아닌지 확인합니다.

  2. Shipping 기준

    빌드 구성 최종 배포는 Shipping과 For Distribution 기준을 함께 봅니다.

  3. List of maps

    포함 목록 필수 레벨과 로딩 경로가 패키지에 포함되는지 잠급니다.

  4. 아이콘과 서명

    플랫폼 값 Windows, Android, iOS별 필수 값과 인증서를 점검합니다.

언리얼 프로젝트를 배포하기 전에 확인할 환경 설정 기준을 다시 정리합니다.