游戏SDK(二)框架设计

news2024/11/15 13:52:16

前言

根据上一篇游戏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架构设计作了说明和介绍,代码如何实现且看下回分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【高并发】- 生产级系统搭建 - 4

前言 关于高并发系统中,当前比较热门的还是属于“秒杀”系统,前面章节在整理了“秒杀”系统的相关设计概念后,本章节,来讲解扣减库存相关的业务逻辑。 1 库存的那些事 一般电商网站中,购买流程一般都是这样的&#xff…

多线程之Callable接口、ReentrantLock、信号量 Semaphore以及CountDownLatch

目录:一、Callable接口Callable的用法小结二、ReentrantLockReentrantLock 的用法ReentrantLock 和 synchronized 的区别?为什么有了 synchronized 还需要 juc(java.util.concurrent) 下的 lock?三、信号量 Semaphore如何理解信号量&#xff…

Python接口测试实战4(下) - 框架完善:用例基类,用例标签,重新运行上次失败用例

本节内容使用用例基类自定义TestSuitecollect-only的实现testlist的实现用例tags的实现rerun-fails的实现命令行参数的使用更简单的用例编写使用用例基类因为每条用例都需要从excel中读取数据,解析数据,发送请求,断言响应结果,我们…

阿里云ECS学习笔记1

ECS:弹性计算服务。CPU可以热插、内存可变大变小、硬盘可以增加~ 注册: 在企业中,应该以企业的身份进行注册,而不是以个人身份进行注册。 手机号:行政部门专门管理注册的账号资源的,而不使用个人或者老板…

【可解释性机器学习】解释基于XGBoost对泰坦尼克号数据集的预测过程和结果

解释基于XGBoost对泰坦尼克号数据集的预测过程和结果1. 训练数据2. 简单的 XGBoost 分类器3. 解释重量4. 解释预测5. 添加文本特性参考资料本文介绍如何分析XGBoost分类器的预测( eli5也支持 XGBoost和大多数 scikit-learn树集成的回归)。 我们将使用 Ti…

【数据结构】8.5 归并排序

文章目录相邻两个有序子序列的归并归并排序算法归并排序算法分析基本思想 将两个或两个以上的有序子序列归并为一个有序序列。在内部排序中,通常采用的是2-路归并排序。 即:将两个位置相邻的有序子序列 R[l…m] 和 R[m1…n] 归并为一个有序序列 R[l…n]…

1个寒假能学会多少网络安全技能?

现在可以看到很多标题都声称三个月内就可以转行网络安全领域,并且成为月入15K的网络工程师。那么,这个寒假的时间能学多少网络安全知识?是否能入门网络安全工程师呢? 答案是肯定的。 虽然网络完全知识是一门广泛的学科&#xff…

在线支付系列【9】微信支付之申请微信公众号

有道无术,术尚可求,有术无道,止于术。 文章目录前言申请微信公众号前言 由于微信支付的产品体系全部搭载于微信的社交体系之上,所以直连商户或服务商接入微信支付之前,都需要有一个微信社交载体,该载体对应…

天啦撸~ChatGPT通过国际软件测试工程师(ISTQB)认证了~

天啦撸!目前最火的AI应用ChatGPT通过ISTQB认证了~ 近期,国外的一位工程师,放出了他用ChatGPT通过认证的相关信息。 ChatGPT相信大家都知道是什么了,ISTQB相信很多测试小伙伴也不陌生,而且很多考证的小伙伴也对此梦寐以…

Linux之网络性能测试工具netperf实践

一、netperf简介 Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/rep…

公司通知要大裁员,hr太强势,和所有人吵起来,老板见势不妙,不得不答应大家要求,把HR一起裁掉了!...

在裁员中,hr一般都会代表老板的利益和员工对抗,但如果hr和员工闹翻了,老板会维护hr吗?一位网友说:一上班就收到消息要裁员,立马让报上名单面谈,锁电脑关权限。后面那些人面谈的时候吵起来了&…

OpenAI Chatgpt注册及使用教程

零、什么是chatgpt?​ 1、简介 ChatGPT(Chat Generative Pre-trained Transformer)是OpenAI于 2022 年 11 月推出的聊天机器人。它建立在 OpenAI 的GPT-3大型语言模型家族之上,并经过微调(一种迁移学习的方法)…

双点双向的ISIS与OSPF、OSPF与OSPF、ISIS与ISIS环境以路由策略解决(1tag、2tag、4tag介绍与配置)

3.1.1 双点双向的ISIS与OSPF、OSPF与OSPF、ISIS与ISIS环境以路由策略解决(1tag、2tag、4tag介绍与配置) OSPF与ISIS双点双向 次优的产生与解决: 由于OSPF引入外部路由之后其优先级为150,再由ASBR进行双向引入之后。 原先OSPF外部…

闲鱼自动化软件——筛选/发送系统 V20已经测试完毕

做程序,就是不断地改,不断地优化。当改动达到一定程序,已经和前面形成断代,程序的升级时刻便到了。V20做了哪些更改或优化。1。优化抓取:在抓取环境优化参数,使抓取更顺滑,抓取数据效果上更准确…

智能家居创意DIY-Homekit智能灯

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时,它们可以通过声控、触控、红外等方式进行控制,或者带有调光开关,让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块,可与手机、家庭智能助手、或其他智能…

若依-excel预览功能实现

实现效果及源码 实现效果如下图所示: 实现思路: 1.动态表格:定义表头数组,表格遍历表头生成表格列 2.读取excel文件内容,封装表头,绑定表格数据 代码修改 首先参考若依官网,先实现excel导入功…

C++基础——C++ 字符串

C基础——C 字符串C 字符串C 风格字符串C 中的 String 类C 字符串 C 提供了以下两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 ‘…

126、【回溯算法】leetcode ——332. 重新安排行程:回溯算法(C++版本)

题目描述 原题链接:332. 重新安排行程 解题思路 本题要解决的问题: 需要构建起始与目的机场的映射关系;每次选择目的机场时,需要选择当前最小字母顺序的机场;从“JFK”之后依次飞往,并且可能会有多条路径…

58同城AI Lab在WeNet中开源Efficient Conformer模型

2022年8月,58同城TEG-AI Lab语音技术团队完成了WeNet端到端语音识别的大规模落地,替换了此前基于Kaldi的系统,并针对业务需求对识别效果和推理速度展开优化,取得了优异的效果,当前录音文件识别引擎处理语音时长达1000万…

非标设备ERP管理系统可以帮助企业解决哪些管理难题?

多品种、小批量、交货周期短、非标准化生产是大多数非标设备制造企业共同的特性,这就要求非标设备制造企业应具备足够的经营、技术、生产和管理力量,否则就会顾此失彼,产品质量难以得到保证。非标设备制造企业常见的管理难题(1&am…