클라우드 빌드를 사용하여 다음과 같은 방법으로 UDP 콘솔에 게임을 배포할 수 있습니다.
이 섹션에서는 클라우드 빌드를 사용하여 게임을 UDP로 푸시하는 방법을 설명합니다. Unity 에디터에서 Unity Services 창을 통해 클라우드 빌드를 활성화하십시오.
Unity 에디터에서 클라우드 빌드 기능을 통해 UDP에 게임을 배포하려면 UDP 빌드를 업로드한 후 UDP로 푸시해야 합니다.
Unity 대시보드에서 클라우드 빌드 기능을 통해 UDP에 게임을 배포하려면 UDP 빌드를 Unity 대시보드에 업로드한 후 UDP로 푸시해야 합니다.
Unity 팀즈 어드밴스드를 사용하는 경우 빌드를 자동으로 생성할 수 있습니다.
Cloud Build Services 창에서 다음을 단계를 따르십시오.
Unity 클라우드 빌드 개발자 대시보드를 통해 빌드를 UDP로 직접 푸시합니다(위 참조).
UDP는 게임이 사용하는 다른 서비스에 어느 스토어에서 게임을 다운로드했는지 알릴 수 있습니다.
이 정보는 Unity 서비스와 타사 또는 자체 서비스에서 다양한 방식으로 사용될 수 있습니다.
예를 들어 Unity 리모트 설정을 통해 정의된 규칙에 따라 게임 설정을 조정할 수 있습니다(예: 게임을 다운로드한 스토어).
이 섹션에서는 다른 서비스가 이러한 정보에 액세스하도록 허용하는 방법을 설명하고 관련 예시를 소개합니다.
플레이어의 기기에서 게임이 처음으로 실행되면 UDP는 게임의 영구 데이터 경로에 udp.json
파일을 만들고 삭제합니다. 이 파일에는 게임을 다운로드한 스토어를 보여주는 udpStore
필드가 있습니다. 해당 정보를 검색해서 가져온 후 원하는 방식으로 활용하십시오.
참고: 이로 인해 게임 매니페스트에 새로운 권한을 추가되지는 않습니다.
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
파일에는 다음 정보가 들어 있습니다.
{"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
를 사용하여 파일 내용을 텍스트 에셋으로 읽으십시오.
아래 표에는 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 |
Unity 리모트 설정을 사용하면 애플리케이션의 새 버전을 배포하지 않고도 게임 설정을 조정할 수 있습니다. 플레이어가 게임을 실행하면 리모트 설정이 규칙 조건으로 사용되는 컨텍스트 속성을 감지합니다(Unity, 애플리케이션, 사용자, 또는 사용자 정의 기준을 따름). 그런 다음 서비스는 적용되는 규칙에 따라 각 플레이어에 대해 커스터마이즈된 설정을 반환합니다.
udpStore
를 규칙 조건의 속성으로 사용하면 게임을 다운로드한 UDP 스토어에 따라 게임 설정을 결정할 수 있습니다.
리모트 설정으로 udpStore를 구현하려면 다음 단계를 따르십시오.
public struct AppAttributes
{
public string udpStore;
}
{
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);
}
Unity IAP를 사용하여 UDP를 구현하려면 먼저 Unity IAP를 설정하십시오.
참고: UDP 패키지를 사용하는 대신, Unity IAP 버전 1.22.0–1.23.5를 사용하여 UDP를 구현하려는 경우에는 Unity IAP를 통해서만 구현해야 합니다.
Unity IAP는 다음 작업을 자동으로 처리합니다.
하지만 게임은 Unity IAP 문서에 따라 Unity IAP의 유사한 기능(예: 초기화, 구매)을 올바르게 사용해야 합니다.
Unity IAP를 사용하여 게임의 인앱 구매를 구현했다면 다음 단계에 따라 Unity IAP로 UDP를 설정하십시오.
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 상품 정보를 페치하도록 게임을 준비시키십시오.
queryInventory
메서드에 전달할 IAP 상품을 페치하는 경우 builder.AddProduct를 호출하여 UDP 콘솔에서 특정 IAP 상품을 검색해서 가져오십시오.
builder.AddProduct(product.id, product.type, new IDs{})
통화 포맷이 지정된 상품 가격을 표시하려면 productInfo.Value.Price
를 사용하십시오.
UDP 콘솔에서 정의된 모든 IAP 상품을 검색해서 가져오려는 경우에는 IAP 상품 검색 메서드를 호출하지 마십시오. 그러면 게임이 UDP 콘솔에서 전체 IAP 카탈로그를 페치합니다.
참고: UDP 콘솔에서 IAP 상품의 CSV 파일을 업로드하면 IAP 카탈로그를 완전히 덮어씁니다.
UDP에 대한 모든 인앱 구매를 IAP 카탈로그에 추가하고 구성합니다.
참고: 게임 클라이언트에서 IAP 카탈로그를 사용하지 않는 경우(예: 게임 서버에서만 IAP 아이템을 유지하는 경우)에도 여전히 UDP 콘솔에서 IAP 카탈로그를 생성해야 합니다.
IAP 카탈로그가 올바르게 저장되었는지 확인하려면 추가한 아이템이 UDP 콘솔에 표시되는지 확인하십시오.