游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10189|回复: 20

[讨论] 为何多种族/职业的平衡很难做?一点不成熟的思考

[复制链接]

8

主题

96

帖子

98

积分

注册会员

Rank: 2

积分
98
发表于 2009-9-21 16:39:00 | 显示全部楼层 |阅读模式
写的偏模型化,非常现实的人可以不用看了。

在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值,得到更精确的解

作为一个实际问题,如果有一定的随机因素干扰,比如设计师设计时的误差,那么出现某个职业克制大多数其他职业的可能性大不大?如何分析?

1

主题

291

帖子

644

积分

高级会员

Rank: 4

积分
644
发表于 2009-9-21 16:43:00 | 显示全部楼层

Re:为何多种族/职业的平衡很难做?一点不成熟的思考

排列,组合都上来了。是够模型化的了。。。。。

8

主题

96

帖子

98

积分

注册会员

Rank: 2

积分
98
 楼主| 发表于 2009-9-21 16:47:00 | 显示全部楼层

Re:为何多种族/职业的平衡很难做?一点不成熟的思考

顺便问一下,求解多元方程组的数值解法有哪些?我就只知道newton法,但这无法用到游戏数值调整里,因为不知道梯度函数,有没有类似于一元情形时各种其他方法?

1

主题

22

帖子

178

积分

注册会员

Rank: 2

积分
178
发表于 2009-9-21 22:29:00 | 显示全部楼层

Re:为何多种族/职业的平衡很难做?一点不成熟的思考

有几个疑问:
1.“要想使得所有的方程成立,显然未知数的数量不低于方程的数量”,这个没想明白
2.感觉rts和mmorpg差别还是蛮大的

8

主题

96

帖子

98

积分

注册会员

Rank: 2

积分
98
 楼主| 发表于 2009-9-22 12:28:00 | 显示全部楼层

Re: Re:为何多种族/职业的平衡很难做?一点不成熟的思考

f16block60: Re:为何多种族/职业的平衡很难做?一点不成熟的思考

有几个疑问:
1.“要想使得所有的方程成立,显然未知数的数量不低于方程的数量”,这个没想明白
2.感觉rts和mmorpg差别还是蛮大的

1,初中的时候,学习解多元一次方程组的时候,会发现,有3个方程,一般需要x,y,z这3个未知数。总之,n个方程需要n个未知数,未知数更多,解会不确定,未知数更少,就没有解

但这个结论是针对非退化类型而言,如果是线性系统,是指系数矩阵满秩这种常见类型

多元方程组本质是个逆映射问题,逆映射或者隐函数定理都说明了相关问题

2,在兵种/职业的区别和pvp平衡方面,上面的模型都适用

0

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2009-9-22 16:07:00 | 显示全部楼层

Re: 为何多种族/职业的平衡很难做?一点不成熟的思考

“如果是2v2的完美pvp平衡,那么不等式就是
m>=(n^2-n-2)/4”
楼主能否详加解释? [em24]

8

主题

96

帖子

98

积分

注册会员

Rank: 2

积分
98
 楼主| 发表于 2009-9-22 19:37:00 | 显示全部楼层

Re:为何多种族/职业的平衡很难做?一点不成熟的思考

回 苍穹风:

很抱歉,我算错了,应该这样算:

2v2时,两人组合如果包括同种族组合,共有n*(n+1)/2个,所有的平衡性方程就有n*(n+1)/2*((n*(n+1)/2)-1)/2个,由不等式:

n*m>=n*(n+1)/2*((n*(n+1)/2)-1)/2
因此
m>=(n+1)*(n^2+n-2)/8

比如当n=10时,m>=148.5

谢谢提醒,我在主楼上已经更正

1

主题

291

帖子

644

积分

高级会员

Rank: 4

积分
644
发表于 2009-9-23 17:34:00 | 显示全部楼层

Re:为何多种族/职业的平衡很难做?一点不成熟的思考

细看了下,还是没怎么明白,你能把你讨论的大前提给解释下吗?N*M从何而来,N个职业,每个职业M个属性,为什么变量就是N*M呢,难道每个职业的这M个属性都不同吗?C(N,2)到是很好理解,但是那个不等式又是什么意义呢?“显然未知数的数量不低于方程的数量”,这个是什么意思呢?而且最关键的是,你这个讨论的是什么,是怎么去设置职业间平衡吗?

8

主题

96

帖子

98

积分

注册会员

Rank: 2

积分
98
 楼主| 发表于 2009-9-23 18:12:00 | 显示全部楼层

Re:为何多种族/职业的平衡很难做?一点不成熟的思考

回ls:

"*M从何而来,N个职业,每个职业M个属性,为什么变量就是N*M呢,难道每个职业的这M个属性都不同吗?"
虽然甲职业是x点生命值,乙职业是y点生命值,虽然都是生命值,但要被看成不同的变量,所以是N*M个变量,可以说这M个属性都不同,这M个属性不仅仅是说生命值,伤害能力等常见变量,也包括移动速度,某个强力技能的法力消耗量等变量

我的这些推理不能直接用来平衡PVP能力,所以说不定就浪费了大家的时间,不过数值求解多元非线性方程组已经有几个成熟算法,说不定使用得当也能起点作用,比如著名的Broyden算法,可以用迭代方法逼近零点,具体细节可以去找找数值数学相关论文和书籍,反正三言两语解释不清楚。而且这些算法我也是最近两天才去搜索相关论文,了解了一点点而已,以前我对此一无所知

1

主题

257

帖子

257

积分

中级会员

Rank: 3Rank: 3

积分
257
发表于 2009-10-12 20:32:00 | 显示全部楼层

Re:为何多种族/职业的平衡很难做?一点不成熟的思考

所以说,你就这么讨厌相互克制?非得要任何职业对任何职业的胜率都是五五开?我觉得这要求本身是有问题的,这样会把一些玩点都给干掉的,失去平衡的本意了。

不过如果是RTS,貌似确实是各个种族之间的胜率最好是五五开。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-30 17:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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