Ren'Py にはアプリ内課金の高級フレームワークがあります。このフレームワークは現在 Apple app ストアと Google play, Amazon ストアからのアンロック形式の購入のみサポートしています。
このフレームワークの使用はかなり単純で、以下の関数から成り立ちます。
ゲーム初期化時に iap.register()
関数を使用して利用可能な課金対象を登録します。
一旦ゲームが開始したら、 iap.has_purchased()
関数で課金対象が課金されたかを確認します。
ユーザーが iap.purchase()
関数や iap.Purchase()
アクションでアイテムを購入出来るようにします。
ユーザーが他のデバイスで購入した課金対象を、 iap.restore()
関数や iap.Restore()
アクションで返品出来るようにしします。
アプリ内課金の提供には、 様々なマーケットに対応して課金対象を設定しなければなりません。
iap.
get_price
(product) linkproduct の価格を指定する文字列を返します。 product の価格が不明、つまり product が購入不能なら None を返します。
iap.
get_store_name
() linkアプリ内課金で使用可能なストアの名前を返します。これは現在 "amazon", "play" (google play), "ios" のうち 1 つを返し、利用可能なストアがなければ None を返します。
iap.
has_purchased
(product) linkユーザーが以前 product を購入していれば True を、そうでなければ False を返します。
iap.
init
() linkiap を初期化します。これは iap.register() を全て呼び出した後かつ他の iap 関数の前で呼び出されるべきです。明示的に呼び出されないと初期化終了時に自動的に呼び出されます。
iap.
is_deferred
(product) linkユーザーが product の購入を要求しても、親や保護者のような第三者による承認が必要ならば True を返します。
iap.
purchase
(product, interact=True) linkこの関数は product の購入をリクエストします。
購入が成功したら True を、そうでなければ False を返します。製品が consumable として登録されていると、その購入分はこの呼び出しが返る前に消費されます。
iap.
register
(product, identifier=None, amazon=None, google=None, ios=None, consumable=False) linkアプリ内課金システムに製品を登録します。
その製品名を指定する名前の高級な文字列です。これは iap.purchase()
や iap.Purchase()
, iap.has_purchased()
に渡される文字列で、この製品を表わします。
製品を内部で識別するために使用する文字列です。一旦製品を表すために使用したら、これは決して変更してはいけません。これらの文字列は一般的に "com.domain.game.product" という形式になります。
None ならデフォルトで product を使用します。
Amazon app ストアで製品を識別するための文字列です。指定されないとデフォルトで identifier になります。
Google ストアで製品を識別するための文字列です。指定されないとデフォルトで identifier になります。
Apple app ストアで製品を識別するための文字列です。指定されないとデフォルトで identifier になります。
consumable purchaseなら True です。現在 consumable purchase は iOS でのみサポートされています。
iap.
restore
(interact=True) linkappストアに アクセスして購入ミスを取り消します。
Trueなら app ストアからの応答を待つ間に renpy.pause が呼び出されます。