본문 바로가기
프로그래밍/C#

[C#]🌍 세상 밖으로! 유니티 게임 빌드 및 배포 가이드 (플랫폼별 설정, 에셋 번들 기초, 배포 방법)

by 다다면체 2025. 4. 22.
728x90
반응형

게임 개발의 마지막 관문이자, 새로운 시작점인 빌드와 배포! 이 과정을 통해 여러분의 게임은 비로소 독립적인 생명을 얻게 됩니다. 조금 복잡해 보일 수 있지만, 차근차근 따라오시면 어렵지 않아요!

반응형

1. 빌드 설정 (Build Settings): 게임 출시를 위한 관제탑 ⚙️

빌드 설정 창(File > Build Settings... 또는 Ctrl+Shift+B / Cmd+Shift+B)은 게임을 어떤 플랫폼용으로, 어떤 씬들을 포함하여, 어떤 옵션으로 만들지 결정하는 핵심적인 공간입니다.

  • ① 타겟 플랫폼 선택 (Platform):
    • Windows, macOS, Linux, Android, iOS, WebGL 등 게임을 출시할 플랫폼을 선택합니다.
    • ✨ 실무 팁: 플랫폼을 변경하면 유니티는 해당 플랫폼에 맞게 에셋을 다시 임포트(Re-import)하는 과정을 거칩니다. 프로젝트 규모에 따라 시간이 꽤 걸릴 수 있으니 참고하세요! 처음부터 주 타겟 플랫폼을 설정하고 개발하는 것이 효율적입니다.
    • 선택한 플랫폼 옆의 "Switch Platform" 버튼을 눌러야 해당 플랫폼용 빌드 설정이 활성화됩니다.
  • ② 씬 추가 및 빌드 순서 설정 (Scenes In Build):
    • 빌드에 포함될 씬들을 이곳에 추가해야 합니다. "Add Open Scenes" 버튼으로 현재 열려있는 씬들을 추가하거나, 프로젝트 뷰에서 씬 파일을 드래그 앤 드롭하여 추가할 수 있습니다.
    • 🚨 중요: 씬 목록의 맨 위(인덱스 0번)에 있는 씬이 게임 시작 시 가장 먼저 로드되는 씬입니다! 타이틀 씬이나 로딩 씬을 0번에 배치해야 합니다. 씬 순서는 드래그하여 조절할 수 있습니다. 체크 해제된 씬은 빌드에 포함되지 않습니다.
  • ③ 빌드 옵션 설정 (Build Options):
    • Development Build: 체크하면 디버깅 정보가 포함된 개발용 빌드를 생성합니다. 오류 발생 시 콘솔 로그를 확인하거나 프로파일러를 연결하여 성능 분석을 할 수 있습니다. 정식 출시 빌드에서는 반드시 체크 해제하세요!
      • Script Debugging: Development Build 시 활성화되며, 외부 IDE(Visual Studio 등)를 연결하여 코드 디버깅을 가능하게 합니다.
      • Autoconnect Profiler: Development Build 시 활성화되며, 빌드된 게임 실행 시 자동으로 유니티 에디터의 프로파일러에 연결을 시도합니다.
    • Compression Method: 빌드된 데이터 압축 방식을 선택합니다. (LZ4가 기본값이며 빠른 로딩 속도, 다른 옵션은 압축률은 높지만 로딩 시간이 길어질 수 있음)
    • Build / Build And Run:
      • Build: 선택한 플랫폼용 게임 파일을 지정된 위치에 생성합니다.
      • Build And Run: 빌드 후 즉시 게임을 실행합니다. (테스트 시 유용)
  • ④ Player Settings... 버튼: 빌드 설정 외에 플랫폼별 세부 설정(아이콘, 해상도, 스플래시 이미지, 빌드 식별자 등)은 이 버튼을 눌러 Player Settings 창(Edit > Project Settings > Player)에서 진행합니다. 플랫폼별 빌드 과정에서 더 자세히 다룰게요!

2. 플랫폼별 빌드 과정: 목적지에 맞게 준비하기 🧳

각 플랫폼은 고유한 빌드 요구 사항과 설정이 있습니다. 주요 플랫폼별 빌드 과정을 살펴봅시다.

2.1 PC, Mac, Linux Standalone 빌드

  • 가장 기본적인 빌드 과정입니다.
  • Player Settings:
    • 회사 이름, 제품 이름 설정
    • 기본 아이콘 설정
    • 해상도 및 전체 화면 옵션 설정 (Resolution and Presentation)
  • Build Settings:
    • Target Platform: Windows, macOS, 또는 Linux 선택
    • Architecture: 타겟 시스템 아키텍처 선택 (예: Windows 용은 x86, x86_64)
  • Build: 클릭 후 저장 위치를 지정하면 실행 파일(.exe, .app, 실행 파일)과 데이터 폴더가 생성됩니다.

2.2 Android 빌드 📱

  • 사전 준비:
    • Android SDK, NDK, JDK 설치가 필요합니다. Unity Hub의 "Installs" 탭에서 사용하는 유니티 버전 옆 톱니바퀴 아이콘 > "Add Modules" 를 통해 간편하게 설치할 수 있습니다.
  • Player Settings (Android 탭):
    • Identification:
      • Package Name: 앱의 고유 식별자입니다. com.YourCompanyName.YourProductName 형식으로 작성하며, Google Play Store에 출시하려면 전 세계적으로 고유해야 합니다. ✨ 실무 팁: 한 번 정하면 바꾸기 어려우니 신중하게 결정하세요!
      • Version: 앱의 버전 번호 (예: 1.0, 1.1.2). 스토어 업데이트 시 증가시켜야 합니다.
      • Bundle Version Code: 내부적인 버전 코드 (정수). 스토어 업데이트 시 반드시 이전보다 높은 값으로 설정해야 합니다.
      • Minimum API Level / Target API Level: 지원할 최소/최대 Android 버전을 지정합니다. Google Play 정책에 따라 Target API Level 요구 사항이 주기적으로 업데이트되므로 확인이 필요합니다.
    • Publishing Settings:
      • Keystore Manager: 🚨 매우 중요! Google Play Store에 출시하거나 업데이트하려면 앱 서명에 사용될 Keystore 파일이 필요합니다.
        • Keystore... 버튼 클릭 > Create New 로 새 Keystore 생성 가능.
        • 🚨🚨 백업 필수: Keystore 파일과 설정한 비밀번호(스토어 비밀번호, 키 별칭, 키 비밀번호)는 절대 잃어버리면 안 됩니다! 분실 시 동일한 앱으로 업데이트가 불가능해집니다. 안전한 곳에 반드시 백업하세요!
        • 기존 Keystore가 있다면 Browse로 선택하고 비밀번호 입력.
      • Build: Build App Bundle (Google Play) 는 Google Play 제출용 AAB 파일 형식, APK는 직접 설치 가능한 파일 형식입니다. 테스트 시에는 APK, 스토어 제출 시에는 AAB를 주로 사용합니다.
  • 실행: 생성된 APK 파일을 Android 기기에 전송하여 설치하거나, USB 디버깅을 활성화한 기기를 PC에 연결하고 Build And Run을 통해 바로 설치 및 실행할 수 있습니다. (기기에서 '개발자 옵션' 및 'USB 디버깅' 활성화 필요)

2.3 iOS 빌드 🍎

  • 사전 준비:
    • macOS 운영체제가 설치된 컴퓨터가 필수입니다.
    • Apple의 Xcode 개발 툴이 설치되어 있어야 합니다. (Mac App Store에서 무료 설치)
    • 실제 기기 테스트나 App Store 배포를 위해서는 Apple Developer Program 멤버십(유료)이 필요합니다.
  • Player Settings (iOS 탭):
    • Identification:
      • Bundle Identifier: 앱의 고유 식별자. Android의 Package Name과 유사하며 com.YourCompanyName.YourProductName 형식입니다. Apple Developer 계정의 App ID와 연결됩니다.
      • Version: 앱 버전 번호.
      • Build: 내부 빌드 번호 (정수). App Store Connect 제출 시 증가시켜야 합니다.
    • Other Settings:
      • Target minimum iOS Version: 지원할 최소 iOS 버전을 설정합니다.
      • Camera Usage Description / Location Usage Description 등: 앱이 사용하는 민감한 기능(카메라, 위치 등)에 대한 권한 요청 메시지를 미리 작성해야 합니다.
  • 빌드 과정:
    • Build Settings에서 Build를 클릭하면 Unity는 실행 파일이 아닌 Xcode 프로젝트를 생성합니다.
    • 생성된 Xcode 프로젝트 폴더를 열고 .xcodeproj 파일을 실행하여 Xcode를 엽니다.
    • Xcode 설정:
      • Signing & Capabilities: Apple Developer 계정으로 로그인하고, 앱 서명(Signing)을 설정해야 합니다. (Team 선택, Bundle Identifier 확인 등) 여기서 문제가 발생하면 Xcode의 도움말이나 Apple 개발 문서를 참고해야 합니다.
      • 빌드 및 실행: Xcode 상단의 실행 대상(시뮬레이터 또는 연결된 실제 기기)을 선택하고 빌드(▶ 버튼)를 실행합니다.
  • ✨ 실무 팁: iOS 빌드는 Unity 빌드 후 Xcode 작업이 추가로 필요하며, 서명 및 프로비저닝 설정이 까다로울 수 있습니다. Apple 개발 문서를 충분히 숙지하는 것이 중요합니다.

2.4 WebGL 빌드 🌐

  • 웹 브라우저에서 직접 실행되는 게임을 만듭니다.
  • Player Settings (WebGL 탭):
    • Resolution and Presentation: 초기 해상도 설정.
    • Publishing Settings:
      • Compression Format: (Gzip, Brotli, Disabled) 압축 방식 선택. Brotli가 압축률이 좋지만 빌드 시간이 더 걸립니다. 서버 설정도 필요할 수 있습니다.
      • Memory Size: WebAssembly가 사용할 초기 메모리 크기. 너무 작으면 메모리 부족 오류, 너무 크면 일부 브라우저/기기에서 로딩 실패 가능성이 있습니다. ✨ 실무 팁: 적절한 값을 찾기 위해 테스트가 중요합니다!
  • 빌드 결과: index.html 파일, Build 폴더(게임 데이터, 코드), TemplateData 폴더(로딩 바, 스타일 등)가 생성됩니다.
  • 배포 및 실행:
    • 🚨 중요: WebGL 빌드는 로컬 파일 시스템(file:// 프로토콜)에서 직접 실행하면 보안 제약 등으로 제대로 작동하지 않는 경우가 많습니다. 반드시 웹 서버를 통해 서비스해야 합니다.
    • 간단한 테스트: Python이 설치되어 있다면, 빌드된 폴더로 이동하여 터미널에서 python -m http.server 명령어로 로컬 테스트 서버를 실행하고 브라우저에서 localhost:8000 (포트 번호는 다를 수 있음)으로 접속할 수 있습니다.
    • 실제 배포: 웹 호스팅 서비스(GitHub Pages, Netlify, Itch.io 등)에 빌드된 파일들을 업로드합니다.
  • ✨ 실무 팁: WebGL은 데스크톱이나 모바일 플랫폼에 비해 성능 및 메모리 제약이 크므로 최적화가 매우 중요합니다. 모바일 브라우저 호환성도 꼼꼼히 테스트해야 합니다.

3. 에셋 번들 (Asset Bundles): 똑똑한 에셋 관리 전략 (기초) 📦

게임 규모가 커지면 모든 에셋(모델, 텍스처, 사운드, 씬 등)을 한 번에 빌드에 포함하는 것이 비효율적일 수 있습니다. 초기 다운로드/설치 크기가 너무 커지고, 작은 업데이트에도 전체 게임을 다시 빌드하고 배포해야 하죠. 이때 에셋 번들이 유용합니다.

  • 개념: 게임 에셋들을 별도의 파일(번들)로 묶어두고, 필요할 때 다운로드하거나 로드하여 사용하는 시스템입니다.
  • 장점:
    • 작은 초기 빌드 크기: 필수 에셋만 포함하여 초기 설치 부담 감소.
    • 다운로드 콘텐츠 (DLC): 새로운 스테이지, 캐릭터, 아이템 등을 게임 업데이트 없이 번들만 추가 배포 가능.
    • 빠른 업데이트: 변경된 번들만 업데이트하므로 패치 용량 감소 및 속도 향상.
    • 메모리 관리: 필요한 에셋만 로드하고 사용 후 언로드하여 메모리 효율 증대.
  • 기본적인 사용 흐름 (개념만):
    1. 번들 지정: 프로젝트 뷰에서 번들로 묶을 에셋(프리팹, 텍스처, 씬 등)을 선택하고 인스펙터 하단의 AssetBundle 메뉴에서 번들 이름 지정.
    2. 번들 빌드: 에디터 스크립트(BuildPipeline.BuildAssetBundles)를 작성하고 실행하여 지정된 에셋들을 실제 번들 파일로 생성.
    3. 번들 배포: 생성된 번들 파일들을 웹 서버나 CDN에 업로드 (또는 StreamingAssets 폴더에 포함하여 초기 빌드에 넣을 수도 있음).
    4. 런타임 로드: 게임 실행 중 필요한 시점에 스크립트(UnityWebRequestAssetBundle, AssetBundle.LoadFromFileAsync 등)를 사용하여 서버에서 번들을 다운로드하거나 로컬 번들을 로드.
    5. 에셋 사용: 로드된 번들에서 필요한 에셋(LoadAsset<GameObject>("AssetName") 등)을 가져와 사용.
    6. 언로드: 번들 사용이 끝나면 메모리에서 해제 (bundle.Unload(false) 또는 bundle.Unload(true)).
  • ✨ 실무 팁: 에셋 번들은 강력하지만, 의존성 관리, 버전 관리, 빌드/로드 파이프라인 구축 등 신경 쓸 부분이 많아 복잡합니다. 유니티는 이러한 복잡성을 크게 줄여주는 Addressable Assets System 이라는 더 발전된 시스템을 제공합니다. 새로운 프로젝트라면 Addressables 사용을 적극 권장합니다! (패키지 매니저에서 설치 가능)

4. 게임 배포 방법: 세상에 내 게임 알리기! 📢

빌드가 완료되었다면 이제 실제 플레이어들에게 전달할 방법을 선택해야 합니다. 플랫폼별 주요 배포처는 다음과 같습니다. (각 스토어/플랫폼의 정책과 절차는 매우 상세하므로, 여기서는 간단히 소개만 합니다.)

  • PC, Mac, Linux:
    • Steam: 가장 큰 PC 게임 플랫폼. Steamworks 등록 및 설정, 빌드 업로드, 스토어 페이지 꾸미기, 검토 과정 필요.
    • Itch.io: 인디 개발자에게 친화적인 플랫폼. 비교적 자유로운 등록 및 판매/무료 배포 가능.
    • Epic Games Store, GOG 등: 다른 주요 스토어들도 고려 가능.
    • 자체 웹사이트: 직접 다운로드 링크 제공 (결제 시스템 연동 필요 시 추가 개발).
  • Android:
    • Google Play Store: 가장 큰 Android 앱 마켓. Google Play Console 등록(개발자 계정, 등록비 필요), AAB 파일 업로드, 스토어 정보(스크린샷, 설명 등) 입력, 앱 심사 및 출시.
    • 원스토어 등 기타 로컬 스토어: 국가별 로컬 스토어 등록 고려.
    • APK 직접 배포: 웹사이트 등에서 APK 파일을 직접 제공 (보안 위험 및 설치 불편함 감수).
  • iOS:
    • Apple App Store: 유일한 공식 배포 채널. Apple Developer Program 가입(연간 비용 발생), App Store Connect 통해 앱 정보 등록, Xcode로 빌드 아카이브 업로드, Apple의 심사 과정 통과 후 출시.
    • TestFlight: App Store 출시 전, 제한된 테스터들에게 베타 버전 배포 및 피드백 수집 가능.
  • WebGL:
    • 웹 호스팅: 개인/회사 웹사이트에 업로드 (호스팅 비용 발생 가능).
    • 게임 포털: Itch.io, Kongregate, Newgrounds 등 WebGL 게임을 지원하는 포털 사이트에 업로드.
    • GitHub Pages, Netlify 등: 정적 웹사이트 무료 호스팅 서비스를 활용.
  • ✨ 실무 팁: 각 스토어/플랫폼은 자체적인 가이드라인, 콘텐츠 정책, 심사 기준, 수익 분배 모델을 가지고 있습니다. 목표 플랫폼을 정했다면 최대한 빨리 해당 플랫폼의 개발자 문서와 정책을 확인하고 준비를 시작하는 것이 좋습니다. 심사 과정에서 시간이 걸리거나 거절될 수도 있으니 일정을 여유롭게 계획하세요!

마무리하며 ✨

Unity Editor에서 플레이하던 게임이 여러분의 손을 거쳐 실제 기기나 웹 브라우저에서 실행되는 순간은 정말 감격적입니다! 😄 빌드와 배포는 개발의 끝이 아니라, 플레이어들과 만나는 새로운 시작입니다.

오늘 살펴본 내용들을 바탕으로 여러분의 게임을 성공적으로 세상에 선보이시기를 바랍니다. 처음에는 낯설고 어렵게 느껴질 수 있지만, 몇 번 경험해보면 금방 익숙해지실 거예요. 막히는 부분이 있다면 언제든 저에게 다시 질문해주세요! 여러분의 성공적인 게임 출시를 응원합니다! 💪

728x90
반응형