找回密码
 立即注册(邮箱请乱填
搜索
查看: 45|回复: 0

游戏设计中的战利品掉落机制

[复制链接]

514

鱿鱼币

8976

56

主题

站长

脸卫兵

积分
2107

人民解放军战狼外交官可口可乐SIM卡潜水蛆红卫兵大撒币习近平来世还做中国人晶格的徽记

门派:学习墙国

擂台:天下第12

与他切磋一把

查看他的属性

发表于 7 天前 | 显示全部楼层 |阅读模式
战利品掉落表
许多游戏都有战利品。通常情况下,战利品是随机掉落的。战利品掉落是一个很常见的话题,但几乎每个设计师都会遇到。以下是我多年来遇到的一些最佳实践。非常感谢所有为这些技巧和窍门做出贡献的人。
你的基本战利品表
目标是以给定的概率掉落一组物品。假设你击败一个敌人,你就有几率获得盾牌、一把稀有的剑,或者什么都没有。
示例
lootTable
  物品:
    名称:剑
    重量:10
  物品:
    名称:盾牌
    重量:40
  物品:
    名称:空
    重量:50
设置
  • 物品:物品是您想要给予玩家的东西。
  • 战利品表:一组物品被放入战利品表。这只是一个物品桶。例如,战利品表可能包含:剑、盾、虚空。
  • 重量:一件物品的掉落重量为1到10,000。例如,一把剑的掉落率可能是10。
  • 空物品:战利品桶中的其中一件物品为“空”,这意味着如果掷出该物品,则不会获得战利品
滚动寻找战利品
  • 总概率:首先,将桶里的所有权重相加。在上面的例子中,就是 10+40+50 = 100。它们不需要相加等于 100,因为它们不是百分比。
  • 接下来为每个物品分配一个范围。剑 = 1-10,盾 = 11 到 50,无 = 51 到 100
  • 生成1 到 100 之间的随机数。
  • 将该数字与范围进行比较。这就是掉落的物品。
  • 重新掷骰:生成多个随机数来模拟多次掷骰。
那么这对玩家来说是什么样子的呢?我们有 10% 的几率掉落一把剑,40% 的几率掉落一面盾牌,还有 50% 的几率什么也掉不出来。
作为设计师,我可以进入并将 Null 的权重更改为 100,现在我有 6.6%(10/150)的机会掉落一把剑,有 26%(40/150)的机会掉落一面盾牌,有 66%(100/150)的机会什么都不掉落。
映射到其他常见的随机系统
这个系统只是对许多其他常见随机方法的简单复述。训练你的设计师大脑,使其能够在战利品表、卡牌或骰子等各种随机问题之间切换,是一项非常有趣的超能力。
卡片
想象一下您可以洗牌和抽牌的一副卡片。
  • 牌组中的每种牌都是一个物品
  • 给定类型的卡片数量就是该物品的重量
  • 洗牌相当于将每张牌分配到一个范围并生成一个随机数。
  • 抽一张牌就相当于选择掉落的物品。
现在,一副普通的牌有 52 张,但有了战利品表,你就不需要再受这个限制了。你的牌组可以包含数千张牌,种类繁多。或者,它们也可以是小型的,相当于一手普通的扑克牌。
骰子
骰子也映射到战利品表上。
  • 每个骰子都是一张战利品表。
  • 边(1-N) 是物品标记为 1 到 N)
  • 权重均为“1”。(除非你使用加重骰子!)
  • 多次掷骰子可以表示为多次掷出同一张战利品表。因此,2D6 相当于对包含 6 个物品的战利品表进行两次抽样。
变化
现在我们已经定义了一个基本的战利品表,我们还能用它做什么?
变体:物品套装
你也可以掉落多套战利品。一件物品不必是单一物品。例如,我可以扩展它,让玩家获得一个护盾和一个生命药水(如果选择此选项)。
示例
lootTable
  物品:
    名称:剑
    重量:10
  物品:
    名称:盾牌
    名称:健康药水 数量:2
    重量:40
  物品:
    名称:空
    重量:50
变体:始终掉落
一个常见的需求是标记某个物品,使其始终掉落。一个惯例是,权重为“-1”的物品始终会掉落。变体:可重复随机性 有时,你希望能够重复随机掷骰。例如,当玩家保存游戏后,为了避免掉落糟糕的战利品而重新加载,这可能会导致玩家非常沉迷于刷刷刷。如果存在一个可以破坏游戏体验的漏洞,大多数人都会乐意尝试。

大多数当代伪随机数生成器都使用种子值。只要保存了该种子值,就可以再次运行随机数生成器并获得相同的结果。
变体:不放回掷骰子
上述系统的问题在于,玩家可能仅仅因为运气好就总是掷出“空”。这是玩家们常抱怨的。“我玩了3000次那个战斗,却从来没拿到过MegaGoldenLootGun!”这种情况确实会发生。
在统计学中,抽样有两种基本类型:
  • 放回抽样:您从桶中取出数字,然后在记录得到的结果后,再将它们放回桶中。因此,您在下次抽奖时有相同的机会再次获得相同的东西。
  • 不放回抽样:你从桶里取出一个物品,记录下来后就把它放在一边。你再次取出该物品的概率较低,因此取出剩余物品的概率较高。
俄罗斯方块采用不重复抽样法。每组俄罗斯方块的碎片都放在一个战利品表中。每次你获得一个特定的碎片,它都会从桶中移除。这样一来,只要你等待足够长的时间,就能保证你总能获得一个长碎片。
以下是如何在战利品表中实现不重复滚动的方法。
  • 当你滚动一个物品时,将其重量减少 1。这会将其范围缩短 1,并且最大范围也会缩短 1。
  • 保留玩家修改后的战利品表,以便下次掷骰子时使用。
变化:保证特定掉落。
有时,即使不放回的滚动也不够快,你需要保证掉落特定战利品。暴雪对某些稀有掉落物也采取了这种做法,这样玩家就不必长时间刷怪了。
您可以增加重量,但保证获得某物的机会较低与缓慢增加获得某件物品的机会在多次游戏中的感觉会非常不同。
以下是如何实现保证战利品掉落的方法。
  • 当你掷出任何非保证物品时,将所有非保证物品的重量减少 X%
  • X = 100 / 保证物品掉落之前的最大滚动次数。
  • 保留玩家修改后的战利品表,以便下次掷骰子时使用。
例子
  • 假设您希望剑在 5 个回合后总是掉落,即使它只有 10% 的掉落几率。
  • 所以 X = 100 / 5 或 20%。
  • 因此,每次您不掷剑时,盾牌的重量就会下降 8(40*0.2),而空的重量就会下降 10(50*0.2)
  • 5 轮之后,其他所有物品的重量将变为 0,并且剑有 100% 的几率掉落。
变体:分级战利品表
战利品表通常是新资源的来源。然而,你很容易遇到掉落某种资源过多或过少的情况。设置一些限制会有所帮助。
一种解决方案是使用不重复的分级战利品表。当某种资源耗尽时,玩家将无法获得更多资源。我们已经将此方法用于每日金币奖励。我们希望每天发放100个金币,但不会超过这个数量。我们希望将其作为战利品系统的一部分。
  • 创建两个表:Rewards 和 DailyCoins。
  • 让主战利品表参考每日硬币桶。
  • 当每日硬币被选中时,滚动该表并查看您获得多少硬币。
示例
lootTable:奖励
  物品:
    名称:剑
    重量:10
  物品:
    名称:dailyCoins
    重量:40
  物品:
    名称:null
    重量:50 lootTable:dailyCoins  类型:noReplacement   refreshRate:每日  物品:    名称:硬币,数量:1    重量:10  物品:    名称:硬币,数量 10    重量:4  物品:    名称:硬币,数量:50    重量:1












在上面的例子中,玩家有 40% 的几率获得金币。然后我们查看 dailyCoins 表,发现他们每天最多可以赢得 100 个金币,其中 10 个奖励为 1 个金币,4 个奖励为 10 个金币,1 个奖励为 50 个金币。
当 dailyCoins 战利品表被清空时,他们将什么也得不到,直到一天后刷新为止。
变体:条件掉落
有时,你会想根据一些外部变量来测试是否应该掉落物品。在《Realm of the Mad God》中,我们希望避免搭便车者在没有造成任何伤害的情况下获得击杀Boss的战利品。因此,我们在战利品表中添加了一项检查。如果战利品表中的一件贵重物品被摇出,我们会检查玩家是否对敌人造成了超过X%的伤害。
你也可以根据玩家等级甚至敌人等级,构建开关来控制哪些战利品有效。我倾向于使用多个较小的战利品表,但该系统足够灵活,你可以使用几个大型表格和条件语句轻松构建数据。
变体:修改器
您还可以根据某些外部逻辑修改掉落的数量或重量。例如,拥有收割技能的玩家可以获得特定物品的两倍掉落量,而没有该技能的玩家则无法获得。或者,您可以修改掉落的重量。高等级角色对于所有低于其等级的物品,其掉落的重量可能会减少 50%。(感谢 Reddit 评论员提出的这个想法)
其他用途
掉落表通常用于掉落战利品。但我发现它在其他方面也很有用。
  • 程序生成:使用表格从组件构建武器或角色
  • AI:使用表格来选择攻击或移动等行为。
这听起来可能有点傻……肯定有更好的方法来建模人工智能!然而,理解随机性的一种方法是,它只是任何系统的一个非常粗略的一阶模型。人脑是如何建模一个系统的?我们对一个系统进行观察。我们记录这些观察结果重复出现的频率和趋势。直到很久很久以后,我们才开始理解某件事发生的“原因”,或者各个部分之间的因果关系。
在物理学中,我们经常开玩笑说,为了模拟牛这种复杂的生物体,第一步就是“想象一头球形的牛”。通过创建一个简单易用的模型,我们通常能够以非常低的成本获得有用的见解。
很多时候,掉落表只是对复杂系统“足够好”的以人为本的近似。对于许多系统来说,大多数玩家永远无法超越基本的概率理解,因此建模更复杂的系统纯粹是浪费时间。高效的游戏设计在于,只对元素进行最低限度的建模,以创造理想的体验。
想想看:D&D 用本质上是战利品掉落表的东西来构建整个宇宙。这是为了刻意减少那些在很多方面只是核心角色扮演游戏次要元素的系统。
战利品掉落表并不是您需要的唯一工具,但在许多情况下,它已经足够好了。
程序生成思想实验
这是一个使用掉落表的简单程序生成系统。其实还有很多其他方法可以实现,但这个更适合用来思考。
假设你想建立一个程序生成的敌人
  • 首先列出敌人的独特部位。也许你的敌人由一种移动方式、一种攻击方式、一种防御增益和一种宝藏组成。
  • 为每个部分制作战利品表。
  • 对于战利品表中的每个物品,根据您认为它的威力赋予它一个威力值。例如,刀的攻击可能很弱,所以它只有 5 的威力。但大锤的攻击可能有 15 的威力。
  • 创建另一个增益效果的战利品表。这些是各种属性的修正值。例如,“”会将攻击值提升 20%。你也可以设置减益效果,“”可能会将攻击值降低 -50%。这些会降低某个部位的威力值。
现在让我们生成一个敌人
  • 设定目标:为生成的敌人设定目标威力。假设你想要一个威力为 40 的敌人
  • 滚动:将每个部分滚动一次并将它们添加到列表中。
  • 分数:将所有力量值相加即可获得分数。
  • 调整:如果各部件的总和超过目标值,则添加一个减益效果或掷骰选择威力较低的部件。如果低于目标值,则添加一个增益效果或掷骰选择威力较高的部件。
  • 重复:重复此过程,直到达到所需的错误阈值(距离功率 40)或用尽您愿意花费的迭代次数。
现在你已经拥有了一个程序生成的敌人。你可以对这个基本系统进行大量的调整,但它在大多数情况下都能正常工作。作为练习,思考一下:
  • 排除列表:如果选择了列表中的两个部分,则将敌人扔掉并重新掷骰子。
  • 多重约束:零件会根据多个标准进行评分。请注意,添加的约束越多,获得可行结果的可能性就越小。
结论
每当讨论随机性时,总会涉及到大量的次要问题。我推荐以下文章供进一步阅读:
不要对随机性抱有教条主义的态度。你应该成为一名受过广泛教育的设计师,其审美选择基于亲身实践。一个好的经验法则是,除非你成功运用一个设计工具制作了几款游戏,否则你无法对其进行理性的批判。
无论如何,这只是我制作战利品表的方式;这是任何职业设计师生活中的日常琐事。我很好奇其他人是否还有其他他们喜欢并遵循的管理战利品(和随机性)的方法。
(在我忘记之前——我最近腾出了一些时间来做一些游戏咨询。如果您在游戏方面需要帮助,请联系我!)
保重,
丹克。




本版积分规则

小黑屋|推特:squid4046 ( 互联网ICP备案:庆丰ICP备8964233号-3 习ICP证:习2B-20100043 |

GMT+8, 2025-10-31 05:47 , Processed in 0.116429 second(s), 39 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表