自然魔法的数学原理
什么是魔法
“魔法”是(有资质的)人类实行的一种祈愿/或者如果你喜欢的话,事实上是一种程序。本世界自带了一个“根源”/事实上是解释器,可以实现这种祈愿。
对魔法的要求
对魔法的描述必须精确,否则解释器无法理解。
例如:你大喊一声“圣盾术!”,显然会得到”未定义符号”错误。
那么首先你要定义一个圣盾。例如说,圣盾(h, w)是一个在你前方1cm处的长h宽w的平面,你的祈愿是固定这个平面的空间(这太难了),或者使所有击打在上面的动能武器的动能下降到0。
其次你还要定义“前方”的坐标系。例如说,前方是以你右手食指的指尖为原点,食指方向为z,垂直食指并且平行于地面为x,第三个方向为y的一个局部坐标系中,z为正的方向。因为便于操作,食指坐标系也是大多数魔法师最常用的坐标系。
为了描述这个祈愿,需要大量的信息量。例如,刚才为了描述这个圣盾术至少花费了180字——每个中文字符是16bit,所以这个祈愿至少有3k bit,而且其中事实上还有不少词汇没有准确的定义。
当然用自然语言描述的效率也太低下了。因此人类发明了“预定义法术”/库函数。通过调用库函数,只需要指定x,y和z,另外还需要事先指定好坐标系(通常就直接指定食指坐标系),就可以简单的架一个盾。当然,这种库函数只能干一些预定义的事情(比如说架一个盾)。
由于显而易见的原因,坐标的绝对值越小,这个魔法的比特数越短。在你食指附近1cm处架一个盾很简单,但是在离你10m处架一个盾需要平白多至少10个bit。
空间的任何位置在任何被观察的瞬间同时只能有一个结果。由于显而易见的原因,如果不想你的魔法被其他魔法的效果覆盖(或者被物理效果覆盖,如果物理效果足够强的话),就需要在优先级参数上填充更多的比特数。
想要更好的描述愿望,显然言语的精度大于思想,而文字的精度又大于言语。如果解释器因为精度不足而无法理解祈愿,则解释器通常会先报错——但有时候用户会强制(--force)要求解释器执行祈愿,此时解释器会尝试自动bfs用户的潜意识,并且跑一个nlp来解析——这一切都会占用用户的精神力,并且可能导致用户卡机。
因此把自己的愿望预先写在物体上,需要使用的时候注入魔力,比起临时祈愿要有效的多。这种行为称为附魔。
对魔法的描述必须可实现。例如,你不能“砸瓦鲁多,让时间停止吧”,直到你学会怎么停止时间——比如说靠你自己觉醒一个替身(然后解释器才能理解“停止时间”)。在牛顿发现重力之前,你不能“让某坐标某处的大铁块悬停在空中”,因为你不理解如何让让某坐标某处的大铁块悬停在空中,而只能“在某高处创造一个滑轮组,从而把某处的大铁块吊上去”(如果阿基米德已经发明了滑轮,而且你学过的话)。顺便,创造魔法是所有魔法里最贵的,因为你不得不准备原材料,并详细描述如何不靠魔法创造你要创造的物体——这比破坏一个物体困难多了。
使用魔法的物理极限
为了能发出(
严格的说是改变,因为OpenGL是一个状态机)一个魔法,需要占用“精神力“/事实上是计算力,单位是instruction/s,或者说Hz。精神力是一种资质。事实上每个人类都有精神力:为了维持人类的正常体征,大概需要占用1k Hz的精神力(OTL大脑的运算速度)。但是大多数人类不会有多余的精神力来计算其他事情,而最有资质的人类的精神力可以以THz计。作为对比,OTL的CPU频率大概是几GHz。
如果充分有资质的人类想的话,她可以超频。这会暂时增加她的精神力,但是会极大的提高能量消耗。如果散热跟不上,将会发生烧脑,这是一种不可逆的严重脑损伤。
显而易见,精神力大致约等于传统跑团类游戏的INT(智力),因此并非只在魔学领域有用。例如,精神力较高的人类有更好的空间感知能力。
和解释器通讯(或者说,“输出魔力”),显而易见的要消耗能量。魔力事实上是你自身的生物能量,单位是J。
理论物理极限自然是著名的Landauer limit:每改变一个比特消耗约1e-21 J。很可惜,本世界人类进化的远没有这么完美,因此长时间输出魔力之后会透支体力。鉴于OTL(Our Timeline,即本世界)CPU效率大概有1e-9J/instruction,我们把这数字除个1k,就按本世界人类极限是1e-12J/bit好了。
作为参考,OTL正常人体消耗能量大概100J/s-200J/s,一天大概两三千卡。
大多数情况下,人体靠自身的新陈代谢(例如,靠糖酵解和三羧酸循环——当然燃烧脂肪的效率更高一些,anyway)来提供魔力。如果人体的能量或者瞬时能量功率不够,人就会出现流鼻血(话说流鼻血到底是哪门子设定,为啥使用能力过度一般都反应为流鼻血)/昏迷/直接扑街等现象。
有时候魔法需要被维持(例如,持续加热某个空间)。为了维持魔法的持续生效,需要持续不断的和解释器通讯,这需要占用“魔力输出”/事实上是带宽,单位是bit/s。
有一些材料可以被动的和解释器沟通,这相当于提供了带宽(例如,附魔的卷轴/法杖可以持续生效),但是为了驱动卷轴,依然需要支付人体自身的魔力。
资质主要来源于天赋,而且和遗传相对较没有关系,和OTL的INT一样。
然而,发现资质依然需要后天的努力。让爱因斯坦007加班审专利,他是写不出相对论的。
番外:关于解释器的细节
解释器以2e42Hz(普朗克时间的倒数)的帧率轮询,并且包含三部分。首先尝试把在这一帧收到的祈愿翻译成机器码;然后根据这一帧的情况尝试预测下一帧的结果(包括遵循物理法则的结果);最后是一个渲染器(类似OTL里的OpenGL),它渲染下一帧到整个世界。
解释器有时候会收到互相矛盾的祈愿。在渲染器做完倒数第二步——fragment shader,也就是对空间中每个位置计算该位置的可能状态——之后的最后一步是per-sample test,这包括一系列后处理测试,其中最重要的两个测试分别是Scissor test——丢弃所有不在地月系内的结果*,然后贴一个预计算的,随帧数变化的星空纹理(俗称skybox),以及Depth test——对空间中每个位置,丢弃所有优先度不够高的结果。换言之,祈愿的强度决定哪个祈愿被执行。
*题外话:“靠,人类发现万有引力了!赶紧更换一下贴图,摔,今天又要加班”——by社畜上帝
解释器是懒惰的。没有任何观察者,并且也不被祈愿影响的位置不会被渲染。当它第一次被渲染,解释器会随机填充一个值,人类管这种现象叫波函数的坍缩。
杂谈
谁知道所谓“人类”到底是哪里来的呢(笑
Last updated