# Economy のリソースの概要

> Understand the different types of resources available in Economy including currencies, inventory items, and purchases.

Economy サービスが機能すると、さまざまなゲーム内単位を作成して、経済システムを定義することができます。ゲームに追加する単位のそれぞれのタイプはリソースと呼ばれます。Economy には、以下のビルトイン設定リソースタイプがあります。

* [通貨](#currency)
* [インベントリアイテム](#inventory-item)
* [仮想購入](#virtual-purchase)
* [リアルマネーでの購入](#real-money-purchase)

さらに、各リソースタイプは [カスタムデータ](./custom-data.md) を保持できます。

> **Note:**
>
> 数値入力を必要とするすべてのフィールド (例えば、数量や残高) には 15 桁の制限があります (整数のみ)。

## 通貨##currency

Economy の通貨では、ゲーム内に存在するゲーム内通貨を定義します。通貨を定義するときに、初期残高 (通貨の初期化時にプレイヤーが受け取る金額) と、最大通貨残高 (プレイヤーが所持できる通貨の金額の上限) を設定するオプションがあります。Economy では、定義済みの通貨ごとに、各プレイヤーアカウントの残高を保存します。残高はゲームで管理されます。

Economy によってプレイヤーごとに通貨が初期化されるのは、その通貨の最初の操作の際です。これには、プレイヤーが通貨システムをすでに操作した後で使用可能になった通貨が含まれます。

例えば、あるプレイヤーがゲーム内通貨 Coins でゲームをプレイしているときに、Gems 通貨を初期残高 10 と設定してゲームの新バージョンに追加するとします。Gems が使用可能になってからそのプレイヤーが初めて通貨を扱う際に、そのプレイヤーの Gems の残高 10 が Economy によって作成されます。Coins には影響ありません。値ゼロを入力すると、プレイヤーごとに通貨が初期化されません。

通貨の最大残高を定義できます。これは、任意のプレイヤーがその通貨をシステムで保持できる最大残高です。最大値を超えるように残高を増やそうとすると、ゲームの API でエラーが返されることがあります。通貨の上限が必要ない場合は、最大値を削除します。つまりゼロを入力します。

## インベントリアイテム##inventory-item

インベントリアイテムは、プレイヤーがゲーム内で所有できるオブジェクトです。リソースについてプロパティを設定する必要はありませんが、いつでも [カスタムデータ](./custom-data.md) を追加できます。

SDK を使用するか、購入 (仮想またはリアルマネー) の一環として、インベントリアイテムをプレイヤーに関連付けることができます。プレイヤーに関連付けられているインベントリアイテムのインスタンスは、独自のインスタンスデータを保持できます。[プレイヤーデータ](./player-data.md) を参照してください。

## 仮想購入##virtual-purchase

仮想購入は、ショップ機能または取引機能の実装に使用されるトランザクションのリソースです。仮想購入によって、プレイヤーが、リアルマネーではなく、ゲーム内通貨残高またはすでにインベントリにあるアイテムを使用して、事前定義済のゲーム内通貨またはインベントリアイテムを購入できます。

仮想購入のユースケースには以下があります。

* ゲーム内ショップ
* インベントリアイテムの交換
* インベントリアイテムとゲーム内通貨の交換
* 通貨のタイプ間の換金 (例えば、ゴールドコイン 10 をジェム 1 と交換)

> **Tip:**
>
> 仮想購入はコストとゲーム内報酬で構成されますが、いずれのコンポーネントの定義も必須ではありません。仮想購入の定義方法によっては、コストもゲーム内報酬も含まれない場合があります。
>
> 例:
>
> * コストなしの購入が発生する状況は、プレイヤーにギフトとしてリソースを提供する場合です。
> * ゲーム内報酬なしの購入が発生する状況は、プレイヤーにリソースを失わせたくない場合です。

## リアルマネーでの購入##real-money-purchase

リアルマネーでの購入は、プレイヤーが、アプリストア経由でリアルマネーを使用して、ゲーム内通貨またはアイテムを購入できるトランザクションのリソースです。リアルマネーでの購入のユースケースには以下があります。

* オンラインストアフロントからのアイテムまたはアイテムセットの購入
* リアルマネーを使用したゲーム内通貨の購入

### アプリ内課金 (IAP) のインテグレーション##in-app-purchase-integration

ゲームにリアルマネートランザクションを完全に統合するには、ゲームの Economy で購入を作成する必要があります。これで、IAP の Economy へのインテグレーションにより以下が実現します。

* 関連するベンダー API を使用して各購入を検証
* 通貨とゲーム内報酬をプレイヤーのアカウントに確実に適用
* 購入のレシートを検証

ただし、開発者は引き続きストアとの接続をサポートする必要があります。推奨する有効な事例としては、[IAP プラグイン](https://docs.unity3d.com/Packages/com.unity.purchasing@latest) を使用してこのインテグレーションを実行してください。

IAP プラグインと Economy は、購入 (プレイヤーによるリアルマネーでのリソース購入が必須) を作成する際に 2 つの異なる役割を果たします。Economy は、購入のレシートの検証を実行し、リソースをプレイヤーに与えます。一方、IAP プラグインは、ストアの初期化のためにゲームをストアに統合し、レシートを収集します。

### ストアの設定##configuring-the-store

アイテムを授受してアプリ内課金を確認するように Economy サービスを設定する前に、いくつかの製品を Apple App Store と Google Play ストアの両方に追加する必要があります (どこでゲームの提供を予定しているかによって異なります)。

両方のストアで製品 ID の設定を行う必要があります。その後、リアルマネーでの購入の設定で同じ製品 ID を使用できます。2 つのストアで行うステップは異なるため、詳しい設定手順についてはそれぞれのドキュメントをさんしょうしてください。

Google Play ストア設定では、追加の [IAP 設定](./add-real-money-purchase.md#configure-the-google-play-store-with-iap) が必要です。

### Unity IAP プラグインのインテグレーションとレシート検証##unity-iap-plugin-integration-and-receipt-validation

Economy は [Unity IAP](https://docs.unity3d.com/Packages/com.unity.purchasing@latest) プラグインからレシートデータを受け取ると、そのレシートデータを使用して該当するストアの `Redeem` 関数 (例えば `redeemAppleAppStore` および `redeemGooglePlayStore`) を呼び出します。Economy の呼び出しが、すべての検証を実行し、リアルマネーでの購入の設定に応じて、通貨残高またはインベントリアイテムインスタンスをゲーム内報酬としてプレイヤーに与えます。

## その他のリソース##additional-resources

* [通貨をゲームに加える](./add-currency.md)
* [インベントリアイテムをゲームに加える](./add-inventory-item.md)
* [仮想購入をゲームに加える](./add-virtual-purchase.md)
* [リアルマネーでの購入をゲームに加える](./add-real-money-purchase.md) (IAP 設定を含む)
* [カスタムデータ](./custom-data.md)
* [プレイヤーデータ](./player-data.md)
* [Unity IAP](https://docs.unity3d.com/Packages/com.unity.purchasing@latest)
