半肾
精华
|
战斗力 鹅
|
回帖 0
注册时间 2014-2-27
|
本帖最后由 deadbeef 于 2016-1-3 06:34 编辑
我觉得你提的是一个目的多样性的问题
在绝大多数游戏的规则体系中 除了博弈的部分(与玩家/AI的对抗)之外
游戏规则都是一个会对相同输入产生相同输出的黑匣系统(随机值因为服从统计规律 某种意义上也能认为是固定输出)
也就是说对于游戏规则来说 各参数之间的规律是固定的可预期的
而“好坏”是一个主观1维数值 只有2个方向:好 或者 坏
因此再把众多参数输入给一个评估函数来得到好还是坏的数值评分
其实就是一个游戏系统工作的最基本架构
而这个评估函数 则可以通俗的说成 目的
这里举一个简单的数学例子:
假设有一个抽象游戏G 由5元组构成
{输入数值参数v, 输出游戏结果r, 游戏规则R, 内部参数向量P, 目的评估函数S}
构造简单的具体内容
参数向量P设计为二元组(参数a, 参数b)
规则R为单一数值v到二元向量P的映射 设计为 R(v) = (3 + 4*v, 10 - 2*v)
目的S为P到一个单一好坏数值r的映射 设计为 S(P) = P[a] + 3 * P[b.]
在这个游戏G中 很显然的有2件事:
1,对于目的S,参数向量P中的2个参数P[a],和P[b.]都是越大越好的
2,对于规则R,输入v越大,会导致参数P[a]越大,但是反而会导致参数P越小
在G中看起来P[a]和P都是越大越好的参数,然而输入v却会导致他俩一个增加,另一个降低
看似是需要取舍的,有好有坏的规则设计吧?其实不然
因为将游戏G化简成一个v到r的映射 变成 r = S(R(v)) = 3+4*v+3*10-3*2*v = 33 - 2 * v
这样就很明显 对于目的S导出的结果r来说 v是越小越好的
对于游戏G来说 规则R是用来描述世界构成方式的 不应该被修改
因此这里只修改目的S为 S(P) = 3 * P[a] + P[b.]
就会变成 r = S(R(v)) = 19 + 10 * v
变成压倒性的v越大越好
换成上面你举的身高的例子 那便是为了达到游戏的目的 到底是能够摸到高出的东西更重要 还是能够钻过地洞更重要
决定升高到底是越高越好的 还是越矮越好的
并不是身高作用于摸高或钻洞上的方式(规则)
而是对于玩家来说到底是摸高更重要要是钻洞更重要(目的)
当然 上面举的例子 依旧是越高越好 或者越矮越好的情况 你肯定并不满意
于是其实只要再简单修改一下评估函数目的S 变成这样
S(P) = -2* P[a] * P[b.]
还是代入求出v到r的映射r = S(R(v)) = -2*(3-4v)*(10-2v) = -60 + 92*v - 16*v^2
这是一个2次函数 有很显然的极大值 当v=2.875时r=72.25 取整得v为3时有最大值72
也就是v为3的时候是最好的 并不是越大越好 也不是越小越好
换成上面摸高的例子 想要身高与游戏目的达成的好坏并不线性相关 也只需要像上面做的那样 把目的评价设计为非一次线性的就可以了
最简单的就是 作为目的的迷宫 只有当摸高拿到钥匙后 才能打开地洞的门钻进去 那么评价身高与通关迷宫的可能性几率的函数(目的S) 就因为摸高与钻洞的关联性 变成2者分别通关可能性几率的乘积
而其与身高本身就变成了2次关系 而非简单的1次线性关系了
可是就算这样 身高(输入v)依然与通关迷宫的几率(输出r) 呈现固定代数关系 只不过不是简单的一次线性了 如果愿意 玩家还是可以求出输入v的最优值
说了那么多 只是想用一个简单的计算说明:
1,只要游戏系统能够以代数方式描述,无论多么细致,总能够推算出局部最优解
而系统复杂程度对于这个推算出的局部最优解的影响,仅仅在于,能否在有限的时间内求解局部最优 和 局部最优与全局最优的差距到底有多大 这2点
2,想要玩家的决策能够更加复杂,比起在游戏描述世界运作的基本规则上做文章,不如在游戏目的上做文章来的更加直白明确
哪怕是很简单的运作规则(游戏系统),通过非常精妙的目的设计(关卡设计),也能够让玩家获得相同于复杂系统的游戏乐趣,而且来的更加直观
|
|