前言

根据上一篇游戏SDK(一) 客户端整体架构,介绍了游戏SDK 及 游戏SDK的需求分析。根据需求分析,对游戏SDK的设计分为3大块:

  1. 客户端:接口统一,做好逻辑转发和处理。具体渠道具体实现,互不影响。
  2. 服务端:接口统一,做好逻辑转发和处理。具体渠道具体实现,结果统一。
  3. 打包工具:可视化界面,不同渠道的参数配置及平台统一参数配置。打包多任务管理等。

游戏SDK聚合渠道SDK的正常逻辑时序图如下:(以支付为例,登录类似)

根据以上需求分析及一般逻辑时序图,梳理一下游戏SDK的业务场景

  1. 游戏只接入 SDK 接口,不关心具体渠道的实现。不同的渠道是针对国内的,海外基本就是 Google Play 和 Apple 渠道。
  2. SDK的业务主要集中在登录、支付、数据上报。
    1. 登录主要是注册、登录、绑定、切换账号。不同的游戏类型需要的登录流程可能不一样,这也是在设计SDK架构时需要考虑的,比如休闲游戏不需要登录界面,使用游客登录,重度手游一般需要登录界面。海外包含的登录有Facebook登录、Twitter登录、Google 登录等,国内的登录包含手机号登录、微信、QQ 登录,不同渠道选择的登录方式不一样。
    2. 支付逻辑主要包含:渠道支付、补单。海外的支付有:Google 支付、Apple支付,在某些国家也有可能有PayPal等第三方支付方式。国内的还会有支付宝、微信支付。另外还有SDK平台的积分点等平台币支付。
    3. 数据上报逻辑:数据上报的渠道也有可能不同,比如海外的是Facebook、Appsflyer等,国内的可能是 Talkingdata 等。同时有些游戏SDK还会开发自己的数据统计平台。
  3. SDK插件无痛拔插。有时候A游戏需要 SDK 内的A插件功能,比如平台币支付功能,但是在B游戏上线到Google 平台时又不需要此功能,或者需要新增其他功能等等不同的业务场景。
  4. 平台开发的公共辅助功能,比如网络检测、日志上报、激活码兑换码等等,这些属于平台开发的辅助游戏功能,不区分渠道。
  5. 除了以上业务逻辑外,还需要考虑CP快速接入已经快速打不同的渠道包,这时候就需要一个打包工具以及相关配置后台。(这部分暂时先不讨论)
  6. 游戏SDK需要一个测试demo,同一个demo可以切换不同的渠道测试。(其实这里就相当于本地的打包工具)

如果针对不同游戏不同的需求,我们都需要出不同游戏SDK,不仅工作量大,还需要大量人力来维护。CP接入也非常不灵活,因此考虑设计一个通用的游戏SDK架构。

游戏SDK架构设计

大体的项目结构如下:

- sdk-demo  // sdk 测试 demo
- sdk-api   // sdk 接口模块
- sdk-manager    // sdk 业务分发管理
- sdk-channel   // 登录支付渠道- sdk-channel-huawei  // 具体的渠道sdk ,这里仅做示例- sdk-channel-xiaomi.... // 其他- sdk-channel-googleplay  // 公司自行开发的Google play渠道sdk 也放在这一层- sdk-channel-guoneiguanwang    // 公司自行开发的国内官网渠道sdk 也放在这一层
- sdk-data    // sdk数据上报- sdk-data-appsflyer   // AF 数据上报 ,这里仅做示例....// 其他
- sdk-plugin   // 游戏sdk插件- sdk-plugin-yuyin   // 语音插件,这里仅做示例...    // 其他
- sdk-core // 游戏SDK公共业务
- sdk-common // 基础库
- buildSrc   // 一些打包编译脚本
- doc  // 文档
...  // 其他分类看项目需要

游戏SDK架构介绍:

游戏SDK项目整体采用模块化开发。(其实可以使用组件化开发,但是做好打包脚本就没有必要使用组件化开。)

  1. API层: CP只需要接入这一层,不需要关注其他的业务及渠道。这一层定义接口,包括初始化、登录、支付、其他接口、环境切换等。
  2. 业务分发层: 在这一层做渠道分发管理,当CP调用到接口时,如果通过配置文件分发到不同的渠道实现。当渠道有返回结果时,在该层统一返回接口层。游戏数据上报的平台有很多,国内与海外也不一样,不同的项目选择上报的数据平台也不一致,比如A游戏上报到Facebook、firebase,B游戏上报到 talkingdata、appsflyer,如何分发也在这里处理。
  3. 渠道业务层: 这里主要是不同渠道的具体实现,包括:初始化、登录、支付、数据上报、绑定账号、切换账号、退出等等接口。
    1. 对于国内的各个渠道集成渠道SDK即可,例如华为渠道,登录接口集成华为SDK的登录接口即可。
    2. 对于海外Google play 渠道:一般是由公司开发封装成一个渠道SDK,包括功能有登录(公司平台账号登录、第三方登录比如Facebook、Twitter的登录等),支付(Google pay),绑定账号、登出账号、退出游戏,权限申请等。这个公司自行开发的渠道SDK后面可以单独开一篇说明。
    3. 对于国内官网渠道:一般是指公司自行开发封装的一个渠道SDK,将APK放到公司官网上,供玩家下载。包括功能有登录(公司平台账号登录、第三方登录比如qq登录、微信的登录等),支付(支付宝、微信支付 ),绑定账号、登出账号、退出游戏,权限申请、协议弹窗等。
  4. 数据业务层: 聚合不同的数据上报平台SDK,比如集成FB、firebase等。如果公司有自己的数据统计平台,在这一层作为一个数据统计平台开发。
  5. 公共业务层: 激活码功能、用户自动补单功能等这些不是渠道特有功能如果在渠道实现,不同的渠道就需要实现多遍,这显然不合理。再者,作为一个游戏SDK,会有游戏SDK的平台,平台如何管理渠道用户及管理用户的支付等相关信息,也需要在渠道登录之后,统一转换为游戏SDK平台的用户,这个操作是统一的,公共业务实现。
  6. SDK插件层: 不同的游戏项目需要的功能不一样,比如网络检测插件检测用户手机网络是否通畅对于重度手游来说比较必要,但是对于休闲游戏就不必了。作为插件可以由不同项目各自选择。
  7. 基础库: 共工具类,包括网络工具、文件工具等。这个工具模块和公共业务模块不一样,这个模块的工具类和业务无关,可以放到任何项目使用。公共业务模块也会有工具类,但是这些工具类和业务相关。另外,在这里的工具类,有UI的和没有UI的建议分开处理,方便后续剥离。
  8. 文档: 做游戏SDK的,文档是必不可上的,除了一般的开发文档介绍需求、技术实现原理外,还需要一份简洁易懂的接入文档提供给CP。

以上对游戏SDK架构设计作了说明和介绍,代码如何实现且看下回分析。

游戏SDK(二)框架设计相关推荐

  1. unity之游戏UI界面框架设计实战学习(一)

    游戏UI界面框架设计实战精讲视频课程 配合上博客 刘老师讲Unity 刚开始接触UI界面. 觉得讲得非常好. 做一下笔记. 课程总体分为七大部分: 一: UI框架设计理念 整体简单介绍即将带领大家开发 ...

  2. 视频教程-游戏UI界面框架设计系列视频课程-Unity3D

    游戏UI界面框架设计系列视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件架构设计理论. ...

  3. 分享:游戏新手引导程序框架设计3要点

    新手引导确实是个麻烦事,逻辑杂乱,而且跟界面的逻辑常常交叉在一块,弄的不好的话代码里到处都是if else,保存各种临时状态变量.但这里面其实也是有规律可循的,不说完美解决了所有问题,但至少可以提供一 ...

  4. 视频教程-热更新框架设计之热更流程与热补丁视频课程-Unity3D

    热更新框架设计之热更流程与热补丁视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件架构设 ...

  5. 视频教程-热更新框架设计之客户端热更框架(中部)视频课程-Unity3D

    热更新框架设计之客户端热更框架(中部)视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件 ...

  6. 视频教程-Unity客户端框架设计PureMVC篇视频课程(上)-Unity3D

    Unity客户端框架设计PureMVC篇视频课程(上) 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过 ...

  7. 视频教程-AssetBundle框架设计_框架篇视频课程-Unity3D

    AssetBundle框架设计_框架篇视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件 ...

  8. 视频教程-Unity客户端框架设计PureMVC篇视频课程(下)-Unity3D

    Unity客户端框架设计PureMVC篇视频课程(下) 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过 ...

  9. Android源码分析(三)-----系统框架设计思想

    一 : 术在内而道在外 Android系统的精髓在源码之外,而不在源码之内,代码只是一种实现人类思想的工具,仅此而已...... 近来发现很多关于Android文章都是以源码的方向入手分析Androi ...

最新文章

  1. 心酸科研路:3年前CVPR论文,仅被引用11次,如今成就黑洞照片!
  2. Qt动画框架The Animation Framework
  3. pandas模块学习笔记2--基本功能
  4. MySQL 数据库常用命令—insert delete update select
  5. clamp mnn不支持
  6. 指针:调用自定义排序函数sort,对输入的n个数进行从小到大输出。
  7. mysql 整个数据库_mysql 整个数据库
  8. LVS负载均衡(3)——LVS工作模式与工作原理
  9. 实战HCNA1:华为设备快速记忆生成树的角色及选举规则,实施基本的VLAN间路由和基础的VRRP协议...
  10. java 异步 阻塞io_非阻塞IO与异步IO以及Java实现
  11. 自定义表单提交后返回上一页修改
  12. python import math什么意思_python中math.ceil什么意思
  13. 指数函数的计算机语言,怎么使用C语言求幂函数和指数函数
  14. 中西文化交流互融:500年老字号隆庆祥“奏响”2022年
  15. iOS App托管和分发搭建
  16. 达梦数据库安全管理与体系
  17. Tik Tok小店:英国tiktok小店怎么核对结算
  18. 京东“毕业”下的众生相:房贷、二胎,这失业后的日子怎么办?
  19. 对自动变速器的控制器建模
  20. 1095: 统计元音(函数专题)

热门文章

  1. RapidMiner 生成分析
  2. 11.JVMGC基础
  3. 含文档+PPT+源码等]精品基于SpringCloud实现的商品服务系统-微服务毕业设计项目源码-分布式毕设项目[包运行成功]
  4. moviepy视频剪辑总结学习笔记
  5. CG-CTF web刷题记录
  6. 让ElementUI Message消息提示每次只弹出一次
  7. GSAP动画库创建滚动效果,以及一些CSS属性小知识
  8. 互动媒体技术——创意编程
  9. nginx解决跨域问题
  10. 如何解决电脑软件页面模糊字体发虚问题