游戏SDK(一) 客户端整体架构

  • Post author:
  • Post category:其他




游戏SDK 客户端整体架构



前言

从事游戏SDK的开发好几年,包括 Android 端及 iOS 端,做过休闲游戏SDK 也做过重度手游SDK,从对SDK和游戏行业一无所知到现在还算有些了解,踩过很多坑,也辗转过几家不同的游戏公司。想着把自己这些年对 SDK 的认识及开发做一个总结。



一、行业名词介绍

详见:@游戏行业名词介绍

这里只说几个常用的。


  1. 游戏研发,也叫CP

    —— ContentProvider,游戏研发商。制作手游产品的公司或者团队。例如王者荣耀的研发团队:

    天美工作室


  2. 游戏发行

    商。即代理CP的游戏产品,在部分渠道或者全渠道发行游戏产品的公司或者团队。例如王者荣耀的发行商:

    腾讯


  3. 游戏渠道

    。拥有游戏和APP 用户,能够进行手游和APP流量分发的公司。例如

    华为、小米

    等手机厂商自带用户流量。
  4. SDK——SoftwareDevelopmentKit,软件开发工具包。对于游戏来说,就是指集成了登录、支付、社区、社交分享、数据上报等功能的功能模块。CP 必须将 SDK 接入到的游戏内,通过渠道测试后才能上架。
  5. 包:也就是iOS 的 .ipa 和 Android 的 .apk。 对包的说法也会区分不同的包,比如:

    1. 母包:不带渠道SDK的游戏包,不能上架到渠道。
    2. 渠道包:上架到对应渠道的 .ipa 和 .apk。比如,华为渠道包就是上架到华为的。
  6. MMP——第三方移动数据统计平台。比如海外的 AppsFlyer,国内的 Talking data。



二、游戏SDK介绍

为什么需要游戏SDK?

  1. 先看一下游戏是如何从游戏厂商到达玩家手中的,也就是游戏的发布流程?

    游戏研发商——接入应用商店/渠道SDK——应用商店/渠道上架游戏——玩家。
    

    根据以上流程,如果没有游戏SDK:

    1. CP 需要自行接入渠道SDK,分别对接各个渠道,不同渠道SDK的接口都不一样,资源也不一样,CP就需要花大量的时间处理不同的渠道SDK。还有后期的维护,这些都会花费不少人力成本。
    2. 术业有专攻。CP 开发使用的是游戏引擎,主要开发游戏玩法,对原生客户端的开发不仅不熟悉,对发行的需求也不理解,并不能封装一个符合上架需要的SDK。

    退一步来说,如果是封装SDK,游戏研发商也能做。但是,游戏SDK并非封装SDK那么简单,还会涉及以下问题。

  2. 用户问题

    每个产品都应该有自己的用户体系,渠道之所以成为渠道,就是有强大的用户基础。腾讯游戏发行成功的原因之一其实也有它私域流量强大的原因。我们在上架自己的游戏产品时,不同的游戏服账户是无法互通的,这就需要一个用户管理平台管理不同的用户,维护玩家数据。

    另一方面,引流就是公司花钱买用户进入游戏,买来的用户如果不做管理就会流失,白白花费市场成本。如果通过一个平台管理用户,公司有自己的账号体系,将渠道用户转化为自有账号体系,在这个平台下不同的游戏用户可以互相引流。而游戏SDK正好充当这个桥梁。

  3. 广告推广问题

    每个产品需要被玩家熟知,除了渠道的流量外,还需要广告推广。这就涉及不同的第三方广告SDK,也可以有自己的广告SDK(这个比较少,一般都是用的第三方)。

  4. 数据问题

    一个产品的好坏都是数据说话,如果没有数据支撑,不知道产品哪里需要调优,哪里是优质内容。这也涉及不同的数据统计SDK及自有数据上报分析。

  5. 商务问题

    渠道有用户基础,合作的游戏厂商数不胜数,并不是拿着一个游戏就可以上架到渠道的应用商店。需要专业的商务资源商谈买量、推广等问题。

综上问题,就需要在发布流程就需要引入一个游戏发行商的角色,而游戏发行商就会打造一个中间件,也就是游戏SDK来作为发行商和研发商的桥梁处理以上问题。

因此最终的发布流程如下:

游戏研发商--游戏发行商——商店/渠道SDK——玩家

综上,也就是解答了这个问题。游戏SDK就是集成了登录(用户)、支付(利润)、社交分享(游戏运营)、广告(市场推广)、数据上报(产品)等连接游戏发行、游戏研发、渠道三方的中间件工具包。

游戏SDK类型也一般会有两种:

1.

聚合SDK

,对外统一封装接口。登录、支付功能都是渠道提供的,账户体系属于渠道的。

2.

渠道SDK

,公司自己开发账号体系,用户是属于公司的。一般作为整个SDK的一个渠道。



三、应该输出一个什么样的游戏SDK?

根据以上介绍,我们根据对输出的目标游戏SDK做一个需求分析:

  1. 接入不同应用商店渠道SDK,对外接口保持一致,CP 不必关心具体渠道。
  2. 开发一个自己的账号体系渠道SDK,与应用商店渠道SDK共享用户。
  3. 接入不同的广告SDK,或者开发自己的广告SDK;
  4. 接入不同的第三方数据统计平台,上报数据作为数据分析。(有些可能会开发自己的数据统计平台)
  5. 接入运营等需要的社交分享功能、语音聊天、客服等功能;
  6. SDK 具备强扩展性,可以随时增加渠道SDK;
  7. 统一管理不同项目的不同配置。
  8. 便于测试的demo工程 及接入文档。
  9. 不同渠道的打包工具。

根据以上的需求分析,输出一个游戏SDK至少需要客户端、服务端、后台。服务端和后台不做讨论。客户端的框架设计见。



四、其他扩展方面

游戏SDK除了以上需求分析的一些必要功能,一般还会存在其他的需求。这里说几个常见的。

1、当用户出现相关网络问题时,我们并没有相关依据查看用户网络情况是否出问题了,这时就需要一个检测网络工具。

2、产品上线后会出现不同的玩家反馈问题,如何追踪问题?这就需要一个日志收集工具。

3、产品上线需要给玩家对应的福利等。

以上就需要在游戏SDK设计框架时充分考虑扩展性。



版权声明:本文为MarinaTsang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。