如何生成特定级别的怪物/武器?

时间:2010-12-07 13:21:04

标签: algorithm random

背景

假设我们有一个“随机”生成怪物和武器的游戏。

可以像这样定义武器

  • 类型:ax(1.2)/ sword(1.4)/ spear(1)/ club(0.7)
  • 范围:1 - 3
  • 魔法:冰(10)/火(10)/无(1)
  • 状态:sharp(2)/ normal(1)/ dull(0.5)

其中一些值可能具有依赖性(例如类型和范围)。

使用随机生成器,我们可以得到一个钝的Ax of Fire(范围2)。然后我们可以有一个计算此武器的级别的公式。示例公式:

level = floor(type * range * magic * state)

沉闷的火之斧(范围2)将具有等级floor(1.2 * 2 * 10 * 0.5) = 12

简单,但很好!

我们还可以拥有一个世界,让玩家从洞穴一级开始越来越深入危险的洞穴。

问题

假设玩家处于洞穴12级。(S)他进入了我们想要将武器放在胸前的房间。

生成12级武器的好算法是什么?(或当然任何其他级别)

即。我们有级别并希望使用级别计算(我们的简单或其他更复杂的)向后来为武器的不同元素生成良好的值。

可以对武器定义进行微小或重大更改,以促进更好的解决方案。

编辑:

似乎High Performance Mark的解决方案在合理有限的组合集合中是最好的。如果没有,或者如果我们有连续值和“无限制”组合,则其他答案之一可能更适合。我说“可能”,因为即使在连续版本中也可以使用查找表来获取一个良好的起点,然后可以添加一个小的随机增量来填充。

示例:范围在10到200之间连续。查找表包含值(10,20,30,...,190,200)。该算法为范围选择110,然后向其添加随机(-5.0,5.0),最终值为108.72。然后武器的最终等级将足够接近所需的值。这听起来怎么样?

3 个答案:

答案 0 :(得分:4)

如果你有5种类型,范围,魔法和状态选择,那么你有5 ^ 4种武器选择。这是一个非常小的数字,您可以轻松地将它们全部存储在查找表中,以武器级别为索引。当你想要一个随机的12级武器时,你可以从可用的12级武器中统一选择。

答案 1 :(得分:2)

如果在这种情况下计算武器等级的公式很简单,你可以考虑随机选择等级,然后通过随机因素重复划分等级来计算武器的参数。

例如,你有12级。然后你随机生成武器类型。你得到长矛(1.0)并做12 / 1.0 = 12.然后你随机选择魔法然后你得到火(10)。然后你有12/10 = 1.2。您继续,直到您只有一个参数来设置,并最终选择该值。为了获得更好的平衡系统,您可以决定根据猜测的当前值对参数进行重新排序以猜测和/或随机生成器的概率。

答案 2 :(得分:2)

根据您在第一个列表中选择的元素,您可以实现的最大和最小级别值是多少?例如,对于俱乐部,您可以达到floor(0.7 * 1 * 1 * 0.5) = 0floor(0.7 * 3 * 10 * 2) = 43之间的任何级别。所以,如果你正在寻找44级武器,你永远不应该选择一个俱乐部。这有助于您限制第一个列表中可接受的选项集。

对于像这样的简单单调函数,可以动态计算这些最小 - 最大值,但如果水平函数太复杂,也可以预先计算它们。

对其他列表重复此过程,以允许连续值的列表结束,例如损坏(连续允许您选择一个选择适当级别的软糖值)。

例如,寻找一个12级武器,人们会随机挑选一把斧头(最小值:0,最大值:72),随机挑选“火焰”(最小值:6,最大值:72),消除“尖锐” (min:24,max:72),随机挑选“暗淡”(min:6,max:18),然后使用2 = 12/6的软糖值作为范围。