应用内购


在App中,购买是现代跨平台游戏的重要组成部分,允许你在游戏免费的情况下获得 “免费增值” 内容,但某些内容只能通过游戏内部的购买获得。例如,你的益智游戏是免费的,但额外的关卡将花费用户 0.99$。此应用程序模型非常常见,可以使用 GameMaker Studio 2 中的最少工作量进行设置,本手册的这一部分详细介绍了所有可用的函数,以及有关如何在不同平台上进行测试的设置和信息的一些建议。

使用 GameMaker Studio 2 在游戏中设置应用程序内购相对简单,但在开始创建游戏之前,它仍然需要一些目标平台设置知识以及仔细规划,因此如果你刚刚开始使用 GameMaker Studio 2,或者你不确定如何设置每个目标平台的不同商店,则不建议你使用此函数。

在做任何其他事情之前,你必须确保已在目标商店中为你希望支持的每个平台设置购买详细信息,并仔细记下你定义的每个 产品 ID(Product IDs) ,因为这些 ID 字符串是 GameMaker Studio 2 识别每个产品和购买的方式。即使游戏尚未包含应用内购买,大多数商店也会要求你上传基本文件。

注意 GameMaker Studio 2 目前允许每个标题最多 128 个不同的购买选项,除非你使用的是亚马逊商店(适用于Android),它限制购买选项数量为 100。


下面列出了集成在 GameMaker Studio 2 中的函数,以便在不同的目标平台上进行应用程序购买(这些函数可以从游戏内部购买额外的积分、物品、等级和其他内容)。其中许多函数将触发 IAP 异步事件,其中包含一个名为 iap_data 的特殊 ds_map,它将具有一个初始键 “type”,可以查询它以获取已触发的 IAP 事件的类型。一旦你知道它是哪种类型的 IAP 事件,你就可以从映射(map)中获取与事件相关的更多数据。

应用内购函数包括:


你还应该知道 GameMaker Studio 2 不会 在多次游戏中保持活动购买状态(因此如果商店没有成功加载,iap_is_purchase() 是不可靠的)。这意味着你必须自己存储此信息,并在每次启动游戏时再次检索。为此,你可以使用为ds_maps提供的特殊 “安全” 保存和加载函数:


GameMaker Studio 2 不会在多次游戏中保持购买状态,因为我们不适合提供一种安全的方法来验证单个购买是否有效,因此任何自动存储的购买状态都是冒昧的。在大多数平台上,“收据” 数据将通过 iap_purchase_details() 提供,用户可以使用它来验证购买,尽管谷歌 Play 使用的是 “token” 数据。

GameMaker Studio 2 需要 Google Play 公共秘钥进行简单的本地购买验证,你可以检查购买结果返回的 “payload” 数据是否与调用 iap_acquire() 获取的数据相匹配(有关Google 公共秘钥的更多信息,请参阅 Android 游戏选项 中的 打包(Packaging) 部分)。

应用内购可用于 Android、Amazon Fire、iOS 和 macOS 目标平台,YoYo Games 帮助台(以及 Amazon Fire 教程)上有文章可帮助你正确设置每个设置: