菟丝子乐游菟丝子乐游菟丝子乐游

OPPO游戏中心亮相ChinaJoy:为用户提供全生命周期一站式服务如何“拼”出一个页面-游戏中心模块化实践

一、背景

vivo游戏中心是一款垂类的应用商店,为用户提供了多元化游戏的下载渠道。随着游戏中心手游品类的丰富,各品类用户的量级也不断增加,不同游戏偏好的用户核心关注点也不同,从预约、测试、首发、更新到维护,不同游戏生命周期节点的运营需要突出的重点不同。

针对上述不同业务场景,运营人员为了服务好广大的vivo游戏用户,需要进行精细化运营,以不同的视觉样式呈现给不同用户。比如,针对独立游戏品类的用户,平台如果提供了活动,攻略等内容的透出,能够促进用户更多的下载和消费。活动、攻略等内容以不同视觉样式呈现,运营需要通过实验的方式来验证效果,以确定最终的投放方案。这些需求都需要重新开发。受限于游戏中心APP较长的发版时间,运营的预期效果往往不佳。

因此,我们希望系统具备以下能力:通过不同视觉样式的抽象与复用,快速灵活的对页面进行布局调整,对不同的人群投放,最终以实验的方式来确定最佳的投放方案。

一年一度的ChinaJoy作为当今全球数字娱乐领域最具影响力的盛会之一 ,吸引了众多厂商和娱乐爱好者前往参展、参观,共享全球数字娱乐产业最新发展成果。在本次ChinaJoy活动现场,游戏陀螺观察到OPPO游戏中心作为OPPO展区的一部分,携手游戏合作伙伴亮相。

OPPO游戏中心亮相ChinaJoy:为用户提供全生命周期一站式服务

值得关注的是,游戏中心近期也发布了全新版本,通过UI设计、内容栏目升级等帮助开发者更直接、持续地感知和触达用户,同时也帮助玩家更快速发现好游戏、玩好游戏,体验游戏带来的乐趣。

而从ChinaJoy展区OPPO游戏中心呈现的内容可以发现,OPPO游戏中心正在对平台做重构,从内到外地革新用户体验。其中的思路和逻辑,或许能让我们看到在游戏平台的变革时代,什么才是最符合用户需求的发展方向。

怎么样才能实现这些系统功能呢?答案就是模块化。下面为大家介绍一下游戏中心的模块化实践。

二、什么是模块化

所谓模块化,其实它是一种模块化的设计思想,即指能针对相同或不同功能、性能、规格的产品,进行功能分析,并设计出一系列的功能模块。

透过模块的多样选择将产品客制化,可以满足市场许多不同的需求。那么游戏中心模块化就是针对游戏中心相同或者不同功能的视觉样式,进行业务场景分析,并设计出一系列的功能模块。通过模块的多样选择,快速灵活的搭建出不同的页面,来满足不同用户的需求。

用户究竟需要怎样的游戏平台?

模块化有三个能力:组件化,配置化和实验化。

组件化,即将页面layout拆分成多个组件,对这些组件进行抽象,进而达到复用的目的。组件是UI样式和数据的组合,组件化将UI样式切分成一些独立的,可复用的区域。配置化,即通过不同组件的拼接,可以快速搭建出各种页面。组件是构成页面的基本单位,因此每个页面都是由若干个组件构成的。组件是抽象的,对外输出是统一,可以根据不同的需求灵活的调整顺序和位置。实验化,即通过多层试验框架和DMP系统,快速的将不同的页面投放到不同特征的用户***上,以达到多版本运营的目的。多层实验框架是vivo内部实现的ABtest框架,DMP系统即数据管理平台,可以把它简单理解成一个数据池子,用来接收来自各方的数据,然后再经过融合、处理和优化后再使用这些数据。

大家可以看到,三个功能分别对应了三个概念。组件化对应了组件,配置化对应了页面,实验化对应了方案。它们是包含的关系,即一个方案包含了若干个页面,而一个页面也包含了若干个组件。

伴随手游行业的飞速发展,玩家对游戏体验的需求一直在持续深化。尤其近年行业内越发明显的游戏精品化趋势以及更强调内容质量和长线运营的市场环境,都在持续改变着用户的习惯,不断拉近着用户与开发者的联系,提升着两者的沟通诉求。

在这种背景下,游戏平台所具备的功能,无疑也需要结合用户需求做出升级。除了发掘好游戏这样的基本功能外,用户或许更希望游戏平台能提供足够的交流和展示空间,让玩家对游戏的享受不止于单一维度上的娱乐体验。

如何引导玩家开展交流,去探讨游戏亮点、交流游玩心得;如何为玩家与开发者拓展反馈渠道,让双方能够更到位地交流想法;如何为玩家构建实时游戏资讯、游戏攻略的内容库;如何为玩家产出内容提供支持,进一步提升用户的参与度和成就感,都是时下游戏平台所应具备的思考。

模块化之前,游戏中心的首页是由顶部的广告banner,导航栏,游戏列表和穿插组件构成的。穿插组件即为横向插入在游戏列表中用于运营推广的由视觉样式和数据组成的广告。从穿插组件的定义来看,其实就是组件化的概念,只是当时把组件化和游戏列表做了相应的区分。穿插组件的视觉样式比较单一,只有专题、视频、热词、活动、论坛等。如图1中,小编推荐,热游驿站,抢先推荐是1*4的游戏专题穿插,类似九宫格(八个热搜词)为热词穿插。

其实,这也可以说是游戏行业高速发展的某种必然。伴随产品的丰富和流行文化氛围的形成,玩家必然需要更多配套的内容和功能,并在某种程度上成为一个创作者或分享者,享受以游戏为核心的泛娱乐体验。

游戏平台如果仍然仅是一个“游戏搜索器”,而不能作为玩家长期驻留、彼此交流分享乐趣的多元化平台,将很难应对如今正时刻发生变革的环境。但目前看来,很多平台还暂时未能在功能搭建或是社区运营上取得突破,进一步满足用户的“一体化服务需求”。

如何“拼”出一个页面-游戏中心模块化实践

(图1:模块化前)

OPPO游戏中心亮相ChinaJoy:为用户提供全生命周期一站式服务

或许正是看到了玩家需求的演进,OPPO游戏中心开始着手从UI界面、栏目设置、平台玩法等多个方面进行了升级,几乎可以说对玩家的各项需求点,都做出了精准的回应。

全面升级,“更好玩”的OPPO游戏中心

穿插组件按照一定的规律穿插在游戏列表的任何位置,但是广告banner和导航栏是固定的,整个页面布局混乱,形态固定,不易变更。假如把最顶部的banner挪到小编推荐的下方,只能通过发版解决。将专题右上角的“更多”改成“换一换”,或者将游戏列表中某些游戏改为其内容的介绍,也需要通过发版解决。

模块化之后,利用组件化能力,既可以灵活的调整顺序,也可以动态更改组件的视觉样式,即使是游戏列表,也是可以动态配置。利用多个组件的顺序排列,可以快速搭建出一个页面。

通过ABtest框架和DMP系统,不同的页面,以投放方案的方式,能够快速呈现给对应的人群,进行多版本的运营。图1和2是模块化前后首页推荐的对比图,虽然从大的样式的没有太大的改变,但是模块化之前的样式相对单一,而模块化之后游戏列表中排列了单游戏大图、金刚位、小喇叭、专题、新游预约、下载榜等组件。

改版后的OPPO游戏中心,从视觉体验到背后的设计逻辑,都将变得更为精细直观,游戏中心内场景将各司其职,一步步为用户营造“从发现到沉浸”的完整体验。

如何“拼”出一个页面-游戏中心模块化实践

(图2:模块化后)

首先在帮助用户发现好游戏的核心功能上,OPPO游戏中心就做了很多精细的优化。游戏中心将平台的UI做了完全重构,用更简明的视觉体验引导玩家快速找到符合自己偏好的游戏。

游戏中心对首页UI做了重新定位,将首页作为平台核心资源的展示页,并让其他页面分别承载内容、福利、社区等功能,以细分模块对应玩家各类诉求。同时重新调整首页布局,采用简洁的大卡片并减少了卡片形式,让视觉体验更清爽。

不同的组件可以满足不同的业务场景。例如单游戏大图组件,辅以推荐,可以快速推广新游和热游,满足了不同用户对不同游戏节点的需求;新游预约组件可以从更多角度满足用户对于单款游戏提前订阅内容或关注其实时动态的需求。

三、怎么实现模块化

从前面的介绍大家可以看到,模块化通过组件化的方式快速搭建页面并将其投放给不同标签的人群,功能强大且配置灵活,为我们省去了不少的开发成本,那么我们的底层是怎么实现的呢?

OPPO游戏中心亮相ChinaJoy:为用户提供全生命周期一站式服务OPPO游戏中心亮相ChinaJoy:为用户提供全生命周期一站式服务

而游戏的详情页也将变得更为完善,除了更丰富的游戏内容介绍和评论外,还新增了近7日的评分、游戏标签以及回复功能。据了解,未来OPPO游戏中心还将进一步打通***系统资源场景的壁垒,让玩家可以在一款游戏中直接发现相关的桌面主题、音乐合辑等等。

OPPO游戏中心亮相ChinaJoy:为用户提供全生命周期一站式服务

OPPO游戏中心新版详情页(上下滑动查看)

其次,当玩家能够清晰地获取游戏信息后,如何帮助玩家进一步了解游戏,释放游戏的全部乐趣,就成了游戏中心的下一个服务目标。因此为了帮助用户在发现产品的同时,形成专属的兴趣和认知,游戏中心打造了一系列全新栏目。

以游戏中心全新栏目之一《拾趣》为例,《拾趣》是一档月度颁奖型栏目,编辑会在这里和鉴赏家一起,每月定期颁布最佳剧情、最佳视觉、最佳创意、最佳音乐、最受期待等五大奖项。让玩家了解这些游戏佳作,同时促进用户与开发者的交流,让栏目成为一个双向传声的地方。将定义好游戏的权利从平台的专业编辑交还到游戏玩家手中,尽可能地去放大用户的声音,帮助玩家基于兴趣和喜好共同发掘好游戏,这是栏目的核心用意所在。

OPPO游戏中心亮相ChinaJoy:为用户提供全生命周期一站式服务

OPPO游戏中心《拾趣》栏目

而《游戏推荐局》是一档视频与图文结合的游戏推荐型栏目,每周精选五款游戏,涵盖各种体量、各种风格的优秀产品。为了扩展游戏鉴赏的领域,平台也会适当地推送端游作品,让玩家挖掘更多游戏的可能性。

3.1 模型抽象和统一

根据组件布局,我们可以将组件抽象成两部分:视觉样式和数据;视觉样式可以简单理解为UI样式,即呈现在用户面前的展现形式,我们可以将视觉样式简单概括为模板。

OPPO游戏中心亮相ChinaJoy:为用户提供全生命周期一站式服务

OPPO游戏中心《游戏推荐局》栏目(上下滑动查看)

模板定义了当前组件最基础的形式,比如当前组件是滑块的形式,还是固定的形式;模板上还定义了一些可变的样式,即定义了当前模板哪些位置是可以通过配置来完成的,比如模板的长宽高、组合样式(2*2,1*4)、包含列表的个数等,能够动态配置的程度依赖模板的定义。

所谓的数据,按照来源分为推荐数据和人工排期数据。推荐数据来自算法和大数据,而人工排期,则是运营在后台配置的。由于推荐数据背后的逻辑比较复杂,本文只讨论人工排期数据。人工排期是一个四维数据。除了数据本身的“业务性”之外,它是有时效性的,游戏中心的广告位展示都是有时间限制的,比如游戏中心首页顶部banner,今天和昨天展示的是不一样的;其次,它是有“空间性”的,即不同的用户可能看到的数据是不一样的;另外,它是有动作性的,即点击后产生的事件。比如点击某个组件,可以是弹出一个悬浮窗,或者切换到到另外一个页面。

因此,模块化可以简单理解为模板和人工排期的组合。通俗点理解,组件其实像一个类,每个页面上不同的组件即为组件的对象,对象会实例化一些数据和行为。通过组件化的方式,我们不仅解决了端侧和服务端的耦合,同时还实现了组件在不同页面的复用。

排期数据的组成分为三个层次(即素材、推广物料以及排期)。最底层数据当然就是图片,视频,推荐语,评论等,当然游戏信息中也会包含游戏icon,背景图以及简单的视频,但是此处的图片并不是指游戏icon,而是比icon更精致,用来宣传广告的素材图片,这类数据我们统称为素材。由素材组成了上层的推广物料。

《策划面对面》则是一档线下访谈型栏目,内容团队将为玩家挖掘开发者背后或正经或沙雕的故事,让玩家看到产品的研发之路。相比于传统的图文采访,视频型栏目将更容易打动玩家,让玩家得以通过影像、声音、文字去综合了解策划与他们的游戏。

结合各类栏目,游戏中心还在着力构建着一支“百人鉴赏家团队”。鉴赏家团队中涵盖了游戏开发者及从业人员、硬核玩家、主播、UP主、画手,COSER等各领域达人,确保能从多个维度挖掘出特色产品。而无论是何种身份,这些鉴赏家都将以玩家的视角、基于个人的实际体验去介绍和分享一款游戏。

在笔者看来,如果这样的鉴赏团能在玩家群体间形成一定影响力,想必将对如今“评分至上”的引导风气做出一些改变。让玩家对游戏的选择不再被片面的评分所主宰,而是通过与同好的交流和探索,创造出属于自己的乐趣。这样的引导才能让玩家真正去理解游戏、培养出自己的口味,而不再被动地接受所谓的主流灌输。OPPO游戏中心将游戏选择定义的权利交还给用户,让玩家成为游戏的真正主导者,无疑是一次有意义的尝试。

最终,当玩家通过平台的内容布局,对游戏拥有了深入了解后,游戏中心还将进一步引导玩家深入平台去“玩好游戏”。从多个维度让用户感受交流与表达的乐趣,以此将游戏体验的魅力拉伸到全新维度。

什么是推广物料呢?推广物料其实就是基于某种目的,按照一定的形式来展示的内容集合。比如banner,其实就是一张图片加上其背后的关联的内容构成,图片是为了吸引用户点击,目的是为了推广背后关联的内容。推广物料加上时间空间和动作属性就变成了排期。素材,推广物料和排期都进行了统一的抽象。

第一,游戏中心将会持续强化平台的交流体验,让玩家更轻松地自我表达,去结识志同道合的好友。通过随心地发帖、评论、分享、互动交流,参与趣味游戏周边话题讨论,认识到更多真性情的玩家。未来平台还将基于算法能力和身份识别能力,通过玩家现有的和过去的游戏关系,帮助用户在游戏中找到更多乐趣,获取更精准的内容。

OPPO游戏中心亮相ChinaJoy:为用户提供全生命周期一站式服务

OPPO游戏中心用户评论互动

如下图3,推广物料有Banner、专题、活动、网页等;排期有胶囊banner、游情报,种草机、重磅更新等;如种草机就是网页(内容链接)加上时间组成的;整个结构呈现一个倒金字塔结构。

如何“拼”出一个页面-游戏中心模块化实践

(图3)

原先游戏中心每个资源位的排期数据都是放在不同的地方,比如顶部banner排期,网游banner排期都有各自的表来保存。在这样的情况下,数据库表的数量可能会比较多,对统一拓展来说就更加复杂。假如我需要对顶部banner和网游banner都要增加对不同人群(DMP系统)展示不同数据的时候,通常需要在每一张表中都增加一个DMP的字段来表示当前排期需要展示给用户的标签id。

模块化之后,我们将游戏中心所有的资源位都当成一个个模块,也就是都可以看成是排期数据,我们只需要两张表就可以做到排期三维数据的展示:排期数据表以及排期关联的具体素材表。因此我们在设计排期表的时候, 将素材信息(如图4中的material_id和material_type)数据保存在排期表中, 将DMP或者其他统一的信息也保存在排期表中, 这样做的好处就是对所有的排期都能生效统一的流程。

第二,游戏中心也在着力为用户打造“游戏关系”。玩家在游戏内的互动与属性都能够在游戏中心外显出来,包括游戏荣誉、成就、游戏角色数据、身份标签等等。让玩家能够通过这些标签的展示和分享,在平台内得到归属感、成就感和身份认同。未来游戏中心还会基于算法能力和身份识别能力,通过玩家现有的和过去的游戏关系,帮助玩家在游戏中获取更精准的内容,进而形成更纯粹的游戏社区氛围为产品拓展出多元乐趣。

第三则是游戏中心构建的游戏资料库和反馈渠道。游戏厂商和大神玩家坐镇论坛在线解答、社区问题反馈的专属直达通道,都让游戏官方可在第一时间了解到玩家对游戏的真实反馈,帮助游戏开发者对游戏进行调优,为玩家带来更好的游戏体验,形成游戏发展的良性循环。同时游戏官方进行维护的个性化定制攻略库、专业大神产出的适合各阶段玩家的深度攻略内容,都在帮助游戏中心内的玩家“玩好游戏”,获得更多的游戏乐趣和更沉浸的游戏体验。

如何“拼”出一个页面-游戏中心模块化实践

(图4)

3.2 后台业务流程统一化和可视化

如此复杂的业务流程,肯定少不了后台的配合。素材,推广物料和排期的统一后,我们也将后台的配置流程标准化。

OPPO游戏中心亮相ChinaJoy:为用户提供全生命周期一站式服务

开发者与玩家双向互动,帮助玩家玩好游戏

总体来看,OPPO游戏中心整合平台资源构建了一套“全生命周期的一站式体验服务”的升级构架。它根植于用户日渐增长的多元需求,又是对用户需求的提炼整合、科学搭配,最终以发现产品-了解产品-多元互动体验的完整链条,为用户构建了全新的游戏平台体验。让平台与产品彼此配合发挥出了强大的化学反应,变得越发好玩。

具体的配置流程如图5,6。图5偏向于后台的配置流程,是自下而上的配置。而图6是为了方便大家理解,是自上而下的结构。用户层面展示的是某个具体的方案,方案由若干个页面组成,但是会根据用户的画像具体展示,即配置的页面个数不一定是展示的页面个数。页面由若干个组件组成,组件由模板和数据组成....一层层往下分解,可以整体理解模块化的结构组成。

同时在笔者看来,这样一系列变革的重要价值还在于有效降低了“玩家成长”所需的学习成本。传统的游戏体验链条,其实非常依赖于玩家的自主性。玩家需要自己去发现、判断游戏的质量,去寻找交流者和优质的相关内容,去尝试发布自己的相关创作。要充分享受这些体验,往往会花费相当多的时间精力,并且需要涉及到多个平台。

但在OPPO游戏中心的一站式服务架构下,玩家可以在单一平台便捷地体验到全方位的泛娱乐内容。在简明的引导和功能架构下,新玩家也能迅速投入其中,找到适合自己的方式快速成长,成为一个懂游戏、爱游戏的达人。满足用户需求的同时,进一步推动用户成长、降低体验门槛,无疑将对行业产生更深远的影响。

如何“拼”出一个页面-游戏中心模块化实践

(图5)

如何“拼”出一个页面-游戏中心模块化实践

(图6)

模块化之前,配置首页banner排期,需要到首页banner的tab栏下,在全部banner排期里面加入相关的排期,然后在首页banner排期里面挑选全部banner排期里面的数据,而配置其他页面的banner排期呢,也是需要在类似的目录结构中做相关操作,彼此之间的banner是割裂的,无法通用;对于运营来讲,配置工作量也增加了不少。

未来:持续拓展玩家与开发者的体验上限

模块化之后,操作变得非常简单了。在组件层面,通过数据库配置,我们可以将模板的信息事先保存在数据库中。在数据层面,我们把所有的banner数据统一保存在推广物料管理并绑定到排期中,做到复用。在业务组件管理页面中,根据组件应用场景来选择模板,之后配置对应的排期数据。

如图7,当前重磅更新场景关联的是人工排期(如果关联的是推荐,则是推荐对应的code),配置好样式后整个业务组件也就配置完成了。然后在页面管理中将你想要配置的组件添加到某个页面中,设置好对应的DMP。配置好组件后,在后台页面上可以滚动进行整体页面效果预览。

如何“拼”出一个页面-游戏中心模块化实践

(图7)

不难看出,OPPO游戏中心正在尝试进一步拓宽平台的内容边界,让用户能够体验到更多游戏之外的泛娱乐内容。以更深度、实用的服务与工具,为用户构建纯粹的游戏多元体验,根植于服务好用户的诉求去实现平台发展。

如图8。最后可以将页面复用到不同的投放方案中,运营后台通过审核流和上线点检后,最终显示在用户界面端。当前配置流程自下而上,逻辑清晰,符合运营的配置习惯。

未来OPPO游戏中心也将依托于OPPO软硬服一体化的优势,渗透到更多玩家的生活场景当中,通过智能设备、IoT等为玩家提供全方位的体验,这无疑为手游的行业生态开启了更多的可能。构建一个能充分挖掘自身喜好,并与朋友共同探索分享游戏乐趣的世界,想必会是对整个游戏平台的一次革命性重构。

如何“拼”出一个页面-游戏中心模块化实践

(图8)

3.3 前端业务流程抽象与统一

目前,游戏中心首页和新游专区改造成了模块化页面。首页是游戏中心非常重要的分发渠道,模块化要求页面形式多种多样,同时假如模块化改造不被用户认可的时候也要能够动态回退。

这些基于用户需求做出的革新,对于开发者和整个行业而言,其实也有着非凡的意义。

毕竟游戏开发者对流量的获取需求也在逐步升级,如何广泛地触达用户、精准地获取玩家、建立持续稳定的用户沟通与转化是他们最根本的需求。开发者都希望能从预约上线、推广分发到持续运营的全生命周期,去获取游戏中心的相应支持。可以说玩家与开发者的需求,共同促成着分发平台的功能优化和整体转型。

因此首页模块化页面会有三种类型:

而一旦平台能够通过内容运营聚拢到更多用户,无疑就能够为开发者提供更多的内容曝光机会和输出场景。因此,游戏平台面向内容化、游戏垂直社区做转型,不仅是在满足用户需求,更是以纯粹的优质体验,为开发者、为行业拓展更多的获量机会。从整个行业的发展角度看,这也是很有远见的尝试。

纯模块化页面,穿插模块化页面和H5模块化页面

所谓纯模块化页面,即页面中的所有元素都是由组件化数据构成。所谓穿插模块化页面,其页面结构为按照一定规律在游戏列表中穿插了若干个组件,和模块化之前的页面组织结构是一模一样的,只是后台的实现方式不一样。

OPPO游戏中心目前结合自身特色,对平台转型的命题给出了一个出色的答案。未来游戏中心将以怎样的形态,为用户和开发者带来更多创新体验,甚至改变行业的相关运作模式,就让我们拭目以待吧。

相关运作模式,就让我们拭目以待吧。

穿插模块化页面中的列表还有两种不同的形式,分为游戏列表和混合数据流列表。穿插页面可以在一个屏幕中最大效率的展示游戏。

最后的H5模块化页面,可以认为由H5组件所构成的页面,由我司的悟空建站提供页面。通过多层试验框架和DMP获取不同方案以及不同页面的流程不在此处赘述。这里我们讲一讲整个流程中最为复杂的穿插页面流程,以及我们怎么在如此复杂的流程中抽象和设计。

如何“拼”出一个页面-游戏中心模块化实践

(图9)

3.3.1 流程统一

从上图(大家无需过分关注流程图里面各个步骤的业务逻辑,流程图只是为了展示原来流程的复杂度)我们可以看出来,用户请求开始,需要经过N个步骤。这么冗长的步骤,如果写在一个service,那么就会造成逻辑混乱,维护性不高和扩展性差的效果,因此我们可以分而治之。图9中,我们用不同的颜色来区分步骤,可以做一个简单的流程归纳。

归纳后的流程如下图所示。我们可以把提交异步线程池进行归纳,可以理解为获取组件列表和混合数据列表为两个步骤。

如何“拼”出一个页面-游戏中心模块化实践

(图10)

我们再进行归纳和抽象后,整个模块化的页面获取流程就可以简化为四个步骤:初始化阶段、获取组件列表阶段、构建阶段和合并阶段,如图;

如何“拼”出一个页面-游戏中心模块化实践

(图11)

在《金字塔原理》一书中曾说过,读者在阅读文章的时候,必须阅读理解每一句话,并且寻找每句话之间的联系,前前后后反复思考。如果你的文章结构呈现金字塔形,文章的思路自金字塔顶部开始逐渐向下展开,那么读者肯定会觉得你的文章比较容易读懂。这一现象体现了人类思维的基本规律,那么阅读代码其实也是一样的逻辑。好的代码即是一段业务逻辑的注释,通过阅读代码能够大概判断主要的业务流程。在构建阶段, 可以通过组合不同的策略来获取不同的排期数据。策略和组件解耦,当新增策略的时候,无需改动原有的业务逻辑。此处不同的策略也可以采用工厂模式的方法来获取。

首页的组件展示逻辑是比较复杂的,尤其对于穿插模块化页面。正如前文所述,穿插页面由游戏列表和业务组件构成,即在一个游戏列表中,穿插了各个业务组件。数据列表如果是游戏数据列表, 那么每个游戏都是按照一定的比例来排列的,且需要和组件中推广物料的底层数据是游戏的去重。比如游戏按照网游,单机和独立游戏的比例来展示,假如上一个组件展示过当前游戏,那么这个游戏需要被过滤,且补位游戏也是有一个逻辑,比如网游被过滤了,那么取补位游戏列表中的游戏,其次用网游来补,再次用下面的游戏顶上来。去重逻辑包含两种,一种是能被之前的游戏过滤,也能过滤下面的游戏;另外一种则只能去重下面的游戏,不会被上面的游戏去重。

如何“拼”出一个页面-游戏中心模块化实践

(图12)

在获取业务组件中排期数据(如上图,其中也包含了游戏信息)的时候,还会有获取ABTest信息(不同的用户展示不同的游戏信息),游戏黑白名单过滤,已安装过滤,已曝光过滤,额外信息处理,组件数据组装等过程。每一个排期数据获取都会用不同的Handler来处理。每一个Handler都有自己的处理逻辑,针对如此多的排期以及他们的扩展,如果没有一套处理的统一逻辑,那么简直是灾难。新人在开发新组件中排期数据的时候,可能会遗漏非常多的细节。另外,推广物料之间其实是有一些通用逻辑,如果不将这些逻辑沉淀到领域模型中,逻辑无法复用,将会散落在各个Handler中,我们以下图橙色的步骤来详细说明。

3.3.2 推广物料的流程统一化

一方面,我们将获取并处理推广物料的流程统一化。如下图所示流程中,其实基本上就包含了所有推广物料需要处理的步骤逻辑(不重要的步骤已忽略)。统一之后,我们可以将一些通用的逻辑下沉,形成统一的方法调用。比如我们可以根据人工排期,推荐排期等,采用工厂方法的设计模式来屏蔽获取推广物料的逻辑。当然我们为了提升性能,对于人工排期数据,利用统一缓存的方式,通用场景code来获取;接着利用不同过滤策略来过滤掉进入黑灰名单的游戏或者内容。处理完额外信息之后再用列表的数据将组件中重复的数据给去除。

如何“拼”出一个页面-游戏中心模块化实践

(图13)

3.3.3 模型的逻辑抽象与沉淀

另一方面,我们将统一处理组件和推广物料的逻辑沉淀到对应的领域模型中,如图;

如何“拼”出一个页面-游戏中心模块化实践

(图14)

整个过滤重复数据的流程都是针对组件进行的,那么在组件层面,会有大量的重复逻辑,比如每个组件需要在最后返回的数据个数处理上,不同的组件返回的个数是不一样的,那么这部分逻辑写在组件这个领域模型中会更加妥当。比如已曝光和已安装处理,这个逻辑就可以放在组件层面来处理, 当然放置在Handler层处理也是没有问题的。在推广物料层面,也有一些通用的逻辑,比如1*4个游戏组成的专题和2*2个游戏组成的专题,他们背后都有一套接入推荐系统并兜底的逻辑,也可以沉淀在专题这个领域模型来处理。

四、写在最后

当前,很多业务开发的同学,尤其在熟悉了业务之后,通常会陷入一个误区:做业务的基本上就是CRUD,没有什么技术含量。但是在开发的过程中,往往又缺乏相应的思考,导致重复开发。那么如何才能让业务开发变得更有吸引力和技术含量呢?

游戏中心模块化改造过程中,利用组件的抽象和复用,提升了组件化,配置化和实验化能力,快速的支撑了业务需求,同时通过统一标准流程和利用领域模型知识不断的完善业务代码,提升了代码的维护性和可扩展性。随着业务的不断发展,即使现在非常合理的架构也会变得臃肿,难以扩展,但是如何做好业务的方法论确是不变的。因此做业务开发同学,应该多思考怎么把业务做深做通用,提升快速实现业务价值的能力。

作者:vivo互联网服务器团队—Chen Wenyang

未经允许不得转载:菟丝子乐游 » OPPO游戏中心亮相ChinaJoy:为用户提供全生命周期一站式服务如何“拼”出一个页面-游戏中心模块化实践