时间旅行

林一二2020年08月29日 22:25

时间旅行有多种模型,有些模型逻辑并不自洽,是难以在「讲理」的环境中实现的(例如用实际代码写的游戏里),而只能在自然语言书写的小说中存在。

我打算梳理一下有哪些时间旅行模型是可用于游戏设计的,它们都各有哪些限制。

永恒时空

重点关心可以有「永恒时空」存在的世界,即玩家可以像永恒的终结里的时间管理局一样,在一个时间稳定向前的稳定时空上(即永恒时空),同时观测「可塑时空」所有可能的时间线的所有时间点。

我们假设「当前时间」的移动是需要「真实时间」的,即真实世界的电脑需要消耗时间来模拟一个世界的发展、推动「当前时间」向前。当修改过去的状态时,处在稳定的时空上我们会发现,这个修改可以导致未来发生变化,但是这需要重新一帧帧地计算未来,一帧帧地推进「当前时间」,我们可以用哆啦A梦中的术语称这个重新模拟的过程为「时间震」。

这个「时间震」到达时间旅行者出发的那个未来时间点需要不少的「真实时间」,如果玩家控制主角回到过去杀死祖父,则在时间震到达主角出发的时间点之前,主角都不会消失。在「时间震」到达后,我们对于旧数据的删除量会导致不同的情况:

  1. 保留所有旧数据,即像五维象棋里采用的平行世界模型那样保留旧世界历史,不需要「时间震」的概念
  2. 删除旧世界的数据,但保留离开旧世界的数据,即认为时间旅行者通过「永恒时空」中转,不受「时间震」影响,不会消失
  3. 除了删除旧世界的数据,还专门标记所有来自旧世界的数据(例如时间旅行者),在「当前时间」上将数据删除,表现为「当前时间」运行到开始时间旅行的时间点后,在「当前时间」上将旅行者删除,然后继续向前运行
  4. 除了删除旧世界的数据,还专门追踪所有来自旧世界的数据,删光其在当前时间线上产生的所有数据。这需要删除「当前时间」之前的数据,等价于「永恒时空」进行了一次官方的时间旅行,所以会触发重新模拟,模拟祖父没被杀的时间线。

时间旅行模型

单时间线模型

回到过去可以改变现在,是被讨论得最多的模型,有各种相关的悖论和定律提案。

有限模拟机内存原则

只有一个单例的时间旅行者时,可以改变过去,但是回到未来时物非人非。

作为游戏开发者,我认为可以假设能用于模拟宇宙的资源是有限的,因此当能时间旅行的观察者(即「玩家」)回到过去后,「现在时间」即跟着观察者一起移动,而之前的时间线则被销毁,时间线将从观察者所在的位置开始重新模拟,因此时间线不分叉,永远只存在一条时间线。

当旅行者回到未来时,看到的是从被改变点开始重新模拟的世界,他熟悉的朋友完全消失、研究时间旅行技术的科研机构可能也不存在,他身上的时间旅行设备将是最后一套。

缺点是无法支持多个观察者同时存在,宇宙中的其他人类必须是没有灵魂的(非玩家角色 NPC),不然每个观察者都将维护一套宇宙,得为另一个留在未来的观察者保留他的世界,这就变成平行世界模型了。

诺维科夫自洽性原则

只有事件属前后一致的因果循环才能出现,矛盾的则不能。 其中因果循环指对过去做出改变后对时空旅行者的影响。

如果回到过去做的事情是杀祖父这种会导致新历史和旧历史不一致的事情,它就不会发生,或者说你以为杀了祖父其实杀的是别人(例如《时空罪恶》里男主为了防止「自己看到死去的女人是自己妻子」,就给一个陌生女人穿上自己妻子的衣服…)。 如果时间旅行只是到无人区采集种子,就可以安全地发生。

宿命论

《你们这些回魂尸》改编的电影就叫《宿命论》(predestination 的英文也被译为《前目的地》),而如果变成游戏了,玩家可是偏不信宿命论的,你让他回到过去救自己,他肯定偏不救,就没法完美宿命论因果轮回了。

除非因果轮回是一个游戏任务,轮回失败的结果是游戏世界崩溃消失,这样玩家才会认真去完成宿命。

平行世界模型

每次向过去旅行都产生一个新的平行世界。

这个在模型中,时间旅行者不能真正改变过去,无法通过时间旅行让当前时间线变得更好。

现在的时间线只会更糟

更糟的是,因为时间旅行者离开了当前时间线,他的那些依然留在当前时间线的朋友将面对一成不变的糟糕现状,还会少了一个得力干将。

这在《穿越效应》中表现为,清国皇帝等着主角到未来请救兵解决自未来而来的终结者,但主角选择回到过去,其队友虽然在过去开辟了大明帝国,但原时间线的清国皇帝却只能在没有等到救兵的情况下苦苦顽抗,最终抱恨终老。

只读过去模型

你可以回到过去和历史人物聊天,但你回到现在时会发现什么也没变。

这个在模型中,时间旅行者不能真正改变过去,无法通过时间旅行让当前时间线变得更好。

可能的原理

狄拉克海上的涟漪里,主角认为时间旅行是从狄拉克海上借用能量,而返回时会将能量全部归还(相当于没有能量对过去传递那怕 1bit 的信息),所以无法对过去有任何改动。这个理论的问题在于,主角回到现在时会带着从过去获得的记忆,这相当于不消耗能量就从过去获得了信息。

Code
时间旅行有多种模型,有些模型逻辑并不自洽,是难以在「讲理」的环境中实现的(例如用实际代码写的游戏里),而只能在自然语言书写的小说中存在。

我打算梳理一下有哪些时间旅行模型是可用于游戏设计的,它们都各有哪些限制。

!! 永恒时空

重点关心可以有「永恒时空」存在的世界,即玩家可以像[[永恒的终结]]里的时间管理局一样,在一个时间稳定向前的稳定时空上(即永恒时空),同时观测「可塑时空」所有可能的时间线的所有时间点。

我们假设「当前时间」的移动是需要「真实时间」的,即真实世界的电脑需要消耗时间来模拟一个世界的发展、推动「当前时间」向前。当修改过去的状态时,处在稳定的时空上我们会发现,这个修改可以导致未来发生变化,但是这需要重新一帧帧地计算未来,一帧帧地推进「当前时间」,我们可以用哆啦A梦中的术语称这个重新模拟的过程为「时间震」。

这个「时间震」到达时间旅行者出发的那个未来时间点需要不少的「真实时间」,如果玩家控制主角回到过去杀死祖父,则在时间震到达主角出发的时间点之前,主角都不会消失。在「时间震」到达后,我们对于旧数据的删除量会导致不同的情况:

# 保留所有旧数据,即像[[五维象棋]]里采用的[[平行世界模型]]那样保留旧世界历史,不需要「时间震」的概念
# 删除旧世界的数据,但保留离开旧世界的数据,即认为时间旅行者通过「永恒时空」中转,不受「时间震」影响,不会消失
# 除了删除旧世界的数据,还专门标记所有来自旧世界的数据(例如时间旅行者),在「当前时间」上将数据删除,表现为「当前时间」运行到开始时间旅行的时间点后,在「当前时间」上将旅行者删除,然后继续向前运行
# 除了删除旧世界的数据,还专门追踪所有来自旧世界的数据,删光其在当前时间线上产生的所有数据。这需要删除「当前时间」之前的数据,等价于「永恒时空」进行了一次官方的时间旅行,所以会触发重新模拟,模拟祖父没被杀的时间线。

---

! 时间旅行模型

<$list filter="[tag[模型]]+[tag[时间旅行]]">

!! <$link><<currentTiddler>></$link>

 {{!!text}}

</$list>