作者:vivo 互联网服务器团队 - Chen Wenyang
本文依据陈文洋老师在“2022 vivo 开发者大会 ” 现场演讲内容整顿而成。公众号回复【2022 VDC】获取互联网技术分会场议题相干材料。
在互联网流量见顶和用户需要分层的背景下,如何疾速迭代产品性能,满足用户需要成为了开发首要面对的问题。游戏核心低代码平台从产品定位动手,以组件化形式搭建用户端页面,疾速撑持产品需要,晋升了研发效率,缩短了我的项目周期。本文首先介绍背景与痛点,而后论述了游戏核心是如何搭建低代码平台,最初展现了低代码平台带来的收益和将来建设方向。
一、背景介绍与痛点剖析
vivo 游戏是 vivo 用户玩游戏的平台,其次要产品状态是 vivo 游戏核心以及 vivo 游戏内置悬浮球,它为用户提供了找游戏,玩好游戏,找人一起玩游戏的价值。vivo 游戏核心是 vivo 游戏的外围流量入口,因而游戏核心首页就承当了十分重要的角色。首页的格调连续了好几年,根底款式简直没有什么变动,强调散发。随着工夫的倒退,各种问题就缓缓突显进去了。
1. 从 2020 年开始,互联网流量见顶,散发晋升艰难,须要摸索新方向,而应答新需要的时候研发周期过长。从需要评审到性能上线,灰度到全量,须要耗时一个月以上,经营成果往往低于预期。
2. 外围用户的关注点不同。MOBA 玩家看画面和均衡,传奇玩家看游戏人数,消消乐玩家看玩法,且用户对游戏福利流动的需要也是十分强烈。首页列表中,重点信息无奈突出,也无奈给用户带来强烈的下载激动。
3. 任何一个游戏都是有生命周期的。在不同的阶段,突出的重点是不一样的。预约的时候可能突出这个游戏的画风和画质,重点更新的时候可能突出的是新玩法。游戏核心首页没有相干的地位或者伎俩来突出这些信息。
4. 无奈疾速响应经营或者开发者诉求。如果经营须要更换首页跳转的二级落地页,或者响应开发者诉求搭建一个非凡专区的时候,都是须要开发的,现有性能无奈疾速撑持。
这几个问题是表层的问题,透过景象看实质,咱们能够演绎出,游戏核心短少了两项 根底能力 。 一方面,游戏核心短少灵活多样,且能动静调整的组件化能力;另一方面,游戏核心短少可视化,疾速搭建页面的能力。基于以上痛点,联合行业前沿常识,笔者所在团队磋商决定,利用低代码思维,突破原有秩序,从新搭建新平台。
二、如何建设游戏核心低代码平台
大家可能会好奇,低代码平台个别都是通用性比拟强的平台,怎么能和业务属性如此显明的游戏核心联合呢?那接下来笔者为大家一一道来。
低代码平台离不开组件化设计,那什么是组件化设计呢?组件化设计是指针对雷同或者不同性能,性能,规格的产品,进行功能分析,设计出一系列的性能组件。通过组件的多样抉择将产品客制化,以满足不同的市场需求。由此能够推出,游戏核心组件化设计就是针对游戏核心进行功能分析,设计出一系列性能组件,通过组件的多样化抉择,疾速搭建出不同的页面,以满足不同用户的需要。
那么,咱们是怎么来定义游戏核心的组件呢?
在原有零碎的根底上,联合游戏核心 app 各个地位的状态以及将来定位,把游戏核心首页依照横向划分,每一行细化为一个组件。尽管大家可能不太理解游戏核心,然而对于市面上大部分散发类的产品来说,它们每个页面外面的 UI 款式是系列化的,比方视频款式,图片款式等,变动比拟多的是内容,所以咱们能够以行来定义组件。另一方面,组件粒度的粗细,和组件的灵活性成反向关系,然而和经营的配置能力成正向关系,即组件粒度越细,越根底,那么组件的灵便度就越高,经营的配置配置老本也越高。所以,抉择什么粒度的根底组件,是须要结合实际业务需要,综合剖析后确定的。不是粒度越细越好,也不是粒度越粗越好。
确定好组件的粒度后,咱们通过一个例子来详解拆分一下组件的形成。大家请看图 1,这是一个专题组件。其模式为左上是题目,右上是跳转二级页的按钮,多个游戏横向并列成一行,最上面是装置按钮。将这种组合模式形象为一个多游戏并列(1*4)展现的根底模板,根底模板同时也叫元组件,那么就能够把这类根底模板命名为专题元组件。经营心愿该元组件能够配置题目,跳转链接,行数和展现游戏个数。这些是动态的根底配置。同时,专题组件须要配置一个数据源,这个数据源决定专题外面游戏的内容和展现程序,这个数据能够是经营配置的或者实时举荐的。例如,在举荐场景下,用户发动申请的时候,能够由举荐实时返回,那么这就是动态数据。Banner 同理。因而能够认为:组件是由元组件和数据形成的。
图 1
那么元组件是怎么定义的呢?在后盾,咱们能够新增一个元组件,填写完卡片编号名称形容等信息后,再上传图片保留。这里的元组件卡片编号作为该组件的惟一标识,是有相应的业务含意,由该编号确定以后组件展现数据的格局,即通过编号确定解决数据的流程类。上传图片次要方面经营配置页面。因为在页面搭建过程中,经营配置多个组件的时候,后盾会实时浮现客户端的成果。展现的组件图片就是在此处上传的。
图 2
配置完元组件的根底信息后,在元组件配置管理的右边,如图 3,通过编辑 schema,左边就会呈现以后元组件可能配置的题目,跳转链接,行数以及单行游戏的个数。这些配置是经营在配置组件的时候能够动静配置的;配置完这些数据后,在页面治理后盾,增加该类组件的时候,红框中呈现的就是咱们可能配置的根底属性了,如图 4。到这一步,元组件的配置就实现了。
图 3
图 4
接下来就是数据源的配置。在经营点击数据抉择的时候(图 5),弹出的就是动态数据的配置,那这些数据是怎么来的呢?
咱们须要从两个维度来看数据:第一个,数据有哪些;第二个,数据怎么交互。咱们从两个角度来看数据有哪些。从数据类型角度划分,有经营配置数据和零碎主动数据。经营配置数据为经营人员为了达到某一个目标而手动配置或者干涉的数据,而零碎主动数据为从零碎某一个源主动获取的数据,不须要人工染指。从数据起源划分,有外部数据和内部数据。通过不同的数据类型和起源,咱们切分为不同的调用形式,这样能最大限度地保证系统的扩展性和维护性。
随着业务的倒退,平台会一直汲取其余业务数据,来丰盛以后业务的状态,然而获取内部数据的形式只有两种:http 和 dubbo 协定。通过这两个协定的配合,可能标准化获取内部数据。咱们说完了元组件和数据,那么他们是怎么绑定的呢?在后盾数据管理中,咱们会依照某个经营目标,来确定一个组件的利用场景,比方专题组件的利用场景就是为用户举荐某一类型的游戏汇合。通过定义组件的利用场景,咱们把元组件和数据绑定在一起。
整体过程如下:
- 确定组件的利用场景名和编号;
- 抉择一个或者多个元组件;
- 确定数据源类型,调用类型和数据业务方;
- 确定调用的 http 和 dubbo 接口。通过 http 接口,能够生成经营可能配置的数据,即点击抉择后弹出的列表,点击抉择后,即可将数据绑定到组件上,如图 5;在用户调用流程中,通过 dubbo 接口,利用后盾配置的数据,能够申请获取到更加具体的数据。
此时一个组件就配置实现了。
图 5
在前台数据的调用形式中,应用了阿里的 QLExpress。QLExpress 由阿里的电商业务规定、表达式(布尔组合)、非凡数学公式计算(高精度)、语法分析、脚本二次定制等强需要而设计的一门动静脚本引擎解析工具。它的个性劣势和运行原理能够在 GitHub 上找到,在此不赘述,感兴趣的同学能够自行搜寻。利用其弱类型脚本的个性,将经营配置的数据转换成调用内部接口的参数,通过 dubbo 泛化调用技术,获取到具体的数据。同时,还是利用弱类型脚本的个性,转换返回后果,管制业务逻辑和数据范畴。采纳 QLExpress 和 dubbo 泛化调用的形式,能够缩小代码开发,减少数据灵活性。
最初,来理解一下整个页面的配置过程。后面讲述到,元组件是最根底的组件,通过元组件,咱们配置一些根底信息,并关联一些动态数据,形成了一个组件。通过把多个组件拖拽到页面上,就能够实现经营配置生成页面的成果。同时,页面也能够间接拖拽曾经配置好的组件,这就是一个组件被多个页面援用的状况,实现了组件级的复用。在页面之上,咱们还引入了计划的概念。计划,即多个页面的汇合。通过页面的组合,首页能够实现多个页面的展现,既能展现游戏核心的门户,又能个性化经营。
如图 6,从下到上,通过数据和元组件,能够形成一个组件,通过多个组件的抉择,能够形成一个页面,多个页面形成一个计划。如图 7,从上到下,通过多层试验框架,确定须要展现给用户的计划。接下来,通过 dmp 用户画像,确定展现个性化的页面。每一个页面都是由若干个组件形成的。每个组件是由元组件和数据形成。
图 6
图 7
三、成绩展现
罗马不是一天建成的,游戏核心低代码平台也不是欲速不达的。平台 20 年就上线了,因为短少经营场景,性能也不是很欠缺,可能带来的效益微不足道,甚至外部也产生过质疑,是不是不值得花这么多的工夫精力建设平台,但通过工夫的积淀,游戏核心低代码平台的成果愈发显著。
首先,研发流程和原先不一样了。当咱们在新增 / 批改组件的时候,客户端同学通过 flutter 等动态化技术,实现新组件的开发批改,并且在后盾上传 flutter 的更新包或者差分包。
服务器同学须要在后盾配置元组件的信息,配置组件利用场景,绑定元组件和数据关系,就能够生成经营能够配置的组件。经营配置完组件,页面,计划,点检结束审核通过后就能够上线了,如图 8。
图 8
其次,研发效率晋升了。大家留神到,最大的一个变动是,客户端不须要发版了。在一些非凡场景下,服务器也不须要开发。比照原先的研发流程,效率产生了质的飞越。针对不同的角色,晋升的效率是不一样的;对于客户端来说性能全量上线周期可缩短 15 天以上,有较高的容错性,对于服务器来说,开发效率晋升 4 倍以上,对于测试来说,无需回归老版本,测试效率晋升 30%-50%;对于经营来说,可视化的操作升高 30% 的学习老本,晋升 10% 的配置效率。
最初,我的项目周期缩短了。原先如果经营做一个性能,首先得把需要提给产品(其实在提需要之前,还有一个需要探讨的过程,非需要评审),再进行需要评审,评审结束后须要依据各个需要的优先级进行排序。而此类需要因为成果不显著,且论证数据不好收集,往往其优先等级就比拟低。需要评审结束后,还须要策动评审,概要设计评审等等诸多流程,上线结束还须要灰度一周,有了上线报告之后才能够全量。然而,有了低代码平台后,流程就没有这么简单了。最简略的流程,无需更改组件,经营本人就能操作。还有一些简略的场景,服务器批改配置就能实现组件的批改。最简单的就是全新场景,但因为之前的根底在,开发效率也是十分的高。整体流程至多能够缩短为原来的 1 /4。接下来用一个例子来阐明一下。
图 9
图 10
四、将来瞻望
游戏核心低代码平台的建设规范,和通常意义上低代码平台的建设存在差别。游戏核心低代码平台由“游戏核心业务”衍生,缓缓演变到能够适配 vivo 生态内散发类 app 的终端解决方案。这合乎咱们的业务倒退,也为低代码的演变提供了营养。通过一直的适配和演变,咱们心愿可能将低代码的解决方案普惠安卓生态。因而,在将来的建设思路上,咱们的指标是可能解放生产力,晋升用户体验,做最好用的安卓低代码平台。
五、总结
低代码的概念最近很火,争议也很大。有人认为当前“人人都是程序员”,也有人认为是新瓶装旧酒。但作为技术人,最重要的还是通过技术解决业务问题,驱动业务倒退。游戏核心低代码平台旨在进步开发效率,帮忙业务获得更好的后果。将来,咱们也会投入更多的精力优化零碎,一直为用户发明惊喜,为行业带来变革。