当前位置: 首页  >  >经济 > > 正文

环球观速讯丨IZE破除玄学1:矿工为何剐蹭植物?僵尸移动啃食更新顺序

2023-01-20 21:52:31    来源:哔哩哔哩

本系列文章将选择IZ(E)中不那么为人所知的有趣细节,介绍涉及的游戏机制,揭示“玄学”背后的原理。对于自制IZ玩家和生存无尽玩家,也可以从中获取灵感避免重复发明轮子;对于珍珑作者,下届智商杯说不定就押题了呢!


【资料图】

保证通俗易懂,无须任何代码知识,有基本游戏常识即可顺利阅读。如有不严谨之处,恳请各位大佬指正。

特性演示

上面的动画展示了传说中的“矿工‘剐蹭’磁力菇”奇观:矿工在植物的左侧位置出土后,明明没有开啃直接往前走了,为什么磁力菇的血量会变少呢?

类似的现象有不少,仅再举一例:https://tieba.baidu.com/p/8193145084 此帖介绍了类似的“豚过拔毛”现象,其原理完全相同。

原理解释

本例仅涉及僵尸行走和啃食的更新顺序,比较简单。

首先要知道,在游戏中僵尸的坐标以浮点数(即小数)的方式存储,但啃食判定时用的是下取整后的结果。如果按这个整数计算出僵尸的攻击区域与植物的防御区域重合,就判定啃食。

游戏每一帧中僵尸的更新逻辑,极简描述如下:

把僵尸的整数横坐标 x存储在临时变量 tx中;

若僵尸不在啃食,则向前走一步(更新僵尸横坐标 x);

若僵尸能啃食*,用 tx 计算僵尸的攻击区域,判定是否啃食,并开始或结束啃食。

*聪明的读者马上意识到问题所在:你第2步更新了横坐标 x,但 tx 没变啊!你第3步用 tx 判断要不要啃食,这时的 tx 已经是上一帧的横坐标了,那肯定就不对了。宝开你怎么这么愚蠢呢!

具体到本例中,矿工出土的位置恰到好处,刚好能啃到植物,但只要往前走一帧就离开了啃食范围。这样,在出土后的第一帧,先在步骤2时向前走一步越出啃食范围,但在步骤3时还拿原来的横坐标判断,结果是啃食一口。第二帧,由于之前向前走了一步,已经啃不到植物,就不再啃第二口而直接向前走了。

这样的结果是,磁力菇恰好在矿工出土后的第一帧被啃掉4滴血。

真理往往是简单的。当你发现它后,会大呼宝开SB。 ——渐强

本来想讲裂荚对伴舞暴击,想着第一次别搞太劝退,就找了个简单的,伴舞的下次再说(

致谢:感谢该特性的发现者(某智慧群友);感谢CVP的开发者零度、ShowMe的开发者向量、IZT的开发者,以及BUG的开发者宝开程序员。

关键词: 生存无尽 通俗易懂 游戏机制 HTTPS

«上一篇: »下一篇: