占领模式战场规则

更新日志

日期 内容 作者
2023年3月4日 创建文档 朱兴韬
2023年3月10日 新增占领点HUD描述 朱兴韬
2023年4月17日 移除平局结算规则 朱兴韬

一、设计目的

引入新的战场玩法,以增加游戏的多样性,提高竞技趣味,并促进游戏长期玩家留存。

二、功能概述

占领模式的玩法规则规则、功能交互,明确定义占领模式的胜负规则以及玩家的体验流程。

三、功能规则

3.1 占领模式玩法规则

  • 占领模式中,战场上散布着多个占领点,每个占领点每秒都会产生一定数量的胜利点数。胜利的关键在于,当任意一队的胜利点数首先达到设定值时,该队将获胜。游戏的核心目标是争夺这些占领点,需要不断争夺和保卫以保持领先地位。

3.2 占领点预制

  • 占领点将采用触发器(Trigger)的预制体,用于在客户端检测触发器范围内的队伍数量,从而实现占领交互。占领区域的大小将由触发器预制体的碰撞范围决定。

  • 占领状态将分为3个状态,一旦变为已占领状态,将无法再次变回中立状态,只能更改占领点的归属方:

    • 中立状态(灰色):初始状态,不产生胜利点数。
    • 我方状态(蓝色):已占领,产生胜利点数,计入我方队伍。
    • 敌方状态(红色):已占领,产生胜利点数,计入敌方队伍。
  • 占领规则包括以下情况:

    • 中立状态下:

      • 场景1:当占领区域内只有1个队伍时,开始占领。占领时间应从触发器的captureTime字段读取(单位:毫秒)。占领时间结束后,占领点的归属将变为触发占领时间的队伍(不属于该队伍的占领点才会触发captureTime的计算)。
      • 在占领过程中,如果占领点内的队伍之一离开该区域,则该队伍的captureTime将逐渐重置为0。
      • 场景2:如果占领过程中,占领区域内有其他队伍进入,占领将暂停。占领时间会继续计算,但只有占领点内只有1个队伍时,占领时间才能继续计算。
      • 场景3:如果A队伍占领一个点,B队伍进入该区域并驱逐A队伍,需要等待已经计算的captureTime逐渐重置为0,才能再次触发captureTime
        • 如果在此过程中,A队伍重新进入占领区域,清零过程将暂停。此时,A队伍将B队伍的玩家驱逐出占领点,清零的captureTime会逐渐回满。
    • 已占领状态下:

      • 场景1:当占领区域内没有我方玩家,敌对玩家进入占领区域,开始占领。占领时间将从触发器的captureTime字段读取(以毫秒为单位)。占领时间结束后,占领点的归属将变为触发占领时间的队伍(不属于该队伍的占领点才会触发captureTime的计算)。
      • 场景2:占领过程中,占领区域内有其他队伍进入,占领将暂停。只有在占领点内只有敌对队伍时,占领时间才会继续计算。
      • 场景3:占领过程中,如果敌对队伍的玩家被驱逐出占领区域,已经计算的captureTime将逐渐重置为0。
        • 如果在清零期间,敌对队伍重新进入占领区域,清零进程将暂停。
  • 占领点会根据占领预制体的getPointPerSecond字段,每秒为占领点的归属方增加胜利点数。每秒都会计算每支队伍拥有的占领点,从而决定胜利点数。

  • 占领点的UI样式将包括以下元素:

    • 占领点名称:通过name#string字段配置,用于在UI中显示,只允许填写大写英文字母A-Z。
    • 占领点图标样式:在预制体内提供下拉选项,包括L/S/M,用于控制占领点图标的UI位置。

3.3 胜负与结算规则

触发结算条件:

  1. 战场时间限制(roundTime#float)内,任何一方率先达到occupyWinPoint#int的胜利点数,即可获胜。
    • 胜利方:达到胜利点数的一方将获胜。
    • 失败方:结算时拥有的胜利点数较少的一方将失败。
  2. 如果在战场的时间限制(roundTime#float)内,没有任何一方达到胜利点数,比赛将在时间结束后进行结算。
    • 胜利方:在结算时拥有胜利点数更多的一方将获胜。
    • 失败方:在结算时拥有胜利点数较少的一方将失败。

3.4 占领模式配置

  • 占领点预制将包括以下字段以支持功能实现:

    字段名 类型 描述
    captureTime int 占领时间(毫秒)
    getPointPerSecond int 每秒获得的胜利点数
    pic string 占领点图片路径(数组,每个状态有3张图)
  • 客户端战局配置:

    • 引入占领模式配置表:capture_target_cfg,用于配置占领模式的相关信息。
    • 以下是新增字段:
    字段名 类型 描述 备注
    occupyWinPoint int 胜利点数 新增字段
    occupyPointFx string 胜利点数增长特效,配置数组,大于等于该分数展示的特效 新增字段
    roundTime float 比赛时长 复用
    noticeSelfTeamScoreHalf int 通知-我方获胜进度已过半
    我方拥有胜利点数大于等于occupyWinPoint/2时
    规则变更
    noticeEnemyTeamSocreHalf int 通知-敌方获胜进度已过半
    对方拥有胜利点数大于等于occupyWinPoint/2时
    规则变更
    noticeWinRemain int 通知-再击败{0}名敌人即可获胜 –> 通知-再获得{0}分数即可获胜 规则变更
    occupyWeaponDelTime int 占领模式武器掉落消失时间 新增字段
    occupyResurgenceType int 占领模式死亡后复活方式 新增字段
    occupyResurgenceTime int 占领模式复活等待时间 新增字段
    occupyResurgenceBuff int 占领模式复活时添加buffId 新增字段
  • 战服与平台配置:

    • 新增gameId=5000,表示占领玩法规则
    • 新增gameType=600,表示占领游戏类型

3.5 占领模式交互表现

  • 不同状态的占领点样式

    • 我方点位:蓝色:

      image.png

    • 敌方点位:红色:

      image.png

    • 中立点位:灰色:

      image.png点位进度条:根据不同队伍触发的captureTime,展示进度条,绕占领点底一周展示。

  • 模式UI:需要展示以下内容。

    image.png

    • A 分数情况:分别展示两队的当前分数,需展示进度条与具体数值。

    • B 占领点情况:地图内所有点位的占领情况(我方归属、敌方归属、中立)。

      • 占领点图标根据占领点预制的pic字段展示。
    • C 胜利点增加情况:每秒有跳字效果,根据当前不同的加分值展示不同特效,根据模式配置表的occupyPointFx字段索引特效。

    • 占领过程:我方captureTime触发时,若角色在该占领区域内,则展示正在占领UI。

      image.png

    • 占领点HUD界面:占领点上方需根据预制内的Pic配置,展示对应的HUD界面,实现方式参照血条。

      image.png

      • 显示层级:该HUD在场景中穿透墙壁,但会被任意Caster遮挡。

3.5 占领模式交互表现

四、美术需求

4.1 美术需求清单

名称 需求类型 描述图片
占领点模式UI:包含进度条、占领图标(我方归属、敌方归属、中立);图标大小需设计3个级别(使用边框区分),用于区分不同占领点的重要程度;当前点位的摆放方式也需要设计:小x2、中x1、大x1
占领点图标内部根据地图场景,设计贴合地图场景的剪影
UI image.png
占领进程进度条UI UI image.png
占领点HUD UI image.png
占领点地板贴图 模型贴图 image.png
归属权更换场景特效 特效 由占领点中心向占领点四周播放白色波纹
占领进度条特效:缓慢流动光效 特效 image.png