欢迎光临散文网 会员登陆 & 注册

触发结构——5.5随机触发(上)

2022-02-28 23:29 作者:叶墨冷泉  | 我要投稿

在一张地图中,大部分的东西都是早已确定的,因为地图作者需要保证玩家的体验,以及防止任何超出作者预料的事情发生。作为地图作者,他对自己做的地图应该是十分熟悉的,熟悉到他写好的任何时间在任何地方发生的任何事他都应该了解。

然而,地图作者制作的内容通常都不会保密,甚至出于某些考虑还会主动向玩家公开。所以,在经过反复进行战役或对地图文件的仔细研究后,玩家完全可以像作者一样熟悉地图,至少接近作者的熟悉度。然后,一部分玩家就可以针对地图上的各种机制,研究出反制措施,或者通过合理安排操作来降低战役的难度,这种行为通常被称为背板。地图作者通常不会对这样的行为加以限制(因为限制措施也是可以被玩家发现甚至破解的,通常会费力不讨好),但是,作者可以在地图中加入随机触发。

地图作者可以且应该能了解到随机触发的总体效果,即各种情况的出现概率。但是,地图作者不能预知在玩家游玩战役的时候,实际随机出现的是哪一种情况。所以,随机触发可以用来限制上述的背板行为(但玩家可以通过多次重开来获取理想的随机情况)。另外,由于战役地图中的内容都是作者提前安排好的,玩家在多次游玩同一张地图的时候遇到的情况是相同的。随机触发可以避免这一情况,增加玩家游玩的不确定性和趣味性。另一种具有相似的特点和效果的是选择触发,地图作者主动提供给玩家数个选择,然后根据玩家的选择执行接下来的触发,可以视为由玩家主导的主动随机触发,这里不再详述。

 

在地图编辑器中,目前能够稳定提供真随机效果的,只有触发条件中的51号,随机延时,下文将介绍几种简单的随机触发写法。

 

随机触发实现的是随机效果,并不会绑定刷兵,但考虑到刷兵是随机触发的最大需求,本节内容以随机触发刷兵举例。熟练掌握随机触发的读者可以将刷兵更改为战役地图中可能出现的其他事件。

 

单随机延时刷兵:

只需要一个触发,设置为重复触发,触发条件为随机延时X秒,触发结果为7/80/107号结果刷兵。在该触发被允许后,将会以0.5X到1.5X秒的间隔重复刷出触发结果中的小队。

战役中,通常一个小队是远远不够的,此时需要重复编写数个如上的随机触发。但这会带来一个问题:由于延时的不确定性,这些随机触发有可能会在同时或很接近的时间内同时刷出大量部队,这可能会造成游戏难度的较大波动,以及对玩家的电脑造成一定程度的卡顿。

 

随机延时循环触发:

设置数个触发,例如触发A、B、C,均设置为重复触发,条件均为随机延时X,Y,Z秒,触发结果为7/80/107号结果刷兵。同时,触发A的结果添加禁止A,允许B;触发B的结果添加禁止B,允许C;触发C的结果添加禁止C,允许A。使用时,可以允许A、B、C中任意一个触发,然后该触发组会按照A、B、C、A的顺序循环触发。这样,刷出的小队顺序是固定的,但小队刷出的时间间隔会有0.5~1.5倍的变化。

考虑到玩家通常对循环刷兵的时间间隔变化并不敏感,不建议使用该类触发进行大规模刷兵,也可能会出现与多个单随机延时刷兵相同的问题。但是,如果随机延时的时间足够长,例如,进行一轮刷兵的延时平均值在10min以上,平均每个小队的延时平均值在4min以上,在具有一定规模的战役中,玩家会难以记住整个刷兵循环中的所有小队,而倾向于认为小队是随机刷新的。使用此类随机触发刷出一些高威胁高延时或是高隐蔽性的小队,以及增加循环触发的小队数量,可以明显提高触发的效果。

 

固定平均间隔随机刷兵:

首先设置两个触发X和Y,X的条件是13号固定延时X0秒,结果是禁止X允许Y;Y的条件是固定延时Y0秒,结果是禁止Y允许X。这两个触发控制随机刷兵的延时时间,时间为X0+Y0秒,如果触发X和Y其中之一的延时时长设置为总延时时长,则另一个的条件可以写为延时0秒或8号任何事件,通常情况下这些写法没有明显差别。

然后设置数个单随机延时触发,例如触发A、B、C,分别随机延时A0,B0,C0秒。每个单随机延时触发增加额外的触发结果:禁止触发A、B、C。这样设置可以保证:当触发A、B、C中其中一个执行了触发结果,会同时禁止三个触发,保证每一轮随机刷兵只有一个触发结果被执行,同时保证三个触发能够继续进行下一轮的随机刷兵。

最后,在触发X的结果中添加允许触发A、B、C,这组触发就写完了。使用时,外部触发允许触发X,X会允许A、B、C、Y。A、B、C随机执行一个触发结果后自行禁止,触发Y在延时Y0秒后会重新允许触发X进行下一轮随机刷兵。上述顺序较接近触发执行的顺序,读者更容易理解,读者在熟练理解此类随机触发写法后可自行决定编写顺序。

这组触发比之前的稍微复杂一些,有一些注意事项。随机延时A0、B0、C0的时间是可以不同的,这会影响各个触发的刷兵刷出概率。目前暂时无法确认51号条件的随机延时分布遵循什么规律,为了便于计算,我通常按延时均匀分布计算,但可能与实际情况出现误差。触发Y的延时Y0应足够长,具体值应大于A0、B0、C0中最大值的1.5倍。这可以保证当触发Y允许触发X时,一定有一组刷兵已经刷出,触发A、B、C已经为禁止状态。如果Y0不能满足上述条件,可能会出现丢失一次至数次刷兵小队甚至随机刷兵触发崩溃的后果,而固定延时X0除了在初始允许时增加一段延时外基本无作用(两个随机刷兵之间的延时最小为X0+对应A0/B0/C0*0.5+上一个随机刷兵的实际延时长度与Y0之间的差),所以我通常且很建议将X0设为0或8号条件,而用Y0控制两个随机刷兵之间的平均时间间隔。这组触发实现的效果为:在每个Y0秒长的时间内,触发A、B、C中随机执行一个来随机刷出一个小队,且小队之间的最小间隔至少为0.5*A0/B0/C0。

 

考虑到文章篇幅,使用局部变量的随机刷兵写法将会在后续章节叙述。


触发结构——5.5随机触发(上)的评论 (共 条)

分享到微博请遵守国家法律