Cloud Build を使って、以下の方法でゲームを UDP コンソールに展開できます。
ここでは、CloudBuild を使用してゲームを UDP にプッシュ送信する方法について説明します。 Unity エディターで、Unity Services ウィンドウから Cloud Build を有効にします。
Unity エディターの Cloud Build 機能を通してゲームを UDP に展開するには、UDP ビルドをアップロードして UDP にプッシュ送信する必要があります。
Unity Dashboard の Cloud Build 機能を通してゲームを UDP に展開するには、UDP ビルドを Unity Dashboard にアップロードして、そこから UDP にプッシュ送信する必要があります。
Unity Teams Advanced を使用すると、ビルドを自動的に生成できます。
Cloud Build Services ウィンドウで
Manage Build Targets > Add new build target を選択します
1. TARGET SETUP ウィンドウで PLATFORM フィールドを Android に設定し、便利な TARGET LABEL を入力します。
1. Next: Save を選択します。
1. Start Cloud Build を選択してから、作成したターゲットビルドを選択します。
Unity Cloud Build Developer Dashboard を通してビルドを UDP に直接プッシュ送信します (前述を参照)。
UDP は、ゲームで使用されている他のサービスに、ゲームがダウンロードされたストアを通知できます。
この情報は、Unity サービスだけでなく、サードパーティまたは独自のサービスでさまざまな方法で利用できます。
たとえば、Unity Remote Config を使用すると、ゲームのダウンロード元のストアなど、定義したルールに基づいてゲーム設定を調整できます。
このセクションでは、他のサービスがこの情報にアクセスできるようにする方法を説明し、例 を紹介します。
ゲームがプレイヤーのデバイスで最初に起動されると、UDP は udp.json
ファイルを作成してゲームの Persistent Data Path (永続データパス) に置きます。このファイルには、ゲームがダウンロードされたストアを示すフィールド 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 Store からダウンロードされました。
ヒント: JSONUtility.FromJsonOverwrite
を使って、ファイルのコンテンツをテキストアセットとして読み込みます。
以下の表は、UDP で利用可能なストアの udpStore
値のリストです。
これらは、大文字小文字を区別します。
ストア (UDP でのチャンネル名) | udpStore の値 |
---|---|
UDP Sandbox (ジェネリックな 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 Remote Config を使用すると、アプリケーションの新しいバージョンを展開せずにゲーム設定を調整できます。プレイヤーがゲームを起動すると、Remote Config は、ルール条件 (Unity、アプリケーション、ユーザー、自身で定義したカスタム基準に基づく) として使用されるコンテキスト属性を検出します。次に、サービスは、適用されるルールに従って、各プレイヤーのカスタマイズされた設定を返します。
ルール条件の属性として udpStore
を使用すると、ゲームのダウンロード元の UDP ストアに応じてゲーム設定を決定できます。
Remote Config を使用して 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 Catalog (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 コンソールに表示されていることを確認します。