在《上古卷轴5》里,有一个地方能让你的变化系技能从15级直接跳到25级——只需要施放一次魔光术。这个位置就在首都孤独城外面的一座山上。一次施法,十级技能,听起来像是玩家编出来的都市传说,但它确实存在。 问题是,为什么? 关于这个现象,流传着很多错误的解释。最常见的说法跟距离有关:魔光术的弹道飞得越远,到达时给的经验就越多。有人声称找到了一个刚好处于渲染距离边缘的位置,还表示有办法让经验收益更高。但这个理论很快被推翻——游戏里比这更远的施法位置多得是,偏偏只有这座山有这种效果。 另一个流传较广的说法来自UESP维基,认为跟云层有关:大量经验收益似乎和弹道穿过多个天气效果平面有关。可问题是,游戏里有云的山峰多得数不清,为什么只有这里能触发? **拆开魔光术的经验公式** 要搞清楚这件事,得先弄明白魔光术本身是怎么给经验的。在游戏数据文件里,魔光术是一个学徒级法术,基础效果代号为LightFFAimed。这个效果的基础消耗是2,技能使用倍率是0.15。由于魔光术没有作用范围,技能使用值的计算可以简化成一个公式:基础效果消耗乘以作用范围,再乘以(强度乘以持续时间除以10)的1.1次方。 代入魔光术的具体数值——强度5,持续时间60——算出来的技能使用值大约是84.307。变化系经验在此基础上乘以技能使用倍率0.15,再乘以变化系的技能使用倍数3,最终每次施法的原始经验约为37.938。 这个数字是固定的。无论你朝墙壁、桌子还是石头施放,只要命中,经验就是这么多。那问题来了:为什么在孤独城外的山上,经验会暴涨到足以连升十级? **弹道碰撞才是关键** 魔光术和大多数法术不同,它不需要命中敌人才能生效。朝墙壁、桌子、石头扔出去,它照样给经验。那么游戏是怎么判断它“命中”了什么东西的? 施放魔光术后,会生成一个光弹投射物,沿着你瞄准的方向飞行。每一帧,游戏都会检查它是否撞到了什么。这个检查分三步: 1. 先画出投射物在下一帧会移动到的路径。投射物速度是每秒512单位,除以帧率60,得到每帧移动约8.53单位。法术射程是10000单位,所以弹道会在空中飞行大约19.5秒后才消失。 2. 把这条路径和所有拥有碰撞形状、且通过碰撞层过滤的对象求交。游戏里每个对象都有碰撞层,定义了它能和什么发生碰撞。比如透明层不会阻挡投射物和法术,而地形层会。如果碰撞层不匹配,碰撞就不会触发。 3. 检查路径是否真的击中了对象。先找到对象表面上离投射物最近的点,再找到从该点指向表面外侧的法线向量。然后判断投射物是否和法线方向相同——通过点积的正负来判断。如果方向相同,说明投射物正在远离表面,不算碰撞;如果方向相反,且投射物已经相交或在对象内部,或者下一帧会撞上,就标记为碰撞。 这里有个细节:即使投射物已经在对象内部,法线检查也优先执行。如果投射物已经穿过了对象的一半以上,最近点跑到了另一侧,法线方向和移动方向一致,碰撞就不会触发。 **为什么偏偏是这座山** 当光弹投射物发生碰撞后,游戏会对每次碰撞运行一个命中函数,处理各种后续效果,最终要么把效果施加到目标身上,要么施加到碰撞表面上。魔光术的经验就是在这一步发放的。 回到孤独城外那座山。它的特殊之处在于,弹道在飞行过程中可能穿过了大量碰撞对象——山体本身、地形起伏、隐藏的碰撞体积。每一次碰撞都会触发一次命中判定,而每一次命中判定都可能发放一次经验。一次施法,多次命中,经验自然成倍增长。 这也解释了为什么其他有云的山峰不行——云层本身没有碰撞体积,不会触发命中判定。真正起作用的不是天气效果,而是那座山独特的地形碰撞结构,让一次施法的弹道在消失前反复触发了命中逻辑。 所以这个Bug的本质,是游戏把一次施法拆成了多次命中判定,而每一次判定都独立发放经验。

打开网易新闻 查看精彩图片