基于f(N)生成定价的更好方法

时间:2013-11-02 11:55:36

标签: objective-c algorithm math currency in-app-purchase

我的游戏中有游戏货币。对于用户购买下一次升级,我目前使用一种非常简单的方法,即第N次升级需要花费N * 1000个硬币。

我不是现在使用它的忠实粉丝,因为我希望它更容易开始并且可能更好地扩展,因此升级并不困难。

一种解决方案是使用Fibonnacci,它可以提供很好的早期结果,但是后来的升级几乎不可能。

任何人都可以提供解决方案,因为我的数学知识非常有限

2 个答案:

答案 0 :(得分:3)

sigmoid function怎么样?它开始缓慢上升,然后几乎呈线性上升,最后开始减速。

如果你看一下wolfram alpha的图表,你可以像这样计算你的价格:

price = a_bit_more_than_maximum_upgrade_price * sigmoid( x )

您必须选择最高价格的倍数作为起始升级的价格,如果您选择启动x=-4,您将获得低于最高价格5%的价格。结束x可能等于4.您将达到最高价格的95%左右。然后你有很多升级。你可以像这样计算sigmoid的输入:

x = (upgrade_index / (number_of_upgrades-1)) * 8.0 - 4.0

升级索引从零开始,你必须至少有2次升级:) 您可以剪掉最后几位数字或将它们四舍五入以获得更好看的数字。

答案 1 :(得分:2)

这似乎是一个与http://programmers.stackoverflow.com

更相关的问题

但无论如何,我会说尝试使用指数函数,比如

f(n) = 1000 * 1.1^n

显然,一旦你有100次或更多升级价格有点荒谬,你可以使用一个条件检查n是否大于某个数字,然后用你的线性函数恢复计算价格下一次升级。