
为什么随机数如此重要
玩蛋仔派对久了就会发现很多有趣玩法离不开随机数,比如抽奖转盘,随机刷怪,甚至自定义地图里的随机传送门,没有随机数这些内容就会变得死板重复,资深玩家都知道随机数能营造惊喜感和挑战性,而蛋码积木恰恰提供了生成随机数的工具,只是很多新手朋友摸不着头脑,今天我就来分享我的实战经验。
积木搭建第一步
打开蛋码编辑器后先找到“数值”分类下的“随机数”积木,它看起来像一个小骰子图标,拖到工作区后你会发现它有两个参数输入口,左边是“最小值”右边是“最大值”,这决定了随机数生成的区间,比如填1和10那么每次运行都会得到一个从1到10之间的整数,注意这里默认生成的是整数,如果想生成小数需要额外处理,但基础玩法用整数就够了。
指定范围要精准
很多玩家在设范围时容易犯一个错误,就是忘记最小值从0开始还是从1开始,比如你要一个从0到9的随机数那就填0和9,如果要1到10就填1和10,蛋码积木是包含两端数值的,也就是说你输入的最小和最大都会出现在结果里,这一点和编程语言里有些不同,实践时最好先用测试积木打印出来看看,确保范围符合你的设计。
随机数实战应用一例
以我制作的一个翻牌小游戏为例,我需要8张牌随机排列,这时候就要用随机数配合列表积木,先把8张牌编号1到8存入列表,然后用随机数生成一个1到8的索引取出牌,再把这张牌从列表里移除,重复操作直到列表清空,这样每次开局牌序都不一样,玩家就不会觉得无聊,关键是随机数不能重复使用同一范围,否则可能抽到已经翻过的牌。
避免重复的小技巧
如果直接连续生成随机数,在没有重置的情况下可能会得到相同数值,尤其在范围小的时候概率很大,这时候可以使用“暂存变量”来记录已经生成过的数,每次生成后检查是否重复,如果重复就重新生成,或者更高级的做法是用“洗牌算法”也就是刚才说的列表移除法,这样保证每个数只出现一次,蛋码积木里用循环和条件判断就能实现。
小心伪随机陷阱
蛋崽派对里的随机数实际上是伪随机算法,也就是基于种子生成的数列,对于普通玩家来说效果足够随机,但如果你在短时间内连续使用多次,可能会发现规律,比如每次重启游戏后第一次随机数都一样,这是因为种子固定了,解决办法是在游戏开始时用当前时间或玩家操作作为种子,不过蛋码积木没有直接设置种子的积木,我们可以通过让玩家点击按钮触发随机数来打破固定模式。
进阶玩法组合运用
高手玩家会把随机数和其他积木联动,比如和“等待”积木配合做出随机时间间隔的陷阱,或者和“移动”积木配合让怪物随机巡逻,甚至可以用多个随机数组合生成坐标点,实现随机传送门,注意多个随机数分别设置不同范围,比如横坐标0到100,纵坐标0到80,然后合并成一个位置向量,这样地图上的落点就完全随机了。
调试代码要耐心
生成了随机数后记得用“打印”积木查看结果,有时候你自以为写对了但实际跑起来范围不对,我就曾经把最大值填成了最小值导致永远得到同一个数,排查半天才发现是手误,另外在测试时可以用“循环”积木生成100次随机数,观察分布是否均匀,如果总是跳不出某个区间那就要检查积木连接是否正确。
分享一个独家心得
我在制作一个竞速赛道时想要随机出现加速带,但又不希望连续出现两次,于是我把随机数和计时器结合,每次生成后设置一个冷却时间,在冷却时间内不重新生成,这样既保证了随机性又避免了玩家体验失衡,其实随机数不是越随机越好,要服务于游戏设计,这才是资深玩家的思路。
最后提醒一点
生成随机数只是第一步,你还需要考虑它出现的时机,比如只在玩家触发特定事件时才生成,或者每帧都生成但只取第一个有效值,蛋码积木的更新频率很高,如果不加控制,一个瞬间就能生成几十个随机数,浪费性能且容易出错,建议用“触发”积木来控制随机数的生成时机,比如按下按钮或者角色碰到某个区域。
相关文章