战令通行证功能

更新日期:2020-8-26

Version 1.00 last saved by:朱兴韬

创建文档

1. 设计目的

优化战令功能交互,重构战令任务系统,强化功能可玩性。

2. 流程图

image.png

3. 功能简述

  • 将战令任务拆分为龙宠条件与模式条件,在任务链中抓取了对应任务后,服务端需对其赋予龙宠条件与模式条件限制。

  • 重构后战令任务实例的组成变为:龙宠/模式(选其一)限制条件+任务条件+完成条件;战令购买条件+龙宠/模式(选其一)限制条件+任务条件+完成条件。

  • 平台简述:

    • ruleType=4resetRule=2时,表示该任务实例为战令每日任务

    • ruleType=4resetRule=3时,表示该任务实例为战令赛季任务(常规任务)

    • ruleType=5resetRule=3时,表示该任务实例为战令赛季任务(需购买战令才可进行并完成)

4. 具体设计

4.1 平台相关

4.1.1 新增任务链选取规则与字段

  • task_base中新增以下字段,用于控制战令任务规则,当ruleType=4/5时,成功读取chainId后,进入该字段进行任务链处理。
字段 类型 释义
battlePassPetLimit Int 0=不进行限制 1=在玩家已拥有龙宠中随机1只,作为限制龙宠(概率平均)
battlePassModeLimit Int 0=不进行限制 1=在玩家已解锁模式中随机1个作为限制模式(概率平均)
  • 以上两个字段都配置为1时,随机取其一作为限制条件(概率平均)

    • 有一者为0,取另一字段作为限制条件。
    • 都为0则不抽取该条信息。
  • 抽取方式:

    • randomNum中取得抽取次数,在对应chainId中抓取等额次数的任务,不存在抓空。

    • 概率:概率在对应chainIdtask_base中的probability字段体现。

4.1.2 新增任务规则

  • task_control配置表新增ruleType=4,表示在龙宠与模式中进行随机限制。

    • 表示随机任务,去指定chainId中抽取任务时,需进行以下操作:

    • 根据battlePassPetLimit字段,查询玩家目前已拥有龙宠,在已拥有龙宠中选定1只(概率平均),限制玩家仅使用该龙宠才可完成任务。

    • 根据battlePassModeLimit字段,查询玩家目前已解锁模式,在已解锁模式中选定1个(概率平均),限制玩家仅使用该模式才可完成任务。

    • 任务限制模式、龙宠信息需形成消息下发客户端。

  • task_control配置表新增ruleType=5,表示战令限制随机任务,去chainId中抽取任务时,需进行以下操作:

  • 查询玩家是否已购买战令,已拥有战令才可进行任务(任务会先下发,但需购买战令才可进行并完成)。

4.1.3 新增重置规则与字段

  • task_control配置表字段randomDays#int,表示每X(配置天数)自然日可读取randomNum#int进行任务抽取,当ruleType=4/5时才读取该字段信息。
字段 类型 释义
randomDays Int 每X自然日可去randomNum中执行抽取,也表示1个赛季内该实例任务每X自然日刷新一次
  • ruleType=4/5时,进行以下处理:

    • randomDays读取自然日信息,判断当前赛季经过的自然日天数,以此为基准执行抽取。
      • 例:randomDays的配置值为5randomNum配置值为4,当前赛季已进行了16个自然日。玩家(当日注册新号)此时登录游戏触发了战令任务抽取业务,则执行4次(包含跨赛季第1次)抽取流程,下发数量共16个任务给玩家。
  • 在1个赛季内,ruleType=4/5的任务都可完成,跨赛季后任务清零,并执行1次抽取(跨赛季后第1次抽取无需满足配置的自然日条件)。

4.1.4 新增任务条件

  • 根据战服传出数据,新增以下任务类型
任务条件id 任务类型描述 target数量
100240 恢复生命 数量
100250 造成伤害 数量

4.1.5 逐级解锁

  • task_control配置表中的levelLimit#int字段将配置任务的生成等级,玩家只有达到了配置值,才可生成任务实例。

4.1.6 数据下发

  • 服务端需下发以下信息,供客户端维护:

    • ruleType=4resetRule=2时(战令每日任务)

      • 下发ruleTyperesetRule
      • 下发任务条件、任务奖励、任务限制信息(龙宠或模式)
      • 下发任务刷新时间戳
    • ruleType=4resetRule=3时(战令赛季任务)

      • 下发ruleTyperesetRule

      • 下发任务条件、任务奖励、任务限制信息(龙宠或模式)

      • 下发任务刷新时间戳

    • ruleType=5resetRule=3时(战令赛季任务)

      • 下发ruleTyperesetRule
      • 下发任务条件、任务奖励、任务限制信息(龙宠或模式)
      • 下发任务刷新时间戳

4.3 战服相关

4.3.1 数据下发

  • 统计战局内以下数据,向平台下发:

    • 恢复生命(使用治疗类技能,恢复他人生命也计算在内)。

    • 造成伤害(仅对敌方角色造成伤害计算在内,吃鸡模式宝箱、其他玩家的召唤物不计算在内)。

4.4 客户端相关

4.4.1 数据处理

  • 处理服务端下发的任务消息中的数据,判断任务类型,根据不同任务类型做差异表现。

  • 以下chainId在客户端为taskType

    • chainId=5000,表示战令每日任务。

    • chainId=5011/5012ruleType=4,表示战令赛季任务。

    • chainId=5011/5012ruleType=5,表示战令赛季任务(需购买战令才可进行并完成)。

  • 处理每个任务的限制条件,条件分为:龙宠、模式。

4.4.2 任务界面-任务排序规则

  • 根据平台下发消息,对任务进行排序,规则如下:

  • 任务(收起):

    • 优先1:可领取态优先展示(包含每日与赛季),后方跟随相同龙宠或限制模式任务(如果有),若玩家此时执行了领取任务操作,不会进行重新排序。

    • 优先2:完成进度最高的任务(进行态,包含每日与赛季),后方跟随相同龙宠或限制模式任务(如果有)。

    • 优先3:同一限制条件(相同限制龙宠或相同限制模式)的进行态任务,自动对齐(卡片归类到同一处);若玩家解锁了战令,战令赛季任务也可参与对齐。

    • 优先4:没有其他可进行任务时,展示未解锁的战令专属任务。

    • 例:收起态有3个slot,玩家未解锁战令,目前玩家剩余1个赛季任务与若干个赛季战令任务,slot1展示赛季任务,slot2/3展示未解锁态的战令专属任务。

    • 优先5:客户端作假维护的待刷新态卡片。

  • 任务(展开),展开时会根据任务类型分类,每日任务不参与下列排序:

    • 优先1:同一限制条件(相同限制龙宠或相同限制模式)的任务,自动对齐(卡片归类到同一处);若玩家解锁了战令,战令专属任务也可参与对齐。

    • 优先2:玩家未解锁战令时,所有已下发但不可完成的战令专属任务,始终显示在展开态的末尾。

    • 优先3:客户端作假维护的待刷新态卡片。

4.4.3 任务界面交互-收起态

  • 任务为收起状态时,交互如下图所示:

image.png

  • 收起态时,任务界面内由上到下有3个slot,为slot1、slot2、slot3,分别展示收起态排序前3的任务。

    • 其中slot内含有任务卡片,卡片主要包含以下2个状态;(待刷新态与战令专属态在下文:展开态中描述)。

      • 可领取态(根据上文排序,优先级最高),包含以下内容:

        • 主题图标(根据平台下发的限制条件去item_basemode_sty索引)。
        • 任务文本(task_base)。
        • 可领取蒙版、底板。
      • 玩家点击了可领取态slot的卡片,按顺序执行以下动效:

        • 动效1:经验图标从卡片处飞向左上角,左上角进度条组件执行增加表现,战令主进度条执行增加表现。

          • 若增加过程中经过了对应节点圆形图标,节点需从未解锁态变为解锁态并播放光效。
          • 对应节点的奖励(免费奖励、战令奖励)需从未解锁态变为解锁可领取态,可领取态需展示太阳花光效。
        • 动效2:卡片播放透明度由100%到0%消失的0.35秒先慢后快弹性动画。

        • 动效3:列表推进动画:若玩家点击的是slot1的可领取卡片,slot2的卡片向上移变为slot1,slot3的卡片向上移变为slot2,通过排序新增一张卡片从下方移入界面填充slot3;动画为持续1秒的慢(100%)→快(150%)→慢(100%)的弹性移动动画。

          • 若玩家点击的是slot2的可领取卡片,slot3的卡片向上移变为slot2,通过排序新增一张卡片从下方移入界面填充slot3。
          • 若玩家点击的是slot3,通过排序新增一张卡牌从下方移入界面填充slot3。
      • 已领取的任务卡片不再展示

  • 进行态包含以下内容:

    • 主题图标(根据平台下发的限制条件去item_basemode_sty索引)。
    • 任务文本(task_base)+限定龙宠/模式 :%s(具体索引id见字符串配置处)。
    • 任务目标与进度条(task_base)。
    • 任务奖励(task_base)。
    • 玩家点击了进行态的卡片,执行以下操作
      • 若该任务的限制条件为指定龙宠,返回主界面切换为对应龙宠;玩家在房间内时队伍内有相同龙宠则展示code=104010
      • 若该任务的限制条件为指定模式,返回主界面切换为对应模式;玩家在房间内且不为队长时展示code=21101
  • 点击红框内热区,将任务界面变为:展开态,按顺序执行以下动效:

image.png

  • 动效1:3个slot内的卡片播放大小由100%到0%的0.35秒先慢后快弹性动画。

  • 动效2:任务展开态由屏幕右侧至左以先慢后快弹性动画形式进入界面,参照聊天功能抽屉动画。

4.4.4 任务界面交互-展开态

  • 任务为展开状态时,交互如下图所示

image.png

  • 任务主题1(展示每日任务卡片):

    • 主题文本:“每日任务”(UI层已有,直接复用)。

    • 倒计时文本:“刷新倒计时:”(UI层发布,需翻译)。

    • 需程序自行换行后展示倒计时,附带倒计时图标,倒计时根据平台下发的该任务链刷新时间戳展示,每日任务倒计时跟随主题文本形成组件,会随界面拖动移动。

    • 具体倒计时显示规则复用上层战令功能。

  • 任务主题2(展示赛季任务、战令专属任务卡片):

    • 主题文本:“赛季任务”(UI层已有,直接复用)。
    • 倒计时文本:“新任务解锁:”(UI层发布,需翻译)。
    • 需程序自行换行后展示倒计时,附带倒计时图标,倒计时根据平台下发的该任务链刷新时间戳展示,赛季任务倒计时固定在屏幕右侧,不会随界面拖动移动。
    • 具体倒计时显示规则复用上层战令功能。
  • 展开态可左右拖动查看更多卡片:

    • 初始展开界面时,每日任务标题与卡片组件定位最左侧,此时界面不可向右拖动。
    • 初始向左拖动时,每日任务组件跟随卡片可根据拖动移出到界面外,赛季任务标题组件与卡片可随拖动移动到左侧,如图。
    • 赛季任务标题到左侧时不会移动到屏幕外,继续拖动将只移动赛季任务的卡片部分。
      • 此时向右拖动到底每日任务组件可回到界面内。
  • 展开态时,任务界面内由左到右有若干个slot,按上文(任务排序规则)提到的排序展示任务。

    • 其中slot内含有任务卡片,卡片主要包含可领取态与进行态(样式复用4.4.3收起态的描述),及以下状态:

    • 可领取态:

      • 在界面展开状态点击可领取态的任务时,展开态关闭为收起态,播放领取已完成任务的相关动效(4.4.3可领取态动效)。
      • 此时同时进行收起态的slot维护,不会将点击完成的任务填充进收起态的slot1。
      • 已领取的赛季任务卡片不再展示,在展开态中需判断任务类型。
        • 若为每日任务,则领取完后需在对应slot处展示待刷新态卡片。
    • 进行态:点击进行态的任务,执行4.4.3进行态中相同的描述。

    • 战令专属态(未解锁态):卡片任务进度条与奖励处盖有蒙版,蒙版上方展示文字:“战令专属任务”

    • 待刷新态

      image.png

      • 作假表现,客户端自行维护展示,如下图展示,该卡片无点击事件
      • 如图该卡片有两种样式,根据config(全局变量表)的key=300控制两种样式的生成数量
        • Data1=等待刷新卡片的数量。
        • Data2=等待刷新(战令专属)卡片的数量。
    • 根据排序,一般展示在其他形态卡片末尾,在没有其他可进行任务时,展示待刷新态卡片。

    • 等待刷新(包含等待刷新 战令专属)的卡片符合对齐条件,应归类展示,但等待刷新 战令专属卡片,应展示在该类型卡片的末尾。