图片:juanpol / CC BY
作者:曾于修,
不只暗黑三,许多遊戏中的「随机」要素都是「伪随机」。而很讽刺的,采用「伪随机」的理由往往是为了制造更「随机」的感觉给玩家。
试想,如果一个珍贵道具,掉宝率只有千分之一,那么玩家会期待我打一千个怪物应该要掉一个吧,再不然我打两千个怪物应该也总该掉给我一个珍宝了吧?
上面是一般玩家的直觉。然而我们考虑真实情况:
连续掉两件珍宝的机率是百万分之一(0.001^2)。但如果这遊戏的玩家够多(例如暗黑三第一天就卖了三百五十万套),出现连拿两件珍宝的玩家并非不可能,但是看在其他人的眼里,可能就会觉得有作弊不公之嫌。
打了一千个怪物仍没有掉任何一件珍宝的机率是多少?答案是 0.3677 (0.999^1000);而打两千个怪物仍没有珍宝的机率是 0.1352 (0.999^2000)。换个方式说,有三分之一的人打了一千个怪仍没拿到珍宝,就算各打了两千个怪,仍有超过十分之一的玩家是毫无所获的。虽然这是真实存在的机率情况,但对玩家而言,却会觉得是开发商作弊,而不会认为这是正常的随机。
所以遊戏设计中,许多时候的随机都不是真的乱数随机,而是用各种方式做出看起来随机的样子。比较常用的一个方式就是洗牌 (Shuffle),把所有可能发生的情况放在一个阵列中,对阵列的内容作乱数排序。
以前面千分之一掉宝率的假设为例,可以设想有个阵列有 1~1000 的数字,乱数排序后,每次玩家打怪我就从数列中抽出一个数字,若数字等于 1 时我就给玩家珍宝,当 1000 个数字都取完后,就对这个阵列重新洗牌,重新抽牌。这样的作法可以确保玩家平均每 1000 次打怪中可以得到一次珍宝,从而避免机率的极端状况,对玩家而言,看起来比较像是直觉意义上的随机,虽然事实并不是。
图片:juanpol / CC BY
作者:曾于修,
不只暗黑三,许多遊戏中的「随机」要素都是「伪随机」。而很讽刺的,采用「伪随机」的理由往往是为了制造更「随机」的感觉给玩家。
试想,如果一个珍贵道具,掉宝率只有千分之一,那么玩家会期待我打一千个怪物应该要掉一个吧,再不然我打两千个怪物应该也总该掉给我一个珍宝了吧?
上面是一般玩家的直觉。然而我们考虑真实情况:
连续掉两件珍宝的机率是百万分之一(0.001^2)。但如果这遊戏的玩家够多(例如暗黑三第一天就卖了三百五十万套),出现连拿两件珍宝的玩家并非不可能,但是看在其他人的眼里,可能就会觉得有作弊不公之嫌。
打了一千个怪物仍没有掉任何一件珍宝的机率是多少?答案是 0.3677 (0.999^1000);而打两千个怪物仍没有珍宝的机率是 0.1352 (0.999^2000)。换个方式说,有三分之一的人打了一千个怪仍没拿到珍宝,就算各打了两千个怪,仍有超过十分之一的玩家是毫无所获的。虽然这是真实存在的机率情况,但对玩家而言,却会觉得是开发商作弊,而不会认为这是正常的随机。
所以遊戏设计中,许多时候的随机都不是真的乱数随机,而是用各种方式做出看起来随机的样子。比较常用的一个方式就是洗牌 (Shuffle),把所有可能发生的情况放在一个阵列中,对阵列的内容作乱数排序。
以前面千分之一掉宝率的假设为例,可以设想有个阵列有 1~1000 的数字,乱数排序后,每次玩家打怪我就从数列中抽出一个数字,若数字等于 1 时我就给玩家珍宝,当 1000 个数字都取完后,就对这个阵列重新洗牌,重新抽牌。这样的作法可以确保玩家平均每 1000 次打怪中可以得到一次珍宝,从而避免机率的极端状况,对玩家而言,看起来比较像是直觉意义上的随机,虽然事实并不是。