Version: 2018.4
언어: 한국어
UDP 콘솔에서 게임 관리 및 퍼블리싱
UDP 레퍼런스

다른 서비스에서 UDP 사용

UDP에서 클라우드 빌드 사용

클라우드 빌드를 사용하여 다음과 같은 방법으로 UDP 콘솔에 게임을 배포할 수 있습니다.

클라우드 빌드를 통해 UDP 콘솔에 빌드 푸시

이 섹션에서는 클라우드 빌드를 사용하여 게임을 UDP로 푸시하는 방법을 설명합니다. Unity 에디터에서 Unity Services 창을 통해 클라우드 빌드를 활성화하십시오.

에디터에서 클라우드 빌드를 사용하여 UDP에 게임 배포

Unity 에디터에서 클라우드 빌드 기능을 통해 UDP에 게임을 배포하려면 UDP 빌드를 업로드한 후 UDP로 푸시해야 합니다.

  1. Cloud Build Services 창에서 이전에 빌드를 업로드하지 않았다면 Upload Build를 선택합니다.
  2. FILE에서 다음을 수행합니다.
    • UDP 빌드의 APK를 선택합니다.
    • 유용한 LABEL을 입력합니다.
    • PLATFORM 필드를 Android로 설정합니다.
  3. UPLOAD를 선택하면 업로드 프로세스가 자동으로 완료됩니다.
  4. Cloud Build Services 창의 빌드 History 타임라인에서 원하는 빌드를 찾은 후 Push to Unity Distribution Portal을 선택합니다.
    1. 푸시할지, 그리고 해당 작업이 완료되는지 확인합니다.

Unity 대시보드를 사용하여 게임을 UDP에 배포

Unity 대시보드에서 클라우드 빌드 기능을 통해 UDP에 게임을 배포하려면 UDP 빌드를 Unity 대시보드에 업로드한 후 UDP로 푸시해야 합니다.

  1. Unity 개발자 대시보드에서 프로젝트의 Cloud Build > History로 이동합니다.
  2. Upload를 선택한 후 APK 파일을 선택합니다.
  3. Platform 필드에서 Android를 선택합니다.
  4. Upload를 선택합니다.
  5. 빌드 옆에 있는 More 메뉴를 선택하여 드롭다운 메뉴를 확장합니다.
  6. Push to Unity Distribution Portal을 선택합니다.

클라우드 빌드를 통한 빌드 및 배포

Unity 팀즈 어드밴스드를 사용하는 경우 빌드를 자동으로 생성할 수 있습니다.

Cloud Build Services 창에서 다음을 단계를 따르십시오.

  1. Manage Build Targets > Add new build target을 선택합니다.
  2. TARGET SETUP 창에서 PLATFORM 필드를 Android로 설정하고 유용한 TARGET LABEL을 입력합니다.
  3. Next: Save를 선택합니다.
  4. Start Cloud Build를 선택한 후 방금 생성한 타겟 빌드를 선택합니다.

Unity 클라우드 빌드 개발자 대시보드를 통해 빌드를 UDP로 직접 푸시합니다(위 참조).

서비스 상호호환성

UDP는 게임이 사용하는 다른 서비스에 어느 스토어에서 게임을 다운로드했는지 알릴 수 있습니다.

이 정보는 Unity 서비스와 타사 또는 자체 서비스에서 다양한 방식으로 사용될 수 있습니다.

예를 들어 Unity 리모트 설정을 통해 정의된 규칙에 따라 게임 설정을 조정할 수 있습니다(예: 게임을 다운로드한 스토어).

이 섹션에서는 다른 서비스가 이러한 정보에 액세스하도록 허용하는 방법을 설명하고 관련 예시를 소개합니다.

동작 방식

플레이어의 기기에서 게임이 처음으로 실행되면 UDP는 게임의 영구 데이터 경로에 udp.json 파일을 만들고 삭제합니다. 이 파일에는 게임을 다운로드한 스토어를 보여주는 udpStore 필드가 있습니다. 해당 정보를 검색해서 가져온 후 원하는 방식으로 활용하십시오.

참고: 이로 인해 게임 매니페스트에 새로운 권한을 추가되지는 않습니다.

udp.json 찾기

udp.json 파일은 다음 위치에 저장됩니다.

Application.PersistentDataPath + '/Unity' + /Application.CloudProjectID + /udp/udp.json

여기에서

  • Application.PersistentDataPath는 게임의 영구 데이터 경로입니다.
  • Application.CloudProjectID는 게임의 Unity 프로젝트 ID입니다.

다음은 udp.json 파일 경로의 예입니다.

path/storage/emulated/0/Android/data/com.mystudio.mygame/files/Unity/c83d2de2-de74-4b75-83fc-ade948bda064/udp/udp.json

여기에서

  • Application.PersistentDataPath= path/storage/emulated/0/Android/data/com.mystudio.mygame
  • Application.CloudProjectID= c83d2de2-de74-4b75-83fc-ade948bda064

udp.json 읽기

udp.json 파일에는 다음 정보가 들어 있습니다.

{"key":"UDP","udpStore":"StoreName","udpClientId":"value_of_udpClientId","CloudProjectId":"value_of_CloudProjectId"}

udpStore 필드에는 게임을 다운로드한 UDP 스토어의 값이 들어 있습니다.

다음은 udp.json 파일의 예입니다.

{“key”:“UDP”,“udpStore”:“SamsungGalaxyStore”,“udpClientId”:“icjaB7wmu_q7AOjrSLH8yw”,“cloudProjectId”:“bc2be074–09f3–450f–8e98-a0f79c9746f7”}

이 예에서 게임은 Samsung Galaxy 스토어에서 다운로드되었습니다.

팁: JSONUtility.FromJsonOverwrite를 사용하여 파일 내용을 텍스트 에셋으로 읽으십시오.

udpStore 값

아래 표에는 UDP에서 사용할 수 있는 스토어에 대해 기대할 수 있는udpStore 값이 나열되어 있습니다.

이 값들은 대소문자를 구분합니다.

스토어(UDP에서의 채널 이름) udpStore 값
UDP 샌드박스(일반 UDP 빌드용) UdpSandbox
ONE Store OneStore
APPTUTTi Apptutti
VIVEPORT Htc
Mi GetApps (Xiaomi) XiaomiStore
Mi Game Center (Xiaomi China) XiaomiStoreCn
HUAWEI AppGallery Huawei
Samsung Galaxy Store SamsungGalaxyStore
QooApp Game Store QooApp
TPAY MOBILE Stores Tpay
Uptodown Uptodown
SHAREit ShareIt
JioGames JioGamesStore

리모트 설정으로 udpStore 사용

Unity 리모트 설정을 사용하면 애플리케이션의 새 버전을 배포하지 않고도 게임 설정을 조정할 수 있습니다. 플레이어가 게임을 실행하면 리모트 설정이 규칙 조건으로 사용되는 컨텍스트 속성을 감지합니다(Unity, 애플리케이션, 사용자, 또는 사용자 정의 기준을 따름). 그런 다음 서비스는 적용되는 규칙에 따라 각 플레이어에 대해 커스터마이즈된 설정을 반환합니다.

udpStore를 규칙 조건의 속성으로 사용하면 게임을 다운로드한 UDP 스토어에 따라 게임 설정을 결정할 수 있습니다.

리모트 설정으로 udpStore를 구현하려면 다음 단계를 따르십시오.

  1. UDP 패키지를 다운로드한 후 설치합니다.
  2. Unity 리모트 설정 패키지를 다운로드한 후 설치합니다. 리모트 설정 문서를 참조하십시오.
  3. AppAttributes 구조체를 만듭니다. 여기에는 최소 하나의 파라미터, 즉 “udpStore”가 있어야 합니다.
    public struct AppAttributes { public string udpStore; }
  4. 게임 코드에서 리모트 설정 ConfigManager.FetchConfigs 호출을 구현합니다.
  5. FetchConfigs를 호출하면 AppAttributes 구조체의 새 인스턴스를 생성하고 다음 위치에서 UDP 스토어 데이터 파일을 읽습니다. Application.PersistentDataPath + ‘/Unity’ + /Application.CloudProjectId + /udp/udp.json JSONUtility.FromJsonOverwrite를 사용하여 파일 내용을 텍스트 에셋으로 읽으십시오.
    { string udpFilePath = System.IO.Path.Combine(Application.persistentDataPath, "Unity", Application.cloudProjectId, "udp", "udp.json"); string udpFileContents = System.IO.File.ReadAllText(udpFilePath); var appAttr = JsonUtility.FromJson<AppAttributes>(udpFileContents); Unity.RemoteConfig.ConfigManager.FetchCompleted += ConfigManager_FetchCompleted; Unity.RemoteConfig.ConfigManager.FetchConfigs(null, appAttr); }
  6. AppAttributes 구조체가 ConfigManager.FetchConfigs에서 사용되는지 확인합니다.
  7. Remote Config 창(Window > Remote Config)을 열고 UDP 스토어에 따라 변경할 파라미터를 만듭니다.
  8. 파라미터가 설정되고 게임 코드에서 계측되면 Remote Config 창에서 각 스토어에 대한 규칙이 만들어집니다.
  9. 각 규칙의 조건에 app.udpStore == “[storeName]”을 입력합니다.
  10. 설정을 활성화하려면 Remote Config 창의 왼쪽 패널에서 규칙 이름 옆에 있는 체크박스를 선택합니다.
  11. 기기에 앱을 빌드하고 규칙이 제대로 적용되었는지 확인한 후 제공합니다.

Unity IAP를 사용하여 UDP용 IAP 아이템 구현

Unity IAP를 사용하여 UDP를 구현하려면 먼저 Unity IAP를 설정하십시오.

참고: UDP 패키지를 사용하는 대신, Unity IAP 버전 1.22.0–1.23.5를 사용하여 UDP를 구현하려는 경우에는 Unity IAP를 통해서만 구현해야 합니다.

Unity IAP는 다음 작업을 자동으로 처리합니다.

  • UDP 초기화
  • 스토어의 IAP 상품 인벤토리 쿼리
  • 상품 구매 요청
  • 구매한 아이템 소비

하지만 게임은 Unity IAP 문서에 따라 Unity IAP의 유사한 기능(예: 초기화, 구매)을 올바르게 사용해야 합니다.

Unity IAP를 사용하여 게임의 인앱 구매를 구현했다면 다음 단계에 따라 Unity IAP로 UDP를 설정하십시오.

IAP 인벤토리 쿼리

Unity IAP 사용(코드 구현)

에디터에 정의된 IAP 상품 페치

queryInventory 메서드에 전달할 IAP 상품을 페치하는 경우 ProductCatalog.LoadDefaultCatalog()를 호출하십시오. 그러면 에디터의 IAP Catalog(Window > Unity IAP > IAP Catalog)에 정의된 IAP 상품이 반환됩니다.

예를 들면 다음과 같습니다.

var catalog = ProductCatalog.LoadDefaultCatalog();

foreach (var product in catalog.allValidProducts)
{
   if (product.allStoreIDs.Count > 0)
   {
       var ids = new IDs();
       foreach (var storeID in product.allStoreIDs)
       {
           ids.Add(storeID.id, storeID.store);
       }
       builder.AddProduct(product.id, product.type, ids);
   }
   else
   {
       builder.AddProduct(product.id, product.type);
   }
}
UDP 콘솔에서 IAP 상품 정보 페치

UDP 콘솔에서 게임의 IAP 카탈로그를 수정하려는 경우 UDP 콘솔에서 IAP 상품 정보를 페치하도록 게임을 준비시키십시오.

queryInventory 메서드에 전달할 IAP 상품을 페치하는 경우 builder.AddProduct를 호출하여 UDP 콘솔에서 특정 IAP 상품을 검색해서 가져오십시오.

builder.AddProduct(product.id, product.type, new IDs{})

통화 포맷이 지정된 상품 가격을 표시하려면 productInfo.Value.Price를 사용하십시오.

UDP 콘솔에서 IAP 카탈로그 페치

UDP 콘솔에서 정의된 모든 IAP 상품을 검색해서 가져오려는 경우에는 IAP 상품 검색 메서드를 호출하지 마십시오. 그러면 게임이 UDP 콘솔에서 전체 IAP 카탈로그를 페치합니다.

참고: UDP 콘솔에서 IAP 상품의 CSV 파일을 업로드하면 IAP 카탈로그를 완전히 덮어씁니다.

Unity IAP 패키지로 IAP 카탈로그 채우기

UDP에 대한 모든 인앱 구매를 IAP 카탈로그에 추가하고 구성합니다.

참고: 게임 클라이언트에서 IAP 카탈로그를 사용하지 않는 경우(예: 게임 서버에서만 IAP 아이템을 유지하는 경우)에도 여전히 UDP 콘솔에서 IAP 카탈로그를 생성해야 합니다.

  1. Unity 에디터에서 Window > Unity IAP > IAP Catalog를 선택합니다.
  2. Add Product를 선택하고 각 IAP 상품에 대한 세부 정보를 입력합니다.
    1. Unity 퍼블리싱 포털 설정에서 IAP 아이템의 가격을 추가합니다.
  3. IAP 상품을 UDP 콘솔에 저장하려면 Sync to UDP를 선택합니다. 생성되는 각 IAP 상품에 대해 이 작업을 수행해야 합니다.

IAP 카탈로그가 올바르게 저장되었는지 확인하려면 추가한 아이템이 UDP 콘솔에 표시되는지 확인하십시오.

UDP 콘솔에서 게임 관리 및 퍼블리싱
UDP 레퍼런스