分类: Minecraft 插件
用 AI 团队打造 Minecraft 服务器#3数值 ×10、12 小时经验曲线、6 个职业模拟!📊
本文译自韩语原文。
要点速览
这是把一句"伤害和血量都要打得爽快"变成实际数字的过程。所有设置放大 10 倍、但不动管理员改过的值的一次性迁移,用 Excel 就能修改的经验表,以及用模拟分析"基础武器太强"这一意见后,发现原因不在公式而在武器攻速的故事。
- Paper 1.21.11 · 服务器配置文件 · 2026-09-28~30 实际应用并模拟
- ×10 迁移只把"仍是旧默认值的项"改一次,并记录 number-scale: 10 —— 管理员改过的值保持不变
- 经验曲线目标:1→30 级约 12 小时,前期升级快 · 每个阶段都有平缓区间
- 职业 DPS 差距 ±40% 的主要原因不是公式,而是武器攻击速度的差异(斧 0.8 次/秒 vs 剑 1.6 次/秒)
目录9 项
大家好!我是 Mojangcam 😎
上一篇 #2 讲了插件结构和 1000029 伤害事件。这一篇聊的是游戏里的数字。
做 RPG 服务器的时候,经常会听到这样的话。
"希望伤害打得爽快,血量也涨得爽快。"
方向很好,但要把它变成实际的数字,其实相当棘手。这一篇会整理
- 🔢 把生命值和伤害一次性放大 10 倍的方法
- 📈 打造"30 级只要 12 小时"的经验曲线
- ⚖️ 用模拟来分析"基础武器太强"这一意见的结果
这几件事。定数字的是策划组 AI,写进代码的是各个开发组,做选择的是人。
📌 第 1 步 - 数值 ×10:放大"看得见的数字" 🔢
哪些要放大 10 倍
| 放大 10 倍(固定值) | 保持不变(比例及其他) |
|---|---|
| 生命值、攻击力、魔法攻击力 | % 属性、倍率 |
| 武器基础伤害、固定附加伤害 | 防御力(因为是比例公式) |
| 药水固定回复量、怪物生命值和伤害 | 法力、经验值、金币 |
防御力不能放大 10 倍的原因很有意思。防御公式是 방어 / (방어 + 100)(即 防御 ÷ (防御 + 100)),如果把防御 25(减伤 20%)变成 250,就会变成减伤 71%。代入比例公式的值一旦乱动,平衡就会崩掉。
已经在运行的服务器要怎么改
最难的是已经有配置文件的服务器。因为管理员可能已经在游戏里直接改过怪物的生命值。所以我让所有模块都按同一套规则,只迁移一次。
# 每个模块在服务器启动时执行一次的操作(实际是 Java,这里只用 Python 展示流程)
if config.get("number-scale", 1) != 10:
backup(config_file) # 1) 修改前先备份
for key, old_default in OLD_DEFAULTS.items():
if config[key] == old_default: # 2) 只改"仍是旧默认值"的项
config[key] = old_default * 10 # 放大 10 倍
else:
log(f"{key} 是管理员改过的值,保持不变")
config["number-scale"] = 10 # 3) 做标记 → 以后不再执行
save(config)逐条拆开来看 💡
- 记录 number-scale:服务器启动两次也不会变成 100 倍。
- 只改旧默认值:管理员动过的值被视为有意为之,保留下来。不过会在日志里列出清单,让人亲自确认。
- 先备份:就算迁移出错也能恢复。
实际重启一次服务器后,core、战斗、物品、等级、怪物模块全都在日志里留下了"×10 迁移",错误为 0 个。
一起定下来的修正还有这些。
| 项目 | 值 |
|---|---|
| 暴击倍率 | ×1.5 → ×2.0 |
| 普通怪物生命值 | 等级倍数 1.0 → 0.9(普攻 4 下打死) |
| 怪物等级比我高时造成的伤害 | 差距 ≤2:100% · 3:80% · 4:50% · 5 及以上:固定 1 |
| 最后一击经验上限 | 最多到比我高 4 级怪物的经验值(防止抢高等级怪物的最后一击) |
📌 第 2 步 - 经验曲线:1→30 级 12 小时 📈
目标是 1→30 级约 12 小时,并且前期升级要快。前期太慢的话,玩家就会流失。
一开始做的是一条平滑的曲线,后来我又让策划组 AI 重新做一条"每个阶段感觉都不一样的曲线"。结果是这样的形状。
| 区间 | 形状 | 意图 |
|---|---|---|
| Lv 1~9 | 人工设定的值,非常快 | 前 30 分钟内升好几级 |
| Lv 10~14 | 平缓区间 | 适应新的练级场地 |
| Lv 15~29 | 每级约 ×1.2 递增 | 感受到成长 |
| Lv 30 以后 | 每 5 级一个平缓区间 + 倍率逐渐减小(×1.08 → ×1.075 → …) | 避免无止境地变陡 |
- 结果:1→30 累计 12.0 小时,总经验值 281,150
- 只有
exp_table.csv一个文件,用 Excel 打开就能改,输入/리로드 level(重载命令)立刻生效
在此基础上,我又加了等级差经验惩罚。打比自己低很多的怪物,经验会变少。
| 怪物比我低几级 | 0~3 | 4 | 5 | 6 | 7 | 8 | 9 | 10+ |
|---|---|---|---|---|---|---|---|---|
| 获得的经验 | 100% | 90% | 60% | 45% | 30% | 20% | 15% | 10% |
📌 第 3 步 - "基础武器太强" → 模拟 ⚖️
测试的玩家之间出现了"职业基础武器太强"的意见。大家希望的方向是这样的。
武器伤害在前期强,到了后期,攻击力、穿透和职业属性要重要得多。
组长先拟了公式草案,然后让策划组 AI 计算 6 个职业 × 7 个等级段 × 2 种属性分配 × 3 种公式 = 252 种情况。
提出的公式(草案)
# 攻击力:等级、装备、属性不断叠加的部分
ATK = (base_attack + growth_attack(level) + gear_flat_attack) \
* (1 + main_stat * 0.005 + sub_stat * 0.002)
# 基准伤害:武器伤害不受属性影响
B = weapon_damage + ATK
# 防御:等级越高,同样防御力的效率会一点点下降
effective_def = max(0, defense - flat_pen) * (1 - pct_pen) # 先算固定穿透,再算 % 穿透
K = 100 + attacker_level * 5
damage = B * K / (K + effective_def)模拟结果
| 项目 | 现在的公式 | 只改公式 | 公式 + 统一攻速(推荐) |
|---|---|---|---|
| 武器所占比重 Lv1 → Lv30 | 100% → 14~21% | 45 |
58% → 7% |
| 职业之间的 DPS 差距 | −41% ~ +43% | −43% ~ +44% | −7% ~ +11% |
| 普攻打死普通怪物所需次数 | Lv15 时 5 下 | Lv15 时 5 下 | 所有等级 4 下 |
有意思的是中间那一列。只改公式的话,DPS 差距几乎不变。深挖原因后发现,问题不在公式,而在武器的攻击速度。
- 斧:每秒 0.8 次
- 剑、匕首:每秒 1.6 次
- 魔法弹:每秒 1.67 次
单次伤害再怎么调平,斧头也只能打出一半的次数,DPS 自然会拉开。所以推荐方案是先统一攻速(斧、弓 1.0 次,剑、匕首、魔法弹 1.25 次)。
玩家觉得"基础武器太强",其实是因为前期的伤害 100% 来自武器,而属性每 10 点只提升 1%,除了武器之外没有什么能感受到的东西。感觉是对的,只是原因在别处。
⚠️ 这个公式 v2 目前还处于提案阶段。第一次整合测试会用现在的公式,等决定之后再应用。
📌 使用 AI 策划组的感想 💬
- 很擅长把"感觉"翻译成数字。 它会把"爽快"变成"Lv1 一下 101 → Lv30 1,937,普攻 4 下"这样的表格。
- 一定要让它写出假设。 攻速、装备强化等级、刷怪速度这些它会自己设定后再计算,所以报告里如果没有"假设"表,结果就很难让人信服。
- 决定权在人。 AI 会给出好几个推荐方案,连受影响的模块都整理好,但选哪个,得由做游戏的人来决定。
📌 总结
- 数值 ×10 只针对固定值,迁移只做一次,管理员改过的值保留
- 经验值是一张用 Excel 就能改的表,1→30 级 12 小时
- 平衡不满的原因不是公式,而是攻击速度 —— 要不是做了模拟,我大概还在一直改公式
下一篇讲的是美术。我会介绍让 ChatGPT 负责 GUI、图标、武器贴图,再由 Claude 审核的流水线,以及审核中拦下的事故(名字互换的弓、不显示的背景、闪烁的弓)。敬请期待 🙌
这篇文章由我定方向,并和 Claude 一起整理而成。这个服务器是个人项目,不是 Minecraft 官方内容,与 Mojang、Microsoft 无关。
连载 · 共 5 篇中的第 3 篇
