View on GitHub

Wills' blog

  • home | github | resume |
  • 手机游戏平台中的消费系统设计(一)

    11 Jun 2014

    缘由

    最近在研究苹果的In-App Purchase和谷歌的In-App Billing方面有一些心得,可以来分享。

    事情的缘由于一个手机游戏平台的搭建,作为平台的话,投入商品并能够购买是必不可少的功能。如果是单一的手机游戏,大可直接采用IAP或者IAB,把商品信息写在程序内,简单的通过客户端和苹果/谷歌的服务之间的通讯完成商品的购买与内容的赋予功能。只需要事先在苹果/谷歌的系统中登陆商品的信息,包括作为商品表示的ID字符串,多少钱以及商品的说明,再在代码中写上成功购买了对于商品之后的动作即可。

    但是作为一个游戏平台必须要考虑很多事情:

    实际上在IAP/IAB的开发者文档里面,是建议内容的发布由服务器来完成的,只是由于服务器本身的开发需要成本,对小且块需求的游戏来说是个巨大的开销。

    这样的平台想起来可能会很容易做,但实际做出来却不是那么的容易。

    试想一下,如果是IAP的方式,通过以下的步骤似乎可以完成这样的事情:

    1. 通过iTunes登录商品信息
    2. App购买完商品之后,发请求到服务器
    3. 服务器完成玩家的内容赋予,并通知App
    4. App收到通知后删除此购买的事务

    但是这样的系统有以下几点做不到:

    1. 服务器严格控制商品的购买(购买期间以及购买数量等等)
    2. 通讯故障之后的恢复工作(比如某段时间通讯中断了,通讯恢复之后怎样继续未完成的工作)

    下面介绍两种设计的方式。

    虚拟货币方式

    做这样的设想:如果从IAP/IAB平台上的购买仅仅局限于虚拟货币,具体游戏中商品的购买必须由虚拟货币的购买来完成。

    那么事情就简单很多,首先IAP/IAB的购入没有必要做时间和数量的限制,应为是游戏的虚拟货币。 具体的商品的严格购买控制只是App和游戏服务器之间的交易,与IAP/IAB已经没有任何关系。这就与一般平台的购入一致,大致的设计思想有下面这些:

    具体的App和服务器之间的序列图大致为以下:

    1

    在这里事务的发放似乎没有必要。在这里写上是因为,大部分公司的财务系统都是一个单独的系统,有公司内部的专用网络访问。服务器与财务系统的联系,财务系统的购买的产生,需要事务。

    在这样的设计中,以下的问题可以简单的避免:

    1. 多用户多个客户端同时登录的时候,是否会打破购买数的限制?不能
    2. 用户是否能够购买超过时间限制的商品?不能

    简评

    作为一个简单的平台来说这样的设计无疑是最为简单方便的设计,但是对于一个大型综合性的平台来说,没有必要强制所有的游戏必须拥有游戏的虚拟货币。于是基于IAP、IAB直接购买商品的需求应运而生。


    [click to comment]