TypeSDK总体设计思路和架构
引言:本文旨在提供读者制作一个自己的聚合SDK的思路,抛砖引玉,让更多的读者对聚合SDK有好的理解。
这是最好的时代,这是最坏的时代,这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;这是希望之春,这是失望之冬;人们面前有着各样事物,人们面前一无所有;人们正在直登天堂;人们正在直下地狱。——《双城记》
双城记的开头,正是现在手游行业的一种写照,充满着希望的行业,也伴随着混沌的行业。随着手游市场的蓬勃发展,不论从研发游戏,运营游戏,还是到发行游戏,维护相关的平台,整个行业都在不断的壮大。人上一百形形色色,游戏上一百,色色行行,渠道上一百,感叹活久见。
正是因为行业规模的庞大且新兴,很多事物并没有统一的业界标准。在任何一款游戏,要最终推到用户手上,不可避免的需要和各大渠道打交道。无论你是独立发行,还是联合运营,或多或少,会和App Store,Google play,国内各大发行渠道,阿里游戏,应用宝等等之类的打交道。而和他们打交道最直接的交互,就是需要接入相对应的sdk模块。
众多渠道的sdk良莠不齐,作为游戏开发商的cp,尤其是众多中小cp,第一次接入几家甚至几十家的渠道sdk已经需要花费巨额大的时间和人力成本,而当渠道sdk更新,需要将这些sdk再次接入到自己游戏中,又或者说,游戏发生了更新,需要重新的将这些sdk接入到自己游戏中时,则又要再次耗费巨大的时间和人力成本。聚合sdk正是基于这种情况下,才会被提出的概念。我们希望的,只是一个简单粗暴的,可以快速接入,没啥技术经验的人也能使用的一键式自动打包工具,只需要传一个工程文件,就可以直接出渠道包。
那么,我们就长话短说,我们来看看,我们要实现这套聚合的sdk,需要做哪些事情。
主要需求:
首先,我们需要明确想要做成的东西是个怎么样产品
1.游戏客户端和游戏服务端,只需要关注游戏本身内容,无需关注不同渠道的sdk差异性,降低渠道sdk和游戏客户端的耦合性
2.公司应用必须要支持多个项目的统一管理,但不能有集中式单点的风险,数据需要分离和整合不同的表现
3.公司发展后各种部门的交互流程和人员成本,让非技术的运营人员也可以打包,并且使用流程管理来进行出包版本管控
4.该聚合sdk必须要有扩展性,能应对日后新增的各种其他类型sdk。
主要模块:
针对这些需求,我们将产品分割为以下几个大模块。
1.用作客户端接入部分的统一框架 SDK_Client
2.用作服务端统一的逻辑转发和处理中心SDK_Server
3.用作打包功能的逻辑和多线程的任务调度SDK_Package
4.用户可视化操作界面和功能配置界面SDK_Manager
这四大模块,是我们最终的目标,一键式傻瓜化打包工具的组成。让用户只要传一个游戏项目,就能直接打出指定的渠道包。
主要的关系图:
接下来我们来看看主要的几个关系图
我们看看 packager的主要工作原理
1.取得相关游戏的配置文件
2. 取得指定渠道的配置文件
3.利用打包脚本,合成渠道包
4.提供渠道包的下载链接
manager和package组成客户端打包工具,manager负责管理和配置,package负责编译,关系图:如下
1.用户通过manager,上传一个原始的游戏
2.manager根据用户操作,找到相应的渠道SDK,渠道参数
3.manager分配给packager组打包的任务
4.packager 组找到空闲的packager节点,将该任务指定到具体的pakcager
5.选中的packager根据接收到的任务以及参数,打出指定渠道包
sdk的client和server与游戏客户端和服务端的交互架构
可以看到相对的结构图如上
1. 游戏渠道包,包含了游戏客户端以及聚合sdk客户端,渠道sdk三部分
2. 游戏客户端,将聚合sdk客户端发送过的sdk数据转发给游戏服务端
3. 游戏服务端,将游戏客户端发送的sdk数据转发给聚合sdk服务端
4. 聚合sdk服务端和渠道sdk服务端进行逻辑交互,以及相关的数据有效性验证,验证通过后,发回给游戏服务端正确的数据结果
5. 游戏服务端根据聚合sdk服务端返回的数据结果,处理游戏内的逻辑
6. 游戏客户端,将游戏服务端返回的经过验证后的sdk数据结果转发给聚合sdk客户端
以上所有,是我们对一套聚合sdk的总体架构以及构思的分析。整套我们最终目标要做成的一键式傻瓜化打包工具,是需要一步一个脚印,积少成多堆积出来的。但是有了明确的思路和方向,相信众读者会对聚合sdk不再陌生,也能更好的使用聚合sdk。
聚合sdk的其中每一个模块的具体实现,需要注意点,我们会在日后慢慢分析。
这个项目已开源,大家有兴趣可以自己研究或者参照项目编写自己的聚合SDK
项目地址:https://code.csdn.net/typesdk_code
项目地址:https://github.com/typesdk
TypeSDK总体设计思路和架构的更多相关文章
- TYPESDK手游聚合SDK服务端设计思路与架构之一:应用场景分析
TYPESDK 服务端设计思路与架构之一:应用场景分析 作为一个渠道SDK统一接入框架,TYPESDK从一开始,所面对的需求场景就是多款游戏,通过一个统一的SDK服务端,能够同时接入几十个甚至几百个各 ...
- TYPESDK手游聚合SDK服务端设计思路与架构之二:服务端设计
在前一篇文中,我们对一个聚合SDK服务端所需要实现的功能作了简单的分析.通过两个主要场景的功能流程图,我们可以看到,作为多款游戏要适配多个渠道的统一请求转发中心,TYPESDK服务端主要需要实现的功能 ...
- TYPESDK手游聚合SDK服务端设计思路与架构之四:流程优化之信息安全与订单校验
有了前文几个步骤的分析和设计,TYPESDK的信息交互流程已经可以正常工作了,但是,这个流程还没有考虑到支付这样的过程中,至关重要的信息安全问题. 在整个交互过程中,游戏服务端,SDK服务端,渠道服务 ...
- TYPESDK手游聚合SDK服务端设计思路与架构之三:流程优化之订单保存与通知
经过前两篇文字的分析与设计,我们已经可以搭建出一个能够支持多游戏多渠道的聚合SDK服务端,但这只是理想化状态下的一个简化模型.如果接入渠道的逻辑都是按照理想化的简化过程来构建,那么对于支付的请求,我们 ...
- 统一SDK接入(U8SDK)——总体思路和架构
题记:很多做游戏开发的人,估计都或多或少地接过渠道SDK,什么UC,当乐,91,小米,360……据统计国内市场当前不下于100家渠道,还包括一些没有SDK的小渠道.每个渠道SDK接入的方法呢,多是大同 ...
- 教你快速高效接入SDK——总体思路和架构
题记:很多做游戏开发的人,估计都或多或少地接过渠道SDK,什么UC,当乐,91,小米,360......据统计国内市场当前不下于100家渠道,还包括一些没有SDK的小渠道.每个渠道SDK接入的方法呢, ...
- HL AsySocket 服务开发框架 - 总体思路与架构
一 背景 最近在园子了浏览了几篇有关Socket文章,得到了一些启发萌生了想要重构公司在2000年用.NET Framework 2.0 与 Visual Studio 2005开发的AsySocke ...
- Shell编程实战 1.1 监控思路架构介绍
监控思路,架构介绍 需求:使用shell定制各种个性化的告警工具,但需要统一化管理,规范化管理. 思路:指定一个脚本包,包含主程序,子程序,配置文件,邮件引擎,输出日志等. 主程序:作为脚本的入口,是 ...
- MVC实用架构设计(三)——EF-Code First(5):二级缓存
前言 今天我们来谈谈EF的缓存问题. 缓存对于一个系统来说至关重要,但是是EF到版本6了仍然没有见到有支持查询结果缓存机制的迹象.EF4开始会把查询语句编译成存储过程缓存在Sql Server中,据说 ...
随机推荐
- RabbitMQ + PHP (三)案例演示
今天用一个简单的案例来实现 RabbitMQ + PHP 这个消息队列的运行机制. 主要分为两个部分: 第一:发送者(publisher) 第二:消费者(consumer) (一)生产者 (创建一个r ...
- JS鼠标事件大全 推荐收藏
一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...
- 从国内流程管理软件市场份额看中国BPM行业发展
随着互联网+.中国制造2025.工业4.0等国家战略的支持与引导,企业在数字经济时代的信息化表现惊人,越来越多企业认识到,对于企业的发展来说,信息自动化远远还不够,企业的战略.业务和IT之间需保持高度 ...
- JAVA装饰者模式(从现实生活角度理解代码原理)
装饰者模式可以动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活. 该模式的适用环境为: (1)在不影响其他对象的情况下,以动态.透明的方式给单个对象添加职 ...
- 开源 iOS 项目分类索引大全 - 待整理
开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Cate ...
- Asp.NET + SQLServer 部署注意事项
1. 内存设置最大值(如果不设置, 会造成内存占用太大,带来性能问题) IIS 设置最大内存 sqlserver 设置最大内存
- grunt配置任务
这个指南解释了如何使用 Gruntfile 来为你的项目配置task.如果你还不知道 Gruntfile 是什么,请先阅读 快速入门 指南并看看这个Gruntfile 实例. Grunt配置 Grun ...
- MongoDB基础
1.概念及特点 说明:由于部分语句中$ 符号无法正常显示,使用¥代表 概念 MongoDB是一个基于文档的分布式的开源的NoSQL数据库,文档的结构为BSON形式,每一个文档都有一个唯一的Object ...
- 我的MYSQL学习心得(十一) 视图
我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- Nodejs之MEAN栈开发(六)---- 用Angular创建单页应用(上)
在上一节中我们学会了如何在页面中添加一个组件以及一些基本的Angular知识,而这一节将用Angular来创建一个单页应用(SPA).这意味着,取代我们之前用Express在服务端运行整个网站逻辑的方 ...