mcpField
G
game-balance

game-balance

github.com/pbzona开发247 次安装14 周前更新
代码仓库

关于 game-balance

game-balance 是一项游戏平衡技能,围绕可测目标、明确假设和证据组织平衡工作。它指导设计者进行建模、确定性检查、模拟、试玩、遥测和受控调优,且不依赖特定游戏引擎。

主要功能

  1. 01可测试的平衡契约
  2. 02属性与电子表格建模
  3. 03曲线、经济与概率分析
  4. 04确定性检查与模拟
  5. 05试玩和遥测指导
  6. 06受控调优与回滚

适用场景

  1. 01建模武器或角色取舍
  2. 02调查成长与经济问题
  3. 03规划随机奖励系统测试
  4. 04用遥测诊断平衡改动

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pbzona/godot-skills --skill game-balance

安装后在 Claude Code 中输入/game-balance确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
economies-and-probability.md
quantitative-modeling.md
simulation-telemetry-and-tuning.md

详细介绍

游戏平衡

平衡是指针对特定玩家、情境和时间范围,调整数值与规则以实现预期体验。这并不意味着让每个选项都完全相同。

保持引擎无关。将可调输入、公式、假设、场景和检查项放入可供检查的资料中。只有在模型和证据明确后,才编写实现指导。

核心原则

  • 从可衡量的设计目标出发,而不是从偏好的数值出发。
  • 对每项平衡结论,说明适用的玩家群体、技能水平、情境和时间范围。
  • 保留有意义的差异。各选项的预期价值可以相同,但在风险、时机、信息、操作负担或情境适配性上仍可不同。
  • 只有当玩家可以选择、理解该选项,并认为它确实可行时,才能将玩家选择视为证据。
  • 将原始输入、派生指标、面向玩家的显示值和观测结果分开。
  • 集中管理共享参数。不要在多个公式中重复填写同一个平衡常数。
  • 用基准支点比较大量对象,再交叉测试不常见的交互。
  • 根据期望的边际变化选择曲线形状,而不是凭习惯决定。
  • 将经济系统作为跨时间的流量和存量来分析,而不是只看价格表。
  • 根据分布和尾部风险分析随机结果,不要只看预期值。
  • 优先进行确定性检查;针对相互作用或随机行为使用模拟;通过游戏测试评估体验;通过遥测分析大规模行为。
  • 一次只调整一个因果杠杆或一组连贯的杠杆,并保留回滚方案。

前期调研

更改数值之前,先检查现有规则、电子表格、数据导出、代码/配置、测试结果、模拟和遥测定义。明确以下内容:

  • 平衡问题和观测到的症状。
  • 预期的玩家体验和成功的定义。
  • 玩家细分群体、技能水平、模式、地图、遭遇战和进度阶段。
  • 相关时间范围:操作、遭遇战、对局、天、赛季或整个生命周期。
  • 候选选项及其可用时机。
  • 属性、公式、依赖关系、单位、范围、舍入规则和上限。
  • 当前事实来源和数据管道。
  • 可用证据及其样本/情境局限。
  • 生产、公平性、无障碍、商业和法律限制。

如果信息缺失,应标注假设,并设计尽可能小的测量或实验来替代这些假设。

工作流

1. 编写平衡约定

使用可测试的陈述:

For [player segment] in [context] over [horizon],
[primary metric] should remain within [target range],
while [guardrail metrics] remain within [ranges].
We will change [decision] if [evidence threshold] is crossed.

有效目标维度示例包括解决问题所需时间、不同技能水平玩家的成功率、不同情境下的选择多样性、恢复机会、进度所需时间、资源盈余、奖励空窗期和感知清晰度。

不要默认将选择率设为相同或胜率设为 50%。说明目标为何符合游戏的设计目的。

2. 定义比较情境

列出数值可比的条件:

  • 玩家技能和知识水平。
  • 对手或挑战的类型。
  • 地图、距离、队伍规模和模式。
  • 起始资源和持续生效的能力。
  • 输入方式、延迟和操作假设。
  • 持续时间和停止条件。

将不兼容情境合并为全局平均值,并不能得出平衡结论。应先细分,再汇总。

3. 建立属性模型

对于每个对象和属性,定义其含义、单位、有效范围、来源、可见性、可变性,以及会使用该属性的机制。将属性标记为:

  • 输入:直接调整的数值。
  • 派生:根据输入计算得出。
  • 情境:由场景提供。
  • 结果:通过游戏或模拟测得。
  • 显示:为玩家舍入或转换后的数值。

使用 定量建模 编写平衡简报、工作簿布局、属性工作表、归一化、支点、公式、曲线和原始示例。

4. 组织电子表格或模型

至少应分为以下部分:

  1. 阅读说明、假设、单位和变更历史。
  2. 参数和命名常量。
  3. 实体输入。
  4. 曲线和查找表。
  5. 派生计算。
  6. 代表性场景。
  7. 不变量和错误检查。
  8. 结果、分布和图表。
  9. 原始模拟或游戏测试导入数据。

每个可比较对象占一行,每个属性占一列。验证输入类型和取值范围。调试时让中间计算保持可见;只有验证完成后才将其隐藏或分组。

5. 确定范围和基准点

将不同单位归一化,以便比较:

normalized = clamp((value - minimum) / (maximum - minimum), 0, 1)
value = minimum + normalized * (maximum - minimum)

选择一个具有代表性且刻意保持普通的对象或场景作为基准点。在此基础上扩展出一系列对象前,先在常见情境中验证它。

使用结果指标而非属性原始总和,将每个变体与基准点进行比较。加权得分相同只是一个假设,并非证据。交叉测试极端情况、克制关系、组合,以及规则与基准点不同的选项。

6. 根据边际效应选择曲线

同时检查总值和每一步的变化量。

  • 线性:绝对增量恒定。
  • 指数:比例增量恒定;适用于复利增长或快速上涨的成本。
  • 幂函数曲线:可调整加速或减速程度。
  • 饱和或对数曲线:前期收益较大,之后收益递减。
  • 分段曲线:不同阶段有明确的转折点。

检查第一个、中间、最后一个值,以及超过上限的值。绘制曲线、逐步差值,以及赚取所需时间或击败所需时间。内部精度应与显示时的舍入分开处理。

7. 建模相互交织的属性

先将相互依赖的属性化简为结果指标,再进行比较。常见示例:

throughput = amount_per_action * actions_per_second * success_probability * uptime
time_to_goal = required_amount / net_gain_rate
expected_damage = hit_probability * damage_on_hit
effective_durability = health / (1 - damage_reduction)

明确说明有关装填、停机时间、过量伤害、目标抗性、移动、资源上限和玩家操作水平的假设。单一综合得分适合初步筛选,但可能掩盖爆发、方差、射程、控制和团队效用。

8. 建模经济系统和随机性

使用 经济系统与概率 描绘来源、消耗、库存、转换、可负担性、加权结果、期望值、方差、资源短缺期和相关事件。

对于经济系统,按相关的玩家时间单位和进度群体计算净流量。检查通货膨胀、停滞、囤积、强制维护成本和财富集中。

对于随机系统,计算结果概率、预期收益、离散程度、百分位数、连续失败概率和依赖关系。将保底或递增概率建模为有状态系统,而非独立抽取。

9. 检查确定性极端情况

在模拟或人工测试前,验证:

  • 最小值、最大值、零、上限值和超出上限一步的值。
  • 空库存和满库存。
  • 合法的最快速率和最慢速率。
  • 同时发生的事件及平局判定。
  • 舍入边界。
  • 不可能或无效输入的处理方式。
  • 最佳组合、最差组合和自我维持循环。
  • 从零开始以及从亏空中恢复的行为。

在隔离的副本中有意测试荒谬的数值。极端测试能迅速揭示隐藏的依赖关系以及引擎或规则的限制。

10. 模拟相互影响的结果

如果状态、策略、依赖关系或反复出现的随机性让解析公式变得难以处理,就使用模拟。请参阅 模拟、遥测与调优。

明确说明 Agent 策略和技能假设。使用多个确定性随机种子运行,报告分布和置信度,并通过解析方法验证简单情况。模拟 Agent 的首选选项只能证明该策略下何者最优。

使用敏感性扫描找出对结果影响最大的输入,以及会导致结论反转的交互因素。

11. 对决策进行游玩测试

测试玩家能否感知并利用其中的权衡,而不只是检查模型输出是否接近。

观察:

  • 选择耗时和比较行为。
  • 根据可用性和情境细分的选择占比。
  • 条件变化时的策略切换。
  • 有连贯理由支撑的意见分歧。
  • 从未考虑过的选项,或用过一次后便放弃的选项。
  • 预测准确度和感知公平性。
  • 结果不佳后的恢复行为。

让新玩家测试易懂性,让有经验的玩家测试深度和优化空间。区分困惑与经过思考后的犹豫。

12. 扩大规模前做好遥测采集准备

为每项指标定义其所要支持的决策、事件、属性、分母、群组和保留期限。纳入构建版本和平衡数据版本,以便将结果归因于正确的规则。

记录机会和行动。若选项没有提供或玩家买不起,选择率就毫无意义。记录经济交易或遭遇前后的相关状态。

只收集必要的数据,采取适当的同意和隐私保护措施,不要根据单个汇总指标推断玩家意图。

13. 将调整作为实验

每轮调整时:

  1. 说明诊断出的原因。
  2. 选择能影响该问题且影响最小的调节手段。
  3. 预测主要指标和护栏指标的变化。
  4. 只修改一个调节手段,或一个不可拆分的组合。
  5. 重新计算模型并检查不变量。
  6. 重新运行确定性案例和固定种子的模拟。
  7. 酌情进行游玩测试或向受控群组发布。
  8. 与先前版本及不同细分群组进行比较。
  9. 决定保留、修订、回滚还是收集更多证据。
  10. 记录决策并更新事实来源。

诊断信号

  • 主导选项: 在削弱其表面数值之前,先检查经过情境调整的结果、信息优势、执行成本、可用性和协同效应。
  • 无人使用的选项: 确认其是否容易发现且符合使用条件,再比较其情境收益和认知成本。
  • 滚雪球效应: 衡量当前优势如何改变未来的收益、压制能力、信息或行动能力。可增加边际递减、暴露风险、维护成本、其他价值路径或恢复机会。
  • 失败螺旋: 找出损失使玩家失去行动所需资源的临界点。保留最低资源保障,或提供代价高昂但切实可行的恢复路径。
  • 无意义重复: 绘制达成目标所需时间和各时间段内有意义的决策数量。减少重复,调整收益/成本曲线,或增加在策略上各不相同的路径。
  • 通货膨胀: 按玩家群组比较资源来源与消耗速率、持有量百分位数、价格变化和购买相关性。
  • 停滞: 检查资源稀缺或害怕损失是否让储蓄始终比消费更可取。
  • 随机性带来的挫败感: 检查失败连胜和奖励断档的百分位数,而不只是公布的概率或平均收益。
  • 模型与实际游玩不符: 审查遗漏的约束、玩家操作、反馈、情境构成和实现时的舍入处理。
  • 汇总结果矛盾: 按技巧水平、进度、地图、模式、队伍、构建版本和接触情况进行细分。
  • 遥测数据突变: 在归因于设计之前,检查架构、平衡版本、用户群构成、事件机会和埋点。

失败模式

  • 在没有可衡量契约的情况下进行调优。
  • 将平衡等同于一致或受欢迎程度相同。
  • 添加不会影响决策或结果的原始属性。
  • 未经归一化或缺少上下文就比较不同单位。
  • 将加权分数当作表现相同的证明。
  • 只凭外观选择曲线,却忽略边际变化和时间成本。
  • 在工作簿中反复硬编码相同的常量。
  • 使用会掩盖尾部、异常值或混合群体的平均值。
  • 将相互依赖或必定发生的随机事件视为独立事件。
  • 模拟不现实的策略,却将结果称为玩家行为。
  • 同时更改多个无关数值,导致无法归因。
  • 用全局乘数修正局部症状。
  • 收集遥测数据,却没有明确决策、分母或版本。
  • 盲信统计精确、却衡量了错误行为的数据。
  • 上线违反游戏公平承诺的隐藏自适应难度。
  • 过早舍入,导致模型与实现之间出现累积偏差。

必需交付项

除非用户要求更精简的交付物,否则请提供:

  • 平衡契约、玩家细分、情境、时间范围和护栏。
  • 属性/数据字典,注明单位、范围、归属方和公式。
  • 可检查的模型或电子表格布局,并集中管理参数。
  • 支点和有代表性的场景集。
  • 适用情况下的曲线、经济系统和概率分析。
  • 确定性边界检查和不变量结果。
  • 模拟或游玩测试计划,列出假设和输出。
  • 从遥测问题到事件的规划。
  • 按优先级排列的诊断,附因果证据和不确定性。
  • 调优提案、预期变化、回滚条件和变更日志条目。

验证

  • 目标可衡量,并明确限定玩家群体、情境和时间。
  • 输入、派生值、显示值和观测值彼此区分。
  • 单位兼容,公式有明确标注,舍入顺序清晰。
  • 共享常量只有一个权威存放位置。
  • 归一化在最小值、中间值和最大值处均可往返还原。
  • 支点在普通场景中有效;极端情况和独特规则经过交叉测试。
  • 曲线满足端点、单调性或预期反转、上限及边际变化目标。
  • 经济系统的存量与来源、去向、转移和初始余额相符。
  • 概率权重归一化;预期值和尾部风险均经过检查。
  • 随机测试前先通过确定性边界用例。
  • 模拟可复现,策略有文档记录,结果收敛到足以支持决策的程度。
  • 遥测记录机会、情境、版本、操作和结果,不收集不必要的数据。
  • 将模型预测与游玩测试或线上证据进行比较。
  • 每次变更后检查护栏和回归问题。
  • 及时更新事实来源、决策记录和回滚值。

评论

支持 Markdown