在我国抗疫工作取得阶段性胜利之后,电影院终于在7月下旬有序开放营业,然后就是一大波影片扎堆上映。今天呢mona
也是按耐不住地带着alwyn
去看了一场电影——《信条》,只不过从 影院出来的时候,mona
居然喊着有些没整明白,侠义仁心古道热肠灵敏机智的alwyn
怎么能忍,于是写下此博文强行解释一番。
高能提示:本文高度剧透,假设你还没看过这部电影的话,强烈建议点击关闭页面,离开此处
设定
其实电影里的设定目前真实世界当然不存在,要不然爱因斯坦、牛顿、爱迪生的棺材板就真的是摁不住了,但看电影嘛,就要接受它的设定,那么这部电影里的最大设定是什么呢?
那就是——多个时间线并存(Multiple Timeline)
,这是与真实世界单一时间线的最大不同,也是造成困惑的根源。

其实整个的时间线设定同
git
操作很类似,就像上面的架构图展示的一样,简单的来说:
- 首先,有一个
主时间线(master timeline)
,这是毫无疑问的,git
默认有一个master branch
。 - 其次,由于旋转门的存在,电影世界支持时间回溯,正如
git revert
,而且两者同时都是可追溯的,只不过git
是单一时间线,使得git revert
的追溯形式只是叠加操作,而电影时间里旋转门的回到过去更为复杂,它开启了并存的分支,这点下面很快讲到。 - 再次,电影世界里的时间线不会被覆盖,所以回到过去后,原有的东西依旧存在,正如台词说的
past is past
(差不多这意思吧),那么传回去的人物故事只能以duplicate timeline(重复/冗余时间线)
的形式存在,正如git
中develop branch
与master branch
同时存在一样;而且如同两个分支会存在conflict
一样,duplicate timeline
和master timeline
的人物是不能直接相见 的,不过,呵呵。 - 然后呢,存在一个不可更改的客观规律
The Law of Nature
,就是master timeline
的时间方向为正向,这就导致了revert timeline
在真正展示的时候,实际上是以逆向的反转处理过程(reversed revert process)
的形式出现,就像电影里从未来射出的子弹,因为在revert timeline
中,当前这个点是未来的将来,所以在master timeline
上从当前走向未来的时候,在revert timeline
上就是从将来走向过去,从子弹打出弹孔回到子弹上膛。这部分概念在git
里当然没有,不过可以把reversed revert process
视为test branch
。
但是,隐含的危机就是,当revert
操作记录过多的时候(或许达到所有时间线记录的51%),就可能会引发世界的重构,比如时间轴方向永久逆转。 - 还有就是里面有个手机的功能,就是台词中提到的
record
,打个电话报个记录,就相当于git commit
,在时间轴中的这个锚点,就相当于git commit id
,要不然我咋知道要回溯到哪个时间点,最后男主就是靠这个救了女主的命。 - 最后还有一个隐藏的点,就是所有的并行时间线总会有个默认
merge
操作,至于是怎么merge
的,只能自己想想咯。
单一时间线的视角
其实说完这个Multiple TimeLine
的设定,估计看的时候是还是会有人懵圈,那是因为电影中有时候是穿插着单一时间线的镜头——从“master timeline”进到 “revert timeline”再进到 “duplicate timeline” 最后回到“master timeline”:
1)男主第一次进旋转门
这一段只有从“master timeline”进到 “revert timeline”
master男主
在车上拿到那个xx241之后,在高速行驶中被revert反派
要挟交出东西,期间有一辆事故车恢复正常,交出箱子后救下master女主
,然后是master女主
被反向子弹击中,master男主
为了救人决定进旋转门,因而进入revert timeline
成为了revert男主
,然后开车出去追击master反派
。期间反派一直在打电话给自己疯狂操作git commit -a -m "xxx"
而那头又在不断的查看git log
。最后revert男主
翻车(就是master男主
眼中的那辆事故车),还差点汽车爆炸冻死。
2)男主自己跟自己搏斗
这一段只有从“revert timeline”再进到 “duplicate timeline”
起点是“revert男主”趁着机场爆炸冲进密室,然后跟master男主
一顿干架,终于进入了旋转门,化身duplicate男主
被master尼尔
追然后被放跑
3)尼尔二次旋转拯救男主
这一段有非常复杂的分支跳转
最后决战的时候,有一半的人是revert组
包括尼尔和男主小分队
, revert尼尔
看到地下入口有炸弹后想阻止revert男主小分队
,但没成功,只好跑进战场中的旋转门,化身revert revert 尼尔
,然后开车去追revert男主小分队
,但依然没有成功,然后往回跑还碰上revert男主
开始进攻开枪攻击车子(这地方记不清了,如果没记错的话就是个BUG,因为revert男主小分队
已经入坑了,也有可能其实是revert revert revert 尼尔
了),然后不知道 怎么就提前入了坑躺在门口(不知道这个是revert n尼尔
了),最后终于成功的用车子把 revert男主小分队
拖了出来。
为啥这里要一顿 revert
操作呢,因为master
线里头男主还在歌剧院干活呢
多重时间线的视角
1)最典型的还是男主互搏这一段
最开始从master男主
视角看的,两个门同时出人,一个跟自己搏斗,一个被master尼尔
追。
这个地方就是按照大自然的时间方向,把master
、revet
、duplicate
三条时间线的内容同时播放出来的效果
2)女主看到自己跳海
这一段就是revert女主
看到master女主
带儿子坐船回来,然后干了点小事,接着跳海,被master女主
看见,以为是反派跳海自己自杀了
BUG
整部电影看下来,不可避免地发现了bug,我认为最大的bug有三处:
Bug 1 男主车祸后怎么回到机场爆炸现场,机场爆炸在车祸爆炸的一周前
revert男主
车祸之后差点被汽车爆炸冻死,然后就一直呆在船上的集装箱里了,那么他是怎么回到一周前的机场爆炸现场呢?
如果要合理解释的话,那就只能说在revert男主
差点爆炸冻死被救后一直昏迷,revert尼尔
为了救他,又带他和带伤的女主进了一次旋转门回到了更早的时间点,走进了一个revert again timeline
,总不能说他们呆的是一艘能够穿梭时光的集装箱吧,这一点完全没有交待,其实是有点经不起推敲的。
Bug 2 为啥能原地revert
就说revert男主
跟master男主
一顿肉搏之后跳进旋转门,转身就从旁边的门出来被master尼尔
追,这是什么操作?更大的问题是他出来后,还能跟外面的revert尼尔
和revert女主
连接上,没有一丝丝的时间错位。
Bug 3 master
和duplicate
到底能不能碰面
电影里多次强调,同一个人物的master
和duplicate
不能碰面相见,但是:
- 不同分支上的不同人物却可以进行正常 交互
- 在机场里
master男主
和revert男主
那一段激烈肉搏居然完全没事
只能说毕竟诺兰
不是码农,根本不了解这么一段复杂的git
操作之后,究竟会引出多么复杂的conflct
,唉。
Bug 4 尼尔是啥时候躺在那个门里头了
这一点我看的时候就很困惑了,他能躺进去但不直接阻止,可以理解为麻痹反派boss,但既然如此,为何小分队不直接是三人组呢?
其实关于这个bug,原本我想吐槽的是在其他点上,不过在写上上面那一段疯狂revert
操作的时候,我的思路完全被绕没了,只能说期间内部的conflict
太多了,最终一招git rebase
+ git merge -force
强行抹平了 。
毕竟 ,真实世界里还没有出现并行的时间轴,现实没有如果,生活还是要继续。
真的,原本下午看完电影的时候我还感觉自己看懂了,现在花了2个小时写完这片博客之后,我感觉把自己绕的有点懵,因为感觉bug有点多。
网友评论