一、前言

随着国内手游版号申请难度的增加,以及防沉迷等一系列政策的影响,很多国内开发者纷纷开始寻求海外发行之路。那么手游出海首要的是需要一套适合海外发行和运营的手游SDK发行系统,帮助手游快速上架到Google Play和Appstore等平台。

本系列我们就来开发一套这样的SDK,我们暂且称这套SDK为UGSDK。(目前该SDK产品已正式上线,帮助多款游戏上架Google Play和Appstore等平台)

整个UGSDK项目,暂时可以分为三大部分——Android客户端SDK部分、iOS客户端SDK部分以及服务端部分(目前不考虑H5游戏部分)。

本篇主要介绍UGSDK项目技术选型以及开发过程中遵循的一些开发原则。

二、Android客户端

1、技术选型和基础开发原则

  • 根据目前游戏引擎主流环境,SDK项目采用java语言开发,不使用kotlin。采用open jdk 1.8。
  • 项目根据不同业务功能,尽可能地采用多模块组织,但是不要过分细化模块。
  • 整个项目采用主流MVC架构,但是也不要为了使用该架构而写入很多不必要的代码和逻辑,以“简单、合理、合适”为基本架构宗旨。
  • 对游戏层设计的api调用接口尽可能地简单。因为该SDK开发之后,将会被不同的游戏去接入,不同的游戏有不同技术水平的开发者,简单的api调用,将极大方便和加快游戏研发的对接。
  • 界面UI采用fragment开发,每个业务流程,采用单个activity。流程的控制,在activity中处理。UI界面的跳转,需要有统一的进入和弹出过渡效果。
  • 所有资源的读取,采用统一的辅助类ResourceUtils读取,不要直接使用R.xxx.xxx的形式。
  • 所有资源文件和资源文件中唯一id的命名,全部以ug_开头。

2、其他原则

  • 为了减少和不同游戏之间的冲突,尽可能少的使用第三方框架,基础轮子尽可能自己封装。
  • 插件设计需要遵循动态可插拔可替换原则,防止后续增加和替换同类的插件,以及出现和游戏方插件冲突时,可以快速替换或者去除插件。
  • 模块的封装尽可能纯粹,不要将多个不同的api调用暴露给外部。
  • 复杂业务代码的注释要竟可能的详细。
  • 尽可能地将配置参数放到服务端,从服务端读取。
  • 尽可能将需要游戏层设置的参数配置,放到统一的位置或者文件中。

三、iOS客户端

1、技术选型和基础开发原则

  • 根据目前游戏引擎主流环境,SDK项目采用objective-c语言开发,不使用swift。
  • 项目工程依赖采用CocoaPods创建和管理依赖。
  • 整个项目采用主流MVC架构,但是也不要为了使用该架构而写入很多不必要的代码和逻辑,以“简单、合理、合适”为基本架构宗旨。
  • 对游戏层设计的api调用接口尽可能地简单。因为该SDK开发之后,将会被不同的游戏去接入,不同的游戏有不同技术水平的开发者,简单的api调用,将极大方便和加快游戏研发的对接。
  • 界面UI采用代码开发,不使用storyboard。 UI流程的控制,在controller中处理。UI界面的跳转,需要有统一的进入和弹出过渡效果。
  • 所有资源文件全部以ug_开头。
  • 所有目录、类名、方法和变量的命名,都以UG_或者ug_开够,方便后期如果需要出马甲SDK时,便于全局混淆和替换。

2、其他原则

  • 为了减少和不同游戏之间的冲突,尽可能少的使用第三方框架,基础轮子尽可能自己封装。如果需要使用开发的第三方库,可以做改名处理。
  • 插件设计需要遵循动态可插拔可替换原则,防止后续增加和替换同类的插件,以及出现和游戏方插件冲突时,可以快速替换或者去除插件。、
  • 模块的封装尽可能纯粹,不要将多个不同的api调用暴露给外部。
  • 复杂业务代码的注释要竟可能的详细。
  • 尽可能地将配置参数放到服务端,从服务端读取。
  • 尽可能将需要游戏层设置的参数配置,放到统一的位置或者文件中。

四、服务端

1、技术选型和基础开发原则

  • 服务端采用java开发(open jdk 1.8),采用SpringBoot+Mybatis框架(使用开发时最新的稳定版)。
  • 数据库采用mysql(5.6+,数据库编码使用utfmb4), 缓存服务采用Redis(3.0+)。
  • 后台管理系统等有UI界面的控制台系统,全部采用vue+element前后端分离方式开发。
  • 服务端主体分为四个部分——Server、Manager、批处理作业和监控。Server主要处理和客户端部分的协议和业务核心逻辑,采用Spring Restful Api形式提供服务;Manager主要处理后台管理系统的逻辑;批处理作业主要用于定时任务和数据统计部分的业务,基于Quartz开发可视化批处理作业的管理和调度中心;监控主要用于其他几个程序服务的监控和告警,目前采用SpringBootAdmin。
  • 核心业务和批处理业务需要支持集群部署。
  • 业务中像用户和订单等数据的唯一ID均采用分布式唯一ID,使用改良的雪花算法生成。
  • 项目根据不同业务功能,尽可能地采用多模块组织,将需要被不同模块依赖的功能独立成单独的模块。
  • 整个项目采用主流MVC架构,业务逻辑尽可能写在service层,不要写在controller里面。

2、其他原则

  • 项目模块的依赖管理统一使用gradle,不适用maven。
  • 所有API协议采用统一的sign签名校验规则。
  • 所有模块服务需要增加容器化部署支持,比如Docker,为各个模块编写对应的Dockerfile。
  • 模块的编译需要使用gradle task,尽可能减少手动操作。
  • 复杂业务代码的注释要竟可能的详细。
  • 模块的项目配置文件,需要区分部署环境,比如dev, prod等。
  • 统一的日志输出规范。

可见,SDK项目看起来功能虽然不多,但是想要满足线上运营环境,后期可维护性高,可扩展性强,还是需要花很多心思并做很多功课的。如果你也对海外SDK开发感兴趣,欢迎加入我们的海外SDK技术交流QQ群:207609068哦。

相关新闻

  • 手游聚合SDK产品解决的行业痛点

    手游聚合SDK产品解决的行业痛点

    本文来自U8SDK同文科普视频: 前往B站观看 U8聚合SDK工具是一套专为手游发行打造的提效工具。这个产品主要解决了游戏行业中的什么痛点呢? 在国内,一款手游如果要发行上架,多半会将产品上架到多个渠道应用商店,比如华为、小米、OPPO、VIVO等。因为你要触达更多的玩家,渠道平台是绕不过去的流量入口。 如果流量入口只有这些“硬核”渠道那也还好,但是在残酷的行业竞争下,国内的渠道平台竟然多达2000多家。 如果能在短时间内上架更多的渠道平台,那么你的手游就越有可能触达更多的玩家。 游戏行业内, …

    技术分享 2024年 1月 12日
  • 反编译打包时自动化处理Google PAD资源

    反编译打包时自动化处理Google PAD资源

    在U8SDK中, 游戏接入聚合SDK框架,再通过分包工具, 就可以打出上架各个渠道平台的游戏包。 在之前的技术文章中, 我们已经说过分包工具的原理: 基于母包apk反编译,再合并代码与资源,最后再回编译。 这种方式,对于上架国内外大部分渠道平台,都没问题。 但是对于Google Play商店, 却有不同的要求:Google Play商店上架的包体格式是aab,并且单个aab中base包的大小不能超过200M(截至2024年时的规定),如果有超出部分,需要将超出的资源,采用Google Play提…

    技术分享 2024年 7月 2日
  • 手游海外SDK开发实践1——需求分析

    手游海外SDK开发实践1——需求分析

    一、前言 随着国内手游版号申请难度的增加,以及防沉迷等一系列政策的影响,很多国内开发者纷纷开始寻求海外发行之路。那么手游出海首要的是需要一套适合海外发行和运营的手游SDK自发行系统。 本系列我们就来开发一套这样的SDK,我们暂且称这套SDK为UGSDK。该SDK已经开发完成,如果有兴趣或者想体验完整功能的同学,可以加我们的海外技术交流QQ群:1055996444。 整个UGSDK项目,暂时可以分为三大部分——Android客户端SDK部分、iOS客户端SDK部分以及服务端部分(目前不考虑H5游戏…

    技术分享 2024年 4月 2日
  • U8SDK已完成适配华为鸿蒙系统

    U8SDK已完成适配华为鸿蒙系统

    在9月华为开发者大会上, 余承东先生提出华为将在明年(2024年)推出鸿蒙NEXT。 该版本操作系统,是一个完全自主的操作系统,将不再兼容Android(无法安装APK应用)。 不兼容Android,则意味着之前针对Android系统开发的应用,都需要针对鸿蒙系统再开发一次,就像iOS系统一样。 当然,在后续各种跨平台的技术方案支持鸿蒙系统后,适配将会更加容易。 对于游戏行业来说,目前一些全民化的手游产品,已经优先在适配鸿蒙系统,比如消消乐、保卫萝卜等产品。 U8SDK自推出后,得到了不少头部手…

    技术分享 2023年 10月 25日
  • 什么是手游聚合SDK?

    什么是手游聚合SDK?

    手游发行的痛点 当一家手游研发企业,开发好了一款手游,准备发行的时候, 我们就会遇到如下的问题: 所以这个时候, 聚合SDK就闪耀登场,来解决上面这个行业痛点。 聚合SDK的设计目标 通过上面“痛点分析”我们知道,国内手游渠道平台众多,手游上架这些渠道平台之前,必须先接入他们的渠道SDK。 所以,聚合SDK的设计目标就是要:快速接入,流程解耦;稳定分包,聚合管理。展开说就是如下几点核心: 聚合SDK的实现难点 通过上面设计目标,我们可以看出:要实现一套聚合SDK平台, 其中最难的点在于“分包工具…

    技术分享 2023年 6月 10日
  • 什么是聚合广告SDK?

    什么是聚合广告SDK?

    休闲手游变现的痛点 国内手游发行,如果添加游戏内充值功能,则需要申请版号。而随着版号发放的收紧,很多休闲游戏很难申请到版号。所以对于休闲单机类游戏, 一般主要通过广告来变现。 而国内广告平台虽然没有渠道平台那么多,但是大大小小也有不下二三十家。除了像穿山甲、广点通这些第三方广告平台外, 还有一些渠道广告SDK,比如OPPO、VIVO、小米广告、华为广告、4399广告等。如果你的手游需要上架到这些渠道平台,则必须集成他们平台自己的广告SDK。 休闲游戏本就开发周期短、上架快,所以对于一家主营休闲游…

    技术分享 2023年 6月 7日
  • 什么是海外发行SDK?

    什么是海外发行SDK?

    手游海外发行的需求 这几年,随着国内手游市场的内卷,产品增长乏力,以及版号发放的收紧,很多手游企业将眼光投向了全球市场。 海外渠道市场相对单一, 刚出海的手游, Android一般只先上Google商店,iOS上AppStore。 但是海外玩家的登录和支付习惯和国内大不相同。 我们需要针对海外用户单独设计一套符合海外游戏发行需求的SDK。 一般需要满足如下需求: 针对上面的业务场景, 我们提供了一套独立的SDK系统, 叫《海外发行SDK》。 海外发行SDK的设计目标 通过上面需求我们知道,海外发…

    技术分享 2023年 6月 8日
立即联系

联系我们

在线咨询:点击这里给我发消息

QQ号:2848004717

电话:18202116067

邮箱:chenjie@u8sdk.com

工作时间:周一至周日,9:00-18:00

微信咨询
微信咨询
技术大群
返回顶部