|
写的偏模型化,非常现实的人可以不用看了。
在rts或者arpg里,也包括眼下林林总总的rpg网游里,往往有很多的职业/种族,调整他们的能力,使得其pvp或者其他能力持平是设计师考虑的问题之一
但往往事实不尽如人意,弄出星际3种族完美平衡奇迹的游戏几乎没有。我想有个模型能很容易说明原因之所在
假如有n个种族,对于每个种族,设计师可以调整其m个属性的数值。如果要做到n个种族两两间pvp能力持平,一共会有C(n,2)=n*(n-1)/2个方程,总的变量是n*m,要想使得所有的方程成立,显然未知数的数量不低于方程的数量,因此就有
n*m>=n*(n-1)/2
m>=(n-1)/2
如果取等号,那么这个方程组很可能只有1个解,或者解是0维流形,总之设计师很难找到,也不排除无解这种类型
而同时调整n*(n-1)/2个变量确实很复杂,当n=8时,就已经是28了,而有些rts里,种族数量远大于8,在rpg里,职业数量达到8以上的也很多
需要同时调整这么多变量,它们还必须是对平衡性影响密切的变量,那些无关紧要的变量的调整不足以影响整体能力。在n=8时,如果能够调整的变量总数目小于28时,无论怎么调整,都是按下葫芦漂起了瓢,会形成克制关系或者某个/些职业特别强势。不成功的调整会形成常见的“一个补丁一个神”现象,不断调整不意味着就一定更接近平衡,如果方法不对头的话
如果是2v2的完美pvp平衡,那么不等式就是
m>=(n+1)*(n^2+n-2)/8
当n=10时,m>=148.5,也就是每个职业的可调整变量要不低于149个,这是mission impossible
当然,当可调整变量个数不够多时,即使不能完全平衡,也可以调整使其最接近平衡,用向量函数表达式表示就是:不要求f(x)为0,但是希望f(x)*f(x)^T最小化,这里f(x)的每一个分量都是一个平衡性方程,如果平衡的话,值为0,假定x为p维变量,f(x)为q维变量,f是R^p到R^q的映射,f(x)^T是f的转置。有个好消息就是在数值数学里,关于这类问题(非线性最小二乘问题),已经有较好的数值解法,比如structured quasi-Newton method,这类方法其实实现起来并不难,我在excel里都实现了,只要知道x和f(x)的初始值,然后就能知道下一步调整的x的值,测试出此时的f(x)值,就能算出再下一步的x值..直到x的变化不大或者f(x)已经很小了.或许这种方法能让我们有一定依据的更快找到职业/兵种属性的平衡点.非线性最小二乘问题的数值方法研究依然是前沿问题,最近几年还有新的方法问世,比如迭代时,不仅仅考虑前两步的信息,而是考虑前m(一个常数)步的信息,这种改进型方法对于存在误差型的数据效果更好,稳健性更强,而且可以测试更少的f值,得到更精确的解
作为一个实际问题,如果有一定的随机因素干扰,比如设计师设计时的误差,那么出现某个职业克制大多数其他职业的可能性大不大?如何分析? |
|