Project1

标题: roblox rng挂机抽卡遊戏思路 [打印本页]

作者: ppspssss    时间: 5 天前
标题: roblox rng挂机抽卡遊戏思路
本帖最后由 ppspssss 于 2024-9-26 10:01 编辑

本贴以EVOLUTIONS-Anime-Card-Battle  (roblox游戏)为其中之一的RNG游戏思路
*本贴思路为主,示范脚不适宜作为范例使用 , 看看或试用就好
**如不懂常规抽取,要前置先学习常规抽取 (如重复抽取),奖池抽取等等。
***RNG类游戏好像不是常规抽取,应该大多数人都没见过这样的抽取,好像roblox 也是今年才有这类游戏(我猜的),特点的是看到的数字非真正一次抽到的慨率,而是说抽取的大慨难度(抽取指定卡实际慨率低),可以任意扩大奖, 而我们常见游戏通常以百分比形式来展示抽取慨率。

游戏中的 图片



RNG游戏通常为挂机抽卡的游戏, 通过挂机不停地自动抽取(Roll翻译可为滚动),抽取一些低慨率的卡片,
抽取的慨率为数字越高,抽取慨率越低比如1 in 2 是最易抽取, 难抽取的东西理论上可不设上限,比如1 in 99999, 而抽取的数字并不是真正抽取的慨率, 意味着可以加入多个1 in 2 , 虽说这样,通常只会加入一个1 in 2 ,因为占比实在太大, 难以抽取的卡,如1 in 100,000 可能会加入更多张数, 意味着加入越多的卡片,抽取指定卡片的慨率便越低,其中一个方案是可选中更换想抽的卡包,比如卡包1,可抽取1 in 100,000 的A卡片, 而卡包2,可抽取1 in 100,000 的B卡片但抽不到A卡片, 可以从卡包中切换

抽中卡时会再额外出现抽取闪亮的卡片,如金卡是100分之1, 10000分之1彩虹卡,100万分之1蓝色卡 , 如抽到 1张 1in 100的卡再额外变成100万分之1蓝色卡, 就会相乘以 变成 1 in 100,000,000 的卡 , 再难以抽取的卡会变成天文数字(指数值非常大)

幸运值加入的话,思路是从最高慨率抽取的卡慨率降低,并将降低的慨率增加至所有更难抽中的卡包,但这样的话慨率低的卡就在幸运值高的时候近乎不可能抽中, 如果在闪亮卡如10000彩虹卡, 或100万蓝色卡的话几乎变得不可能抽中, 如果想抽取开发图鍳的话变得更加艰难,因此幸运值也不是太好, 第2方案是,把低慨率抽中的10000彩虹卡, 或100万蓝色卡以额外卡塞到奖池里,但这样的话就会额外占用卡池 。如果不是开图鉴的话也许幸运值也是可以的。幸运值需要在卡降到一定程度后再找上一张卡的慨率降低,所以需要特定公式(自己设定),

滚动速度的就没有幸运值抽不到被降慨率卡的缺点, 只有抽取速度提升,低慨率的卡依然可以以相同慨率抽中 , 或者可以一次变多次抽取,如双倍抽取,三倍抽取这样 ,这个方案我觉得比较好




想过用以前的塞入相应数量的数组充当奖池也许可以,但后来想由于数量太多基本不可能,应只在数量较少的时候可用,数量多就运算不过来,不适宜这种大数值抽取,要另寻方法
以前的贴子(抽口罩范例仅供参考,为奖池数组抽取)可参考仿网游的不重复慨率抽奖, 显示慨率数量范例

一开始我陷入错误思路,以为1in2 (50%) 抽是一半抽中,但如果加入1in3, 1in4 就已经超过 100%, 由于一次只抽取一个卡片,所以思路是错误, 去了国外论譠查找相关roblox RNG代码,得知大慨是以比例的形式抽取,1 in 2 比例最大,因此抽取慨率为最高
以抽取慨率数字乘以相同数值放大 , 对应范围内的判断为抽中对应卡
例如
1in 2 抽取数字公式为 (1/1in啥) = (1/2) = 0.5 (数字越大抽取慨率越高)
1in 20 抽取数字公式为 (1/1in啥) = (1/20) = 0.05 (数字越大抽取慨率越高)
1in 100 抽取数字公式为 (1/1in啥) = (1/100) = 0.01 (数字越大抽取慨率越高)

由于抽取指令为整数型,因此要乘以相应数字,直至没有小数为止,这里其实乘以100便可以,因为0.01乘100 = 1 已经是整数,我示例里还是用了乘10000也可以,若有幸运值公式之类的可能数值会需要更大范围,预留大点数值好一些。总之要大于最难抽取卡之数值,如有1 in 1亿 的卡,放大乘数要等于大于1亿
由于Ruby可以支持抽取任意长度的整数,因此不需额外转换(如果MV,MZ用javascript就要转换)可参考 [有事请教] 增加[随机乱数]的数字大小 ?

抽取思考(思考时的草稿)(非脚本)

示例脚本(只包含基础抽取)(参考用)





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1