《超级购物袋》游戏技术配置与开发规范 (PRD v2.1)
一、项目总览
1.1 核心玩法
玩家在每关中,从随机生成的商品列表中选择若干件装入购物袋,目标是在不超重的前提下,使总价值达到或超过关卡目标价值,从而通关并获得积分奖励。
1.2 设计铁律
- 动态生成,静态规则:每关物品随机,但关卡核心参数(购物袋上限、目标价值百分比)由固定公式计算,确保难度曲线可控、公平。
- 策略至上,数值平衡:通过严谨的物品属性范围和生成规则,确保无“必选”或“必不选”的破坏性物品,所有选择均存在策略权衡。
- 商业结合:物品池设计可体现公司商品的高性价比特性。
二、核心系统与公式
2.1 关卡参数公式
以下公式为游戏平衡的基石,开发中必须严格实现。
| 参数 | 计算公式 | 说明 | 计算结果示例 |
|---|---|---|---|
| 购物袋上限 (kg) | 160 + N * 15 + floor(N^1.7) | N为当前关卡(1-5),floor为向下取整。此公式确保第5关可容纳最重物品。 | 第1关: 176kg 第2关: 193kg 第3关: 211kg 第4关: 230kg 第5关: 250kg |
| 目标价值百分比 | 70% + (N - 1) * 7.5% | 用于计算每关目标价值,难度线性递增。 | 第1关: 70% 第2关: 77.5% 第3关: 85% 第4关: 92.5% 第5关: 100% |
2.2 目标价值计算流程
- 根据“3.2 关卡生成规则”生成本关物品列表。
- 对该列表使用贪心算法(按
价值/重量降序拿取,不超上限)得到一个“近似最优解”的价值GreedyValue。 - 本关目标价值 =
GreedyValue * 本关目标价值百分比(结果向上取整)。
2.3 积分与评级系统
- 单关积分公式:
本关得分 = 30 + (实际达成价值 / 本关目标价值) * 60(计算结果四舍五入取整)。 (注:单关满分约为90分,五关完美总分约509分) - 总分与评级:游戏结束时,根据累计总分和是否通关第五关确定最终评级及奖励。
| 评级 | 达成条件 | 奖励用户积分 |
|---|---|---|
| S | 1) 通关第五关;2) 总分 ≥ 450 | 200 |
| A | 总分 ≥ 350 | 100 |
| B | 总分 ≥ 250 | 50 |
| C | 总分 < 250 | 0 |
三、物品系统与关卡生成
3.1 物品属性定义与约束
所有物品必须在后台配置以下字段,并严格遵守以下数值范围约束,这是防止游戏性被破坏的第一道防线。
{
“id”: 1, // 数字,唯一标识
“name”: “健身袜”, // 字符串,商品名称
“image”: “socks.png”, // 字符串,图片资源路径
“value”: 300, // 数字,价值。范围建议 50 - 3000
“weight”: 10, // 数字,重量。**最大不得超过250**
“type”: 1, // 数字,性价比类型 (1-5)
“unlock_level”: 1 // 数字,解锁关卡。默认1,表示第1关即可出现
““rarity””: null // null或者字符串,稀有度
}
🚨 物品添加四大铁律 (防崩坏规则 - v2.1修正)
后续任何新物品的添加,必须通过此清单审查:
- 物理法则:物品重量
weight必须 ≤ 其unlock_level对应关卡的购物袋上限。- 例如:若
unlock_level=1,则重量不得超过 176。
- 例如:若
- 死局规避铁律:
- 大重量生存权:若物品重量 > 100,其性价比 (
value/weight) 必须 ≥ 10。 - 说明:防止大重量低性价比物品占满购物袋导致 mathematically impossible to win。此类物品应作为“高价值但笨重”的策略品存在,而非纯陷阱。
- 纯陷阱限制:若物品为 低性价比陷阱 (性价比 < 5),其重量必须 ≤ 20。
- 说明:真正的陷阱必须是小件物品,用于干扰决策,而不是直接摧毁游戏。
- 大重量生存权:若物品重量 > 100,其性价比 (
- 性价比平衡审查:
- 避免“超神”物品:新物品的价值重量比不应超过同类型(
type)现有最优物品的1.5倍。
- 避免“超神”物品:新物品的价值重量比不应超过同类型(
- 策略定位明确:每个物品应有清晰的定位(如核心、主力、填充、陷阱)。
性价比类型 (type) 定义 (v2.1修正)
此类型是关卡生成模板的核心筛选依据。
| type | 名称 | 价值重量比范围 | 策略定位 | 示例物品 (价值/重量) |
|---|---|---|---|---|
| 1 | 极高性价比 | > 25 | 核心策略品,重量极轻,是构建组合的基础。 | 运动发带 (80/2=40) |
| 2 | 高性价比 | 10 ~ 25 | 主力得分品,需要权衡选择。 | 速干T恤 (400/25=16) |
| 3 | 中性价比/填充品 | 5 ~ 10 | 灵活填充剩余空间。 | 超轻跑鞋 (1000/100=10) |
| 4 | 高风险/策略品 | 2.5 ~ 16 | 包含两类: 1. 小重量陷阱 (Ratio < 5):干扰项。 2. 大重量策略品 (Ratio > 10):高风险高回报。 | 陷阱: 纪念徽章(20/5=4) 策略: 露营帐篷(2500/170=14.7) |
| 5 | 特殊/平衡品 | 变动范围 | 特殊功能或平衡调整。 | 智能手环 (350/5=70) |
3.2 关卡生成规则
游戏采用 “通用物品池 + 生成模板 + 稀有度替换” 方案,并允许重复抽取同一物品。
- 总物品池:包含所有已配置的物品(含普通物品和稀有物品)。
- 单关生成步骤:
a. 筛选基础池:从总池中筛选出
unlock_level≤ 当前关卡数N 的所有物品。 b. 按模板抽取普通列表:根据当前关卡N的“生成模板”(下表),从基础池的非稀有物品(rarity字段为null) 中,按类型要求随机抽取指定数量的物品,生成初始普通列表。 c. 稀有物品概率替换: i. 准备一个空的稀有物品候选列表。 ii. 遍历初始普通列表中的每一个物品槽位,为每个槽位独立进行概率判断: * 随机一个0-100的数。 * 若数 ≤ 0.5,则从基础池中随机选取一个符合当前关卡type要求的SSR物品,加入候选列表。 * 若 0.5 < 数 ≤ 3,则随机选取一个SR物品加入候选列表。 * 若 3 < 数 ≤ 10,则随机选取一个R物品加入候选列表。 * 若数 > 10,则该槽位不产生稀有物品候选。 d. 应用稀有度数量限制(核心): i. 总量限制:若候选列表物品总数 > 4,则随机保留4个(优先级:SSR > SR > R)。 ii. 分档限制:检查保留后的列表,确保:SSR数量 ≤ 1,SR数量 ≤ 2,R数量 ≤ 3。若超出,随机舍弃多余的较低稀有度物品。 iii. 替换:将最终保留的稀有物品,按顺序替换初始普通列表中最早的那些未被标记为稀有的槽位物品,形成最终物品列表。 e. 最终验证:验证最终列表是否存在可行解(贪心算法检查)。若无解,则返回步骤b重新生成。
3.2.1 关卡生成模板
| 关卡(N) | 抽取物品数量 | 类型模板要求 (type) | 策略目的 |
|---|---|---|---|
| 1 | 6-8件 | 必须包含至少2件 type=1,其余从 type=2, 3 中抽取。 | 开局即充满选择与迷惑。 |
| 2 | 8-10件 | 从 type=1, 2, 3 中混合抽取。必须有1-2件 type=4。 | 引入干扰项,提升决策复杂度。 |
| 3 | 10-12件 | 必须包含至少2-3件 type=4,其余从 type=1, 2, 3 中充分混合。 | 强化对抗诱惑,规划核心组合。 |
| 4 | 12-14件 | 从 type=1, 2, 3, 4 中按比例混合抽取,可包含1件 type=5。 | 全面计算考验,近乎真实的购物袋问题。 |
| 5 | 14-16件 | 从所有类型(type=1-5)中充分混合抽取。 | 终极策略博弈,寻找理论最优解。 |
四、预设物品池 (20件)
以下是可直接用于初始化数据库的、符合所有约束的20件商品配置。
[
{“id”: 1, “name”: “健身袜”, “value”: 300, “weight”: 10, “type”: 1, “unlock_level”: 1, “rarity”: null},
{“id”: 2, “name”: “运动发带”, “value”: 80, “weight”: 2, “type”: 1, “unlock_level”: 1, “rarity”: null},
{“id”: 3, “name”: “透气鞋垫”, “value”: 150, “weight”: 5, “type”: 1, “unlock_level”: 1, “rarity”: null},
{“id”: 4, “name”: “速干T恤”, “value”: 400, “weight”: 25, “type”: 2, “unlock_level”: 1, “rarity”: null},
{“id”: 5, “name”: “瑜伽垫”, “value”: 600, “weight”: 40, “type”: 2, “unlock_level”: 1, “rarity”: null},
{“id”: 6, “name”: “运动水壶”, “value”: 180, “weight”: 15, “type”: 2, “unlock_level”: 1, “rarity”: null},
{“id”: 7, “name”: “训练手套”, “value”: 220, “weight”: 20, “type”: 2, “unlock_level”: 1, “rarity”: null},
{“id”: 8, “name”: “超轻跑鞋”, “value”: 1000, “weight”: 100, “type”: 3, “unlock_level”: 1, “rarity”: null},
{“id”: 9, “name”: “综合训练器”, “value”: 800, “weight”: 90, “type”: 3, “unlock_level”: 1, “rarity”: null},
{“id”: 10, “name”: “健身包”, “value”: 450, “weight”: 60, “type”: 3, “unlock_level”: 1, “rarity”: null},
{“id”: 11, “name”: “跳绳”, “value”: 120, “weight”: 15, “type”: 3, “unlock_level”: 1, “rarity”: null},
{“id”: 12, “name”: “运动毛巾”, “value”: 90, “weight”: 10, “type”: 3, “unlock_level”: 1, “rarity”: null},
{“id”: 13, “name”: “高端休闲鞋”, “value”: 900, “weight”: 150, “type”: 4, “unlock_level”: 2, “rarity”: null},
{“id”: 14, “name”: “限量联名外套”, “value”: 1500, “weight”: 250, “type”: 4, “unlock_level”: 2, “rarity”: null},
{“id”: 15, “name”: “豪华运动套装”, “value”: 1200, “weight”: 220, “type”: 4, “unlock_level”: 2, “rarity”: null},
{“id”: 16, “name”: “智能手环”, “value”: 350, “weight”: 5, “type”: 5, “unlock_level”: 3, “rarity”: null},
{“id”: 17, “name”: “能量补给盒”, “value”: 200, “weight”: 30, “type”: 5, “unlock_level”: 1, “rarity”: null},
{“id”: 18, “name”: “折叠自行车”, “value”: 2000, “weight”: 180, “type”: 5, “unlock_level”: 2, “rarity”: null},
{“id”: 19, “name”: “运动护具套装”, “value”: 320, “weight”: 40, “type”å: 5, “unlock_level”: 1, “rarity”: null},
{“id”: 20, “name”: “团队运动球”, “value”: 500, “weight”: 70, “type”: 5, “unlock_level”: 1, “rarity”: null}
]
五、游戏流程与交互
5.1 主要游戏流程
- 开始游戏 -> 加载第1关(按3.2规则生成物品、计算上限与目标)。
- 玩家选择物品 -> 实时显示当前总重量/总价值。
- 玩家可随时:A) 使用“超级手”道具移除物品;B) 点击“提前结算”结束游戏;C) 点击“提交”验证。
- 提交后验证:
- 超重 -> 失败。
- 未超重但价值不足 -> 失败。
- 均达标 -> 成功,结算本关积分,进入下一关。
- 失败或主动结算时,弹出结算窗口,根据累计总分显示评级与奖励。
5.2 道具系统
- 名称:超级手
- 功能:移除一个已选中的物品。
- 获取:初始赠送2个。可用 50用户积分 购买。
- 使用规则:随时点击使用,再点击目标物品即可移除。移除后不强制提交。
5.3 前端交互关键点
- 主界面布局:顶部状态栏(关卡/上限/目标)。中部物品图标网格。底部状态栏(当前重量/价值)。底部按钮组(提前结算、提交、使用超级手)。
- 结算弹窗:
- 标题:
闯关结束! - 正文:
当前评分:[S/A/B/C] - 按钮(从上到下垂直排列):
使用超级手(仅当拥有道具时显示)重新开始(点击后游戏重置,从第一关开始)
- 标题:
- “提前结算”按钮:位于按钮组最左侧,需二次确认。
六、数据上报 (供省份排名)
游戏结束时(无论成功失败),前端上报以下数据:
{
“user_id”: “用户唯一标识”,
“session_id”: “本次游戏会话ID”,
“final_score”: 380, // 最终总积分
“rating”: “A”, // 最终评级
“province”: “浙江省”, // 用户所在省份
“timestamp”: “2023-10-27T10:30:00Z”
}
7. 图鉴与稀有度系统
7.1 物品属性扩展
在物品基础配置中,需增加 rarity(稀有度)字段。
{
… // 原有字段 (id, name, value, weight, type, unlock_level)
“rarity”: “SSR”, // 稀有度标签。可选值: null(普通), “R”, “SR”, “SSR”
}
- 稀有度定义:
R(稀有),SR(超稀有),SSR(特级稀有)。 - 核心规则:稀有度与物品的强度(性价比类型
type)完全独立。一个SSR物品可以是低性价比陷阱(type=4),一个普通物品(rarity: null)也可以是极高性价比(type=1)。
7.2 稀有物品生成规则 此规则与 3.2 节 的流程配合,共同作用。
- 出现概率:在生成每关物品列表时,每个物品槽位有独立概率被稀有物品替换:
- SSR: 0.5%
- SR: 3%
- R: 10%
- 数量限制(必须遵守):
- 单关内,SSR最多出现1个,SR最多2个,R最多3个。
- 单关内,所有稀有物品总数不超过4个。
- 稀有物品的性价比类型(
type) 必须符合当前关卡的生成模板要求。
- 生成流程:详见 3.2 节 的步骤c与d。
7.3 图鉴系统
- 解锁条件:当一件物品被玩家成功装入购物袋并完成关卡提交后,无论本关成功与否,该物品即在玩家的个人图鉴中永久解锁。
- 图鉴界面:
- 以网格形式展示所有物品的图标。
- 已解锁:彩色显示,点击可查看详情(名称、价值、重量、稀有度、趣味描述)。
- 未解锁:灰色显示并带有“?”遮挡。
- 显示总收集进度:
已收集:X / 总数。