游戏SDK 客户端整体架构
前言
从事游戏SDK的开发好几年,包括 Android 端及 iOS 端,做过休闲游戏SDK 也做过重度手游SDK,从对SDK和游戏行业一无所知到现在还算有些了解,踩过很多坑,也辗转过几家不同的游戏公司。想着把自己这些年对 SDK 的认识及开发做一个总结。
一、行业名词介绍
详见:@游戏行业名词介绍
这里只说几个常用的。
-
游戏研发,也叫CP
—— ContentProvider,游戏研发商。制作手游产品的公司或者团队。例如王者荣耀的研发团队:
天美工作室
。 -
游戏发行
商。即代理CP的游戏产品,在部分渠道或者全渠道发行游戏产品的公司或者团队。例如王者荣耀的发行商:
腾讯
。 -
游戏渠道
。拥有游戏和APP 用户,能够进行手游和APP流量分发的公司。例如
华为、小米
等手机厂商自带用户流量。 - SDK——SoftwareDevelopmentKit,软件开发工具包。对于游戏来说,就是指集成了登录、支付、社区、社交分享、数据上报等功能的功能模块。CP 必须将 SDK 接入到的游戏内,通过渠道测试后才能上架。
-
包:也就是iOS 的 .ipa 和 Android 的 .apk。 对包的说法也会区分不同的包,比如:
- 母包:不带渠道SDK的游戏包,不能上架到渠道。
- 渠道包:上架到对应渠道的 .ipa 和 .apk。比如,华为渠道包就是上架到华为的。
- MMP——第三方移动数据统计平台。比如海外的 AppsFlyer,国内的 Talking data。
二、游戏SDK介绍
为什么需要游戏SDK?
-
先看一下游戏是如何从游戏厂商到达玩家手中的,也就是游戏的发布流程?
游戏研发商——接入应用商店/渠道SDK——应用商店/渠道上架游戏——玩家。
根据以上流程,如果没有游戏SDK:
- CP 需要自行接入渠道SDK,分别对接各个渠道,不同渠道SDK的接口都不一样,资源也不一样,CP就需要花大量的时间处理不同的渠道SDK。还有后期的维护,这些都会花费不少人力成本。
- 术业有专攻。CP 开发使用的是游戏引擎,主要开发游戏玩法,对原生客户端的开发不仅不熟悉,对发行的需求也不理解,并不能封装一个符合上架需要的SDK。
退一步来说,如果是封装SDK,游戏研发商也能做。但是,游戏SDK并非封装SDK那么简单,还会涉及以下问题。
-
用户问题
每个产品都应该有自己的用户体系,渠道之所以成为渠道,就是有强大的用户基础。腾讯游戏发行成功的原因之一其实也有它私域流量强大的原因。我们在上架自己的游戏产品时,不同的游戏服账户是无法互通的,这就需要一个用户管理平台管理不同的用户,维护玩家数据。
另一方面,引流就是公司花钱买用户进入游戏,买来的用户如果不做管理就会流失,白白花费市场成本。如果通过一个平台管理用户,公司有自己的账号体系,将渠道用户转化为自有账号体系,在这个平台下不同的游戏用户可以互相引流。而游戏SDK正好充当这个桥梁。
-
广告推广问题
每个产品需要被玩家熟知,除了渠道的流量外,还需要广告推广。这就涉及不同的第三方广告SDK,也可以有自己的广告SDK(这个比较少,一般都是用的第三方)。
-
数据问题
一个产品的好坏都是数据说话,如果没有数据支撑,不知道产品哪里需要调优,哪里是优质内容。这也涉及不同的数据统计SDK及自有数据上报分析。
-
商务问题
渠道有用户基础,合作的游戏厂商数不胜数,并不是拿着一个游戏就可以上架到渠道的应用商店。需要专业的商务资源商谈买量、推广等问题。
综上问题,就需要在发布流程就需要引入一个游戏发行商的角色,而游戏发行商就会打造一个中间件,也就是游戏SDK来作为发行商和研发商的桥梁处理以上问题。
因此最终的发布流程如下:
游戏研发商--游戏发行商——商店/渠道SDK——玩家
综上,也就是解答了这个问题。游戏SDK就是集成了登录(用户)、支付(利润)、社交分享(游戏运营)、广告(市场推广)、数据上报(产品)等连接游戏发行、游戏研发、渠道三方的中间件工具包。
游戏SDK类型也一般会有两种:
1.
聚合SDK
,对外统一封装接口。登录、支付功能都是渠道提供的,账户体系属于渠道的。
2.
渠道SDK
,公司自己开发账号体系,用户是属于公司的。一般作为整个SDK的一个渠道。
三、应该输出一个什么样的游戏SDK?
根据以上介绍,我们根据对输出的目标游戏SDK做一个需求分析:
- 接入不同应用商店渠道SDK,对外接口保持一致,CP 不必关心具体渠道。
- 开发一个自己的账号体系渠道SDK,与应用商店渠道SDK共享用户。
- 接入不同的广告SDK,或者开发自己的广告SDK;
- 接入不同的第三方数据统计平台,上报数据作为数据分析。(有些可能会开发自己的数据统计平台)
- 接入运营等需要的社交分享功能、语音聊天、客服等功能;
- SDK 具备强扩展性,可以随时增加渠道SDK;
- 统一管理不同项目的不同配置。
- 便于测试的demo工程 及接入文档。
- 不同渠道的打包工具。
根据以上的需求分析,输出一个游戏SDK至少需要客户端、服务端、后台。服务端和后台不做讨论。客户端的框架设计见。
四、其他扩展方面
游戏SDK除了以上需求分析的一些必要功能,一般还会存在其他的需求。这里说几个常见的。
1、当用户出现相关网络问题时,我们并没有相关依据查看用户网络情况是否出问题了,这时就需要一个检测网络工具。
2、产品上线后会出现不同的玩家反馈问题,如何追踪问题?这就需要一个日志收集工具。
3、产品上线需要给玩家对应的福利等。
以上就需要在游戏SDK设计框架时充分考虑扩展性。