Files
HEROLL/HEROLL_OUTGAME_DEV_v1.0/13-抽卡与保底/设计与规则.md
T

137 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 抽卡与保底:原作设计与规则
版本:HEROLL 2.0.1 原作还原文档 v1.0。
## 1. 功能定位
抽卡由三个部分组成:玩家点击的抽卡按钮、按钮指向的奖励池、该池的保底规则。它们必须按池类型关联,不能按按钮名称或显示文字推断价格和保底。
## 2. 主要状态
下面是开发阅读所需的概念状态,属于开发映射,不要求与原作内部字段同名。
| 状态 | 用途 |
| --- | --- |
| 抽卡池类型 | 决定奖励候选 |
| 按钮档 | 决定抽数和消费 |
| 池保底计数 | 按池区分 |
| 广告周期使用状态 | 独立于付费次数 |
| 替代道具余额 | 用于展示抵扣 |
## 3. 功能规则
### 3.1 按钮与消费
shopGacha单抽配置钻石30、十连300。替代道具为204,抵扣字段30表示单道具可替代的资源量,不能显示成每抽消耗30张券。另有消耗资源110×35的按钮及每日广告按钮。
### 3.2 奖励池
奖励行同时记录类型、品质、ID、数量和权重。相同池类型才属于同一候选组;奖励ID为-1时表示指定类型全池,仍须保留奖励类型。
### 3.3 保底
高级装备池20次保底、提前命中重置标记False;增强装备池50次、重置标记False;坐骑池400次、重置标记True。坐骑记录名字虽带50,真实次数以400为准。
### 3.4 概率表达
配置权重先按池分组再讨论归一化,不能将某行权重100直接写成100%掉落。十连如何逐次推进保底及命中保底的优先级仍需要原作执行证据。
## 4. 操作流程
以下顺序用于拆解功能;涉及未确认的结算时机,以本章末尾具体缺口为准。
1. 由按钮找到池类型、抽数、成本和免费广告标记。
2. 读取同池候选与保底规则,展示价格及保底目标。
3. 抽取结果保留奖励类型、ID、数量,交给对应内容模块展示。
4. 更新计数的精确时点及十连分支待确认,不把整次十连当作一次保底进度。
## 5. 关键数值与计算
| 项目 | 数值 | 状态 |
| --- | --- | --- |
| shopGacha单抽:道具101消耗30,存在替代道具204 | gachaCount=1;needItemID=101;needCount=30;isAlterBtn=True;alterItemID=204;alterCount=30 | 原作配置确认 |
| shopGacha十连:道具101消耗300;抵扣值并非已确认券消耗数 | gachaCount=10;needItemID=101;needCount=300;alterItemID=204;alterCount=30 | 原作配置确认 |
| 高级装备保底次数及提前命中重置标记 | type=advancedEquipmentGacha;ceilCount=20;isResetBeforeCeil=False;ceilRewardString=advancedEquipmentGacha_EQUIPMENT_3_-1_FALSE_1 | 原作配置确认 |
| 增强装备保底次数及提前命中重置标记 | type=enhancedEquipmentGacha;ceilCount=50;isResetBeforeCeil=False;ceilRewardString=enhancedEquipmentGacha_EQUIPMENT_3_-1_TRUE_1 | 原作配置确认 |
| 坐骑保底必须读取ceilCount=400;StringId尾部50不是实际次数 | type=mount_Gacha;ceilCount=400;isResetBeforeCeil=True;ceilRewardString=mount_Gacha_ITEM_0_169_FALSE_1 | 原作配置确认 |
### 5.A 权重检查公式
对指定池、并假定该池所有记录均按权重参与时,`P(i)=weight(i)/Σweight(pool)`。保底和动态筛选不在此式内,见[条件概率检查](./抽卡条件概率.csv)。
### 抽卡操作与成本(全表)
| ID | 名称/键 | 类型/分组 | 抽取次数 | 免费标记 | 广告按钮标记 | 消耗道具ID | 消耗数量 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | shopGacha_0_1 | shopGacha | 1 | False | False | 110 | 35 |
| 2 | shopGacha_1_1 | shopGacha | 1 | False | False | 101 | 30 |
| 3 | shopGacha_2_10 | shopGacha | 10 | False | False | 101 | 300 |
| 4 | shopGacha_3_1 | shopGacha | 1 | False | True | | |
| 5 | relicGacha_0_1 | relicGacha | 1 | False | True | | |
| 6 | relicGacha_1_1 | relicGacha | 1 | False | False | 125 | 100 |
| 7 | relicGacha_2_5 | relicGacha | 5 | False | False | 125 | 500 |
| 8 | advancedRelicGacha_0_1 | advancedRelicGacha | 1 | False | True | | |
| 9 | advancedRelicGacha_1_1 | advancedRelicGacha | 1 | False | False | 125 | 500 |
| 10 | advancedRelicGacha_2_5 | advancedRelicGacha | 5 | False | False | 125 | 2500 |
| 11 | equipmentGacha_0_1 | equipmentGacha | 1 | False | True | | |
| 12 | equipmentGacha_1_1 | equipmentGacha | 1 | False | False | 101 | 20 |
| 13 | equipmentGacha_2_5 | equipmentGacha | 5 | False | False | 101 | 100 |
| 14 | advancedEquipmentGacha_0_1 | advancedEquipmentGacha | 1 | False | True | | |
| 15 | advancedEquipmentGacha_1_1 | advancedEquipmentGacha | 1 | False | False | 101 | 50 |
| 16 | advancedEquipmentGacha_2_10 | advancedEquipmentGacha | 10 | False | False | 101 | 500 |
| 17 | enhancedEquipmentGacha_0_1 | enhancedEquipmentGacha | 1 | False | False | 101 | 100 |
| 18 | enhancedEquipmentGacha_1_10 | enhancedEquipmentGacha | 10 | False | False | 101 | 1000 |
| 19 | superballNormalGacha_0_1 | superballNormalGacha | 1 | False | True | | |
| 20 | superballAdvancedGacha_0_1 | superballAdvancedGacha | 1 | True | False | | |
| 21 | superballEnhancedGacha_0_1 | superballEnhancedGacha | 1 | False | True | | |
| 22 | mount_Gacha_0_1 | mount_Gacha | 1 | False | False | 167 | 1 |
| 23 | mount_Gacha_1_10 | mount_Gacha | 10 | False | False | 167 | 10 |
### 抽卡保底(全表)
| ID | 名称/键 | 类型/分组 | 保底次数 | 保底前命中是否重置标记 | 保底奖励Gacha字符串键 |
| --- | --- | --- | --- | --- | --- |
| 1 | advancedEquipmentGacha20 | advancedEquipmentGacha | 20 | False | advancedEquipmentGacha_EQUIPMENT_3_-1_FALSE_1 |
| 2 | enhancedEquipmentGacha50 | enhancedEquipmentGacha | 50 | False | enhancedEquipmentGacha_EQUIPMENT_3_-1_TRUE_1 |
| 3 | mount_00_Gacha50 | mount_Gacha | 400 | True | mount_Gacha_ITEM_0_169_FALSE_1 |
## 6. 原作中文内容
中文名称和效果使用原作文本;{0}、{B}等占位符未确认绑定时保留,文字不能代替参数公式。
本模块主要由数值和键值组成,原作文本对照见同目录CSV。
## 7. 开发权威表
| 配置用途 | 权威原字段表 | 记录数 | 开发阅读表 |
| --- | --- | --- | --- |
| 抽卡操作与成本 | [gachatype.csv](./gachatype.csv) | 23 | [中文目录](./gachatype-中文目录.csv) |
| 抽卡候选奖励 | [gacha.csv](./gacha.csv) | 60 | [中文目录](./gacha-中文目录.csv) |
| 抽卡保底 | [gachaceildata.csv](./gachaceildata.csv) | 3 | [中文目录](./gachaceildata-中文目录.csv) |
[执行规则](./执行规则.csv) · [状态字段](./状态字段.csv) · [验收样例](./验收样例.csv) · [字段字典](./字段字典.csv) · [关联全局配置](./关联全局配置.csv)
全局键按模块名称关联收录;其具体含义优先以正文已确认的规则为准。
| 配置键 | 原值 |
| --- | --- |
| enhancedGachaUnlockStage | 2 |
## 8. 开发验收与禁止误写
| 输入 | 检查内容 | 预期 |
| --- | --- | --- |
| 读取gachatype中StringId=shopGacha_1_1 | 查询本条配置并核对界面/配置输出 | gachaCount=1;needItemID=101;needCount=30;isAlterBtn=True;alterItemID=204;alterCount=30 |
| 读取gachatype中StringId=shopGacha_2_10 | 查询本条配置并核对界面/配置输出 | gachaCount=10;needItemID=101;needCount=300;alterItemID=204;alterCount=30 |
| 读取gachaceildata中StringId=advancedEquipmentGacha20 | 查询本条配置并核对界面/配置输出 | type=advancedEquipmentGacha;ceilCount=20;isResetBeforeCeil=False;ceilRewardString=advancedEquipmentGacha_EQUIPMENT_3_-1_FALSE_1 |
| 读取gachaceildata中StringId=enhancedEquipmentGacha50 | 查询本条配置并核对界面/配置输出 | type=enhancedEquipmentGacha;ceilCount=50;isResetBeforeCeil=False;ceilRewardString=enhancedEquipmentGacha_EQUIPMENT_3_-1_TRUE_1 |
| 读取gachaceildata中StringId=mount_00_Gacha50 | 查询本条配置并核对界面/配置输出 | type=mount_Gacha;ceilCount=400;isResetBeforeCeil=True;ceilRewardString=mount_Gacha_ITEM_0_169_FALSE_1 |
验收样例覆盖已经确认的值;流程中的未知分支不能以本表通过代替规则确认。数值表内的空值、0和-1分别保留;升级数组不默认使用玩家等级作为索引。
## 9. 当前待补充边界
十连逐抽结算、券抵扣不足时的组合支付、跨池计数以及保底命中顺序尚待确认。
[返回总纲](../局外玩法设计文档_HEROLL_原作_v1.0.md) · [阅读规范](../文档规范与阅读说明.md)