作为虚拟世界的创造者,我们的目标是为用户创造引人入胜、有趣的环境。这意味着要在设计允许复杂和意外行为出现的数字物理法则与确保可用基础设施能够支持这些行为之间找到平衡。要做到这一点,我们必须考虑数字物理法则的三个主要维度:时间、其定律的形式以及这些定律的适用范围。
我们将虚拟世界中时间的流逝,称为虚拟世界物理法则在其自身的迭代应用。每个离散应用都是世界时间流中的一个“瞬间”。设计世界时间的一种方法是让它与外部时间一起不断前进。在区块链上实现的虚拟世界中,每个区块都对应着世界中经过的一定数量的瞬间,无论区块中包含什么交易。这被称为“同步”时间(synced time)。这种方法可以让用户对世界更感兴趣,因为它让他们能够实时看到他们行为的后果(影响)。此外,它还会导致世界内的时间流逝,世界不断更新,从而促进有趣行为的出现。
然而,这种方法也有缺点。更长的时间跨度通常需要更多的计算资源,这很快就会超出链或服务器的容量。在常规区块链上实现此系统也可能很困难,因为所有链上更改都必须由外部用户的交易发起。
同步时间的替代方案是非同步时间(unsynced time)。在这种方案下,世界上的时间流逝不一定随着外部时间的推进而推进。相反,时间会根据某些事件(通常是用户操作)向前移动。不涉及计时器的传统棋盘游戏属于类似类别。非同步时间更容易在链上实现,因为它符合区块链设计支持的模型。然而,它也牺牲了一些可以让世界更有趣的功能。
世界构建者还必须决定,控制虚拟世界的数学定律是遵循开放形式还是封闭形式。封闭形式表达式具有固定数量的运算。但是,对于开放形式(或递归)表达式,运算数量会根据给定变量而增加。在开放形式表达式下,只能通过将世界定律反复应用于已知状态,来计算世界的未来状态。复杂的实时环境(例如矮人要塞)通常属于此类。另一方面,封闭形式表达式允许根据过去状态和它们之间经过的时间,计算出恒定时间内的任何未来状态(假设没有未来的用户操作会改变状态),就像俄罗斯方块游戏中掉落的棋子一样。
开放式表达可以让虚拟世界变得更有趣,因为就像现实世界一样,它们都是有限可预测的。预测世界的未来状态,需要越来越多的时间和计算资源。此外,意想不到的宏观行为可能从简单的微观互动中产生。在一个由封闭式表达控制的世界中,这些突发行为通常只在外部发生,通过用户的行为(他们自己的行为就像开放式表达),而不是在世界本身的物理范围内发生。
这种开放和封闭形式表达式之间的权衡涉及与时间类似的平衡。封闭形式表达式可能会降低世界的潜在趣味性,但它们也使其在计算上更高效。封闭形式表达式,可以与同步或不同步的时间一起使用。当在区块链上实施时,当时间同步时,它们比开放形式表达式具有显着优势。由于任何长度的时间的成本都是恒定的,因此可以设计世界,以便仅在用户发送交易时更新链上状态,但它被设置为自上次更新以来的时间过去后的状态。
在现实世界中,时间在可能无限的宇宙中同时流逝(具有一些相对论的复杂性)。但在虚拟世界中,情况并非如此。
首先,虚拟世界可能明显有限。随着规模的扩大,趣味性的可能性往往会增加,在一个由 20 亿个星系组成的世界中,趣味性会比在一个由两个原子组成的世界中发生得更多,但计算成本也会增加。这两种关系都与前面提到的两种权衡密切相关:时间的流逝和物理定律的形式。
其次,虚拟世界中的时间不必无处不在。为了减轻世界的计算负担,可以将世界划分为离散区域,这些区域的时间流逝方式不同。例如,在有用户活动的区域可以使用更复杂、更昂贵的物理法则,而在无活动的区域可以使用更简单的物理法则。这种方法的缺点是双重的:它会使世界看起来不一致且缺乏完整性,这也限制了世界法则的设计空间,并给世界构建者带来了避免混淆用户的负担;它还限制了因果关系在世界中的传播方式,因为如果一个区域和另一个区域之间的空间在时间上冻结,那么它们之间的行动就不会对另一个区域产生影响。物理法则适用的区域的大小是一个主要的设计考虑因素,它将影响世界所需的资源以及它所能达到的趣味性水平。
要创建一个有趣且引人入胜的虚拟世界,必须仔细平衡计算效率和趣味性。这包括决定使用的时间类型(同步或非同步),以及评估将要控制世界的物理定律的形式。物理适用区域的大小是另一个关键要素。通过认真做出这些选择,世界构建者不仅可以在保持世界计算负担可控的同时实现趣味性,还可以为其他开发人员创造一个极其丰富的创意基础。
原文链接:https://aw.network/posts/architecting-physics