吹歪玉米炮的“上界之风”是怎么诞生的?
Description
上界之风原理解析!这也是一个很经典的漏洞了 我是上期视频才知道自己破音这么严重,我也才发现日常生活说话也经常破音。这次视频在有意识的防止破音,不知道效果怎么样,也请大家多反馈反馈了。 下一期计划做有关某些植物的冷知识科普,同时开启一个长视频的制作:PVZ 种植最少植物种类数通关(low%)
上界之风原理解析!这也是一个很经典的漏洞了 我是上期视频才知道自己破音这么严重,我也才发现日常生活说话也经常破音。这次视频在有意识的防止破音,不知道效果怎么样,也请大家多反馈反馈了。 下一期计划做有关某些植物的冷知识科普,同时开启一个长视频的制作:PVZ 种植最少植物种类数通关(low%)
Comments
但是上界之风这名字取得真是帅得没边了[颂乐人偶_眯眼笑]
♥ 2378 ↩ 60
上界之风,下界之星
♥ 1011 ↩ 13
我告诉你啊,上界之风的原理是...
♥ 764 ↩ 3
原来如此[doge]
♥ 616 ↩ 12
原来加农炮的炮弹是投掷判定,这样也就解释得通,为什么那些改了子弹的改版里面,平射的加农炮弹没有效果,但是投掷出去的就有了。
♥ 193 ↩ 2
真是太失望了。 我不是PVZ老玩家,第一次听到上界之风的时候,我一直以为这个是玉米加农炮的落点随机移动,而不是固定。 看到这个视频的时候,我还在想,一个随机移动的效果,怎么可能是bug呢?很明显是游戏故意设计的,我一直都觉得说游戏就是故意设计一个上界之风的环境来模拟屋顶高度比较高,风比较多的情况。 看完视频才知道,原来真的就是一个平平无奇的bug,真是太没品了,我更希望官方能保留上界之风的效果,只不过变成随机偏移,而不是固定距离偏移。
♥ 540 ↩ 49
所以说这个横向移动的速度又是怎么产生的[思考]
♥ 169 ↩ 17
[doge_金箍]我猜一下这个bug怎么来的。最开始可能某个程序员觉得玉米炮是玉米投手来的,所以直接继承了玉米投手的class。然后计算下落位置的相关method没有改,或者是简单改了一下输入输出就super了。总之核心的位置计算逻辑没改导致了这个bug
♥ 165 ↩ 6
原来是这样
♥ 148
所以为啥大炮会纵向移动[笑哭],我还以为点一下打出去只是动画,本质上是延迟生成一个换皮樱桃炸弹
♥ 120 ↩ 3
🌽:我计不成,乃天意也……
♥ 108
如果PVZ原版当年能继续更新的话,可能得以好好利用横向系统加入风的机制,比如狂风山谷地图。
♥ 95 ↩ 10
关于“上界之风”的汇编代码。图中是针对投掷子弹的屋顶场景中坐标相关修正,此处的eax是子弹运动状态,1为投掷。esi是子弹对象指针,+34是【浮点】子弹Y坐标(Y-Z),+38\\【浮点】子弹 ΔZ 坐标,+4C\\【浮点】影子Y坐标(Y)。st(1)是浮点坐标差(从前面【esp+08】来的)。由于加农炮发射的大炮运动状态也是1,故也执行了这个坐标差修复,但是大炮在画面外是直接瞬移过去的,这导致修复坐标差时把落点也减去了st(1)。 修复上界之风的话在Projectile::UpdateMotion+7D处hook判断子弹是否是大炮(【esi+5c】==b),如果是就单独浮点出栈一下然后跳到Projectile::UpdateMotion+98(不能直接到+92因为那里还有影子的修正)
♥ 62 ↩ 2
我更感兴趣的是,游戏让玉米炮弹横向极慢速移动的目的是什么?某些函数的作用范围是不是移动的物体,玉米炮弹需要用到这个函数,所以就加了横向移动速度?
♥ 54 ↩ 2
原来这不是游戏设计而是bug吗?我之前玩还觉得这设计挺真实的来着,毕竟屋顶风大很合理[微笑]
♥ 53
简单的来说,其实就是玉米炮为了实现从天而降的动画效果,应该调用的是投手子弹运动代码,只不过是向一个竖直向上的方向无限运动,再瞬移到瞄准处进行无限的竖直向下运动,因此作为投手子弹触发了屋顶的子弹坐标偏移,就出bug了[doge]不知道我说的对不对
♥ 43 ↩ 1
很好奇移动端(北美版)是如何修复上界之风的
♥ 43 ↩ 2
原来是天意爷新定了一条加农炮在屋顶发射后实际落点会比瞄准位置高出屋顶高度差大小像素的设定)
♥ 38
所以说平射玉米300单体伤害又是[笑哭]
♥ 40
风炮也算有利有弊了,这诡异的判定[doge]
♥ 37 ↩ 5