缓存(第3/10页)
这里的居民把这里简单称为“世界”或者“都市”。原则上说,“世界”可以具有无限种形态,但因为计算资源的限制,以及考虑到居民的精神压力,“世界”基本上都采取了最基本的都市形态。另外,“世界”的物理法则也模仿现实。这倒不是说连相对论和量子理论都做了完美再现。为了节省计算量,“世界”基本是在牛顿力学的框架中运行,也没有模拟大气中的每个分子,只采用了古典的统计力学和流体力学的方程。动植物也只做了外表的模拟,内部构造基本都没有实现。尽管有这么多简化,但也足够让其中的居民产生错觉,认为这就是日常生活的世界了。
“世界”运行得很完美,但其中的居民还是有抱怨:难得是虚拟世界,偏偏一切都按照现实模拟,这也太没意思了。最好能加入一些超现实元素,哪怕一点点也好。
分析结果显示,如果无限制地接受居民的要求,不断导入违反物理法则的奇迹,计算资源转眼就会耗尽。不过,如果加以一定程度的控制,倒也不是无法实现。具体而言就是,居民为了使用奇迹——也就是魔法,需要消耗魔点。魔点可以赚取,也可以向他人转账。另外每个居民每周可以免费获得1魔点。
在天空飞翔的魔法每分钟消耗1点,石头变成金子消耗10点,瞬间移动50点。一开始,人们随意使用以取乐,但是很快就发现魔点的消耗量远远大于发生量,所以逐渐没有人会浪费了。到后来,居民更是把魔点代替货币使用。魔点具备理想货币的特征,它本身具有一定价值,因此很难发生极端的通货膨胀或者通货紧缩。如果有发生通货膨胀的趋势,那么居民们就不会将魔点当作货币使用而直接使用魔法。比如说,如果一顿饭要消耗10点,那么大部分居民都会使用2点凭空生成一份料理。像这样,通过消费魔点来抑制流通量,通货膨胀便可以消除。相反,通货紧缩的时候,人们又会停止消费,流通量增加,魔点的价值就会降低。
除了魔点之外,还有其他节约计算资源的系统措施。“缓存”就是其中之一。
在现实世界,一个人采取某种行动的时候,立刻就会产生某种反馈。比如用锤子敲玻璃,玻璃当场就会碎裂,从窗户上掉下来。但是,在“世界”中,情况却没有这么简单。某个人决定用锤子敲玻璃的刹那,计算机捕捉到大脑运动区域的兴奋,将之反映到虚拟现实中——移动手臂、抓起锤子、敲上玻璃。如果仅仅如此,并不会费什么大力气,但实际上却有很麻烦的问题。手臂、锤子、玻璃,全都是“世界”中的东西——它们和其他居民也在相互作用。比如说,附近有其他居民的时候,就需要考虑在他们的眼中如何反映这幅景象,这必须进行计算;还有模拟玻璃破碎的声音,也需要考虑不远处的居民会听到什么,这也必须进行计算。
这些细节必须加以考虑。“世界”是连续的,必须符合逻辑。每个人的个人体验如果相互之间有矛盾,“世界”就会逐渐分化,最终无法成为一个统一的世界。计算资源也会枯竭,居民们被扔进虚无。
但是,如果将一切都在计算之后再反映到虚拟现实,那响应速度就会很慢,会有一种慢镜头的感觉。想到要去敲玻璃,但是几秒钟之后手才开始行动,敲击的刹那一切动作又都停止,再隔几秒钟玻璃才会碎裂,然后才听到声音。为了这个计算,停止的不仅仅是当事人,毫无关系的所有居民都会同时发生这样的现象。当然,如果有足够的计算资源,就不会有这样的问题。但是如果有这样的空间和载重量,还不如设立缩小版的现实居住区更合理。
对应这个问题的办法就是缓存系统。每个居民都有一个缓存。从居民的角度看,缓存相当于“世界”的拷贝;从“世界”的角度看——也就是在其他居民看来——缓存是当事人的拷贝。
某人想要用锤子敲玻璃的时候,差不多同时,在缓存中当事人抓住锤子敲碎玻璃,同时发出声音。周围的居民受到惊吓,都来看他。但是,这只是当事人自己的体验,在“世界”中什么都还没有发生。在周围人看来,当事人还没有碰到锤子。因为缓存只需要计算自身经历,所以需要的计算资源很少,可以做出迅速反应。
接下来,缓存将自身内部发生的事情传递给“世界”。“世界”花费数秒时间进行计算,产生玻璃破碎的状态。这时候每个人的缓存接收到这一变化,各自重现玻璃碎裂的状况。到这时候为止,周围的居民们才真正看到了玻璃碎裂。