假设我们有一个“随机”生成怪物和武器的游戏。
可以像这样定义武器:
其中一些值可能具有依赖性(例如类型和范围)。
使用随机生成器,我们可以得到一个钝的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。然后武器的最终等级将足够接近所需的值。这听起来怎么样?
答案 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) = 0
和floor(0.7 * 3 * 10 * 2) = 43
之间的任何级别。所以,如果你正在寻找44级武器,你永远不应该选择一个俱乐部。这有助于您限制第一个列表中可接受的选项集。
对于像这样的简单单调函数,可以动态计算这些最小 - 最大值,但如果水平函数太复杂,也可以预先计算它们。
对其他列表重复此过程,以允许连续值的列表结束,例如损坏(连续允许您选择一个选择适当级别的软糖值)。
例如,寻找一个12级武器,人们会随机挑选一把斧头(最小值:0,最大值:72),随机挑选“火焰”(最小值:6,最大值:72),消除“尖锐” (min:24,max:72),随机挑选“暗淡”(min:6,max:18),然后使用2 = 12/6的软糖值作为范围。