艾约bright 发表于 2021-2-24 14:38:35

地编里随机百分比的使用

本帖最后由 艾约bright 于 2021-4-18 10:33 编辑

决定版有一个条件叫“随机百分比”(打了新桶mod以后的翻译),可以用来制作一些随机事件。虽然已经有很多大佬了解了其机制,但我在踩坑后才发现了该如何使用这一条件,于是来分享一下~

“随机百分比”这个条件里,可以填写整数。直觉上看,这应该指的是概率值,比如填写10,就是有10%的概率触发效果。(如图1所示)

然而,微软的程序员脑回路不同常人。给定一个初始值为0的test变量,我们将触发的效果设为改变test变量为1。经过测试我们发现,无论随机百分比的值如何设置,只要大于0,就一定会使得test变为1(如图2所示)。

这说明,不管触发本身是不是循环的,随机百分比这个条件都是循环执行的,因此无论随机百分比的值设为几,终究都会触发效果,区别只是触发时间的长短罢了(看脸)。就算我们想写个简单的效果,比如开场50%概率给500资源,单用这个条件都是无法实现的。

那么就只能用比较复杂的方法来实现效果了。举个例子,有时为了避免背板,我们希望地图上的盖亚单位能够随机出现,而不是在固定地点刷。比如,在地图上某个地方,随机出现步兵、步弓或骑兵,概率各为33%,要怎么写触发呢?

这时我们就需要建立三个触发,分别是:随机出现步兵;随机出现步弓;随机出现骑兵。这三个触发的条件和效果如图3所示。


实际上这是一种妥协的写法。内部逻辑是,三个触发同时进行概率判断,谁先触发了,就关闭其它的触发器。这样做,如果要实现N分之1的概率,就得写N个触发器。而且,“随机百分比”条件里,数值究竟填多少已经不重要了,因为实际概率跟它没关系,一般填一个较小的数字即可,比如10。大概是因为触发器的先后顺序有延迟,所以这里也不是严格的等概率的。


在另外一种情况下,“随机百分比”里的数值还是有意义的,可以把它看成权重。比如,我们希望66%的概率给300黄金,33%的概率给300食物,这个时候两者概率不相等,那么我们可以仿照上面的写法,然后在给黄金的触发里,将随机百分比的值设为20,在给食物的触发里,将随机百分比的值设为10,这样两者同时执行概率的判断,触发“给黄金”的概率就会高一倍,即形成了66%和33%的概率。


总之,这个条件的使用不太直观,第一次用基本会被坑。我只学会了一些简单的用法,高级用法还有待大佬开发。楼下回复有大佬对该条件的深入讨论。

焚风之爱莉琰 发表于 2021-2-24 16:21:32

本帖最后由 焚风之爱莉琰 于 2021-2-24 16:47 编辑

决定版很多方面都是直接沿用了UP系列的设定,这个条件从1.5开始就是这样了,倒不如说这是照顾老玩家的习惯。该条件会持续随机判定直到成功为止。如果你想要只判定一次,再在它下面加一个触发关闭之就行了。

如果你想要做3选1,这么做的话可能有延迟,而且概率不是均等的。可以这样设置,第一种概率为33,第二种概率为50,第三种概率为100。

cxt 发表于 2021-2-24 18:56:45

好!我想说的琰琰已经说过了,11
{:10_437:}

newtonerdai 发表于 2021-4-12 10:17:58

(图片请压缩到2M以下,越小越好)

非常好的教程,我终于是搞懂了【机会 | 随机百分比】这个条件的用法。之前云里雾里的。

c326679a 发表于 2021-10-20 19:20:16

本帖最后由 c326679a 于 2021-10-20 21:03 编辑

剛好要做隨機相關的東西~順便分享一下我測試後的發現
1.機會不是立刻觸發~所以會占用"計時"

不太可能做出5秒機會成功"立刻"出兵這樣的觸發
機會是持續性條件~也就是你設定後他會不斷的"骰"骰到觸發結束
也就是一直等一直等觸發概率=100%
最簡單的驗證就是
條件=機會
效果=生產物件(十字軍)
你會發現十字軍"一定會產生"但隨著你給的機會值不同會在不同秒數產生目前測試"機會值越大概率越大"
2.機會的確是唯一百分比,但概念可能跟樓上說的不一樣
例如
計時器1 
機會11
效果生產物件(十字軍)
不斷循環 (只有單事件)

代表1秒後的 每1秒 骰動11%的骰子 直到發生~然後觸發效果十字軍
測試起來的結果是這樣
我知道以中文來看很智障~但效果上的確應該是這樣
因為這樣的觸發達到的效果是 十字軍不定時生產
但在100秒後 幾乎都固定生產10-11隻 也就是接近概率11%

"機會"條件的腦殘性就在於~他是"持續性的" 你把觸發關閉在打開他還是在上次的"骰次"裡面
"骰次"這個詞是我自己發明的~
簡單說就是假設這個觸發被關閉並重啟了10次那第11次幾乎會必中
結果類似"計時器"在DE版中
A觸發計時器倒數100
倒數到50時被B觸發關閉
過了一陣子被C觸發開啟~
(理論上大家會認為重啟後計時器是在100倒數)其實不對~是計算你上次被"關閉的值"
也就是在C觸發被打開後 計時器依然重50倒數


以頂樓3單位的文章來看最終效果大概會是

每一秒"同時骰動以下觸發"
1秒有10%機率發生步兵
1秒有10%機率發生騎兵
1秒有10%機率發生弓兵
某一隻在未來被骰中時關閉其他兩個觸發

經過測試後大概是這個意思

因為我們不能設定立刻骰出概率~但總概率值是一樣的
然後目前想要實現"當要觸發時立刻觸發可以使用幾個技巧"
("單位夾"觸發事件概率)例如遊戲剛開始~就讓以下觸發跑動
每一秒"同時骰動以下觸發"(直接設置機會不設置計時器)
1秒有25%機率發生步兵 生產後走到最前方指定位置(彈夾槽)
1秒有25%機率發生騎兵 生產後走到最前方指定位置(彈夾槽)
1秒有25%機率發生弓兵 生產後走到最前方指定位置(彈夾槽)
1秒有25%機率發生槍兵 生產後走到最前方指定位置(彈夾槽)
這樣子過了大概100秒後關閉所有觸發~理論上你會取得接近100隻單位平均25隻以隨機排列的方式分布在(彈夾槽)
然後根據最前方的彈夾巢來決定觸發什麼就好了
例如當是步兵時才觸發效果如果不是步兵則移除

但就是整體邏輯變得比較麻煩...

cly806 发表于 2021-10-21 15:55:38

c326679a 发表于 2021-10-20 19:20
剛好要做隨機相關的東西~順便分享一下我測試後的發現
1.機會不是立刻觸發~所以會占用"計時"


这个可以参考我设计的抽奖系统,这是机会运用范围最广,实现最成功的设计,目前在大理,北条中有相应的应用
页: [1]
查看完整版本: 地编里随机百分比的使用