Alexandria,THU生物狗 阅读原文 先说结论,可以,而且一定可以 实际上,这个问题的本质是一个拓扑学问题,而 MC 的地图生成机制决定了这个问题的答案 这个问题用更抽象的概念来总结,可以提炼为一个更明确的问题: 一个欧氏平面上有且只有两种颜色,任意一个完整颜色边界所对应的曲线是否封闭? 奶牛的黑白花纹这是该问题环境下的一个经典情景——在我们忽略掉那只左下角奶牛和她的牛奶的前提下 对应到 MC 上,首先我们知道,一个自然生成的 MC 地图中的实体方块有固体方块和液体方块两种;因此地表方块也只有两种形态,固体和液体。 显然,在传统意义上固体方块为陆地,液体方块为海洋。至于河流,湖泊和水洼,它和海洋在拓扑学上没有本质上的区别,除了大小和形状。比如连通海洋的河流可以看作海洋的延伸,两个海洋被一条跨越陆地的河流所联通则可以看作一个海洋,湖泊和水洼则可以看作微型的海洋。还有一个特例是岩浆池,将其算作液体看待 但是地下暗河不行,作为一个三维概念它不在地表,因此在这个二维问题中不参与讨论 此外,尽管 MC 的地图有高山和峡谷,但总体而言是一张无限大的平面,也就是欧氏平面,而不是像地球一样的球面或者带洞的甜甜圈形状 因此我们将一张 MC 地图的所有地表方块投影到欧氏平面上。至于水边的树冠和伸出水面的悬崖,可以在这个过程中忽略。(尽管算上它们也不会对结果产生本质影响) 于是就产生了上面这种奶牛图。唯一的问题在于,我们需要用哪种颜色代表陆地?哪种颜色代表海洋? 其实都可以,因为我们研究的是色块的边界而不是色块本身,陆地和海洋的填色不会改变边界的形状,因此不会影响到问题的实质 那么,如果是色块边界必是闭合曲线,则一定可以环游海洋回到原点。如果存在不是闭合曲线的情况,则未必可以返回。 显然,边界的意义是区分两个色块。那么当边界两侧的两种色块的面积均有限的时候,这个边界必然是封闭曲线 比如这个国际象棋的棋盘,当然我们需要忽略边框和上面的赞助商并想象这个棋盘按照规律无限延伸 当然了,网格肯定不是封闭曲线,但组成网格的每一个小正方形都是封闭曲线(直角在广义上也可以纳入曲线的概念) 如果边界两侧的两个色块,其一面积有限,另一面积无限,那么该边界也必然是封闭曲线 比如说这个白色圆形和它周边的无尽黑夜 毕竟这种情况我们只用讨论这个面积有限的部分就好了,面积无限的另一半你管它长什么样子 当然,这种条件还有个极端情况,比如我们规定里面这个圆直径为正无穷,这个时候看似边界两侧的面积都是无限,在拓扑学上,改变大小但不改变形状的变形不影响其拓扑性质。因此即使是无限大小的圆也等价于有限面积的圆,其本质仍然是一个封闭图形 如果边界双方的面积都无限呢? 这张图片很符合这种情景,想象一下黑白两种条纹向两侧无限延伸 显然这时候边界无法封闭。因为一个封闭的边界必然产生有限的面积 还有一种最混合的情景:两种色块的面积,都是既有无限的部分又有有限的部分 比如这张图,同时存在无限黑色,无限白色,有限黑色,有限白色 那么回归游戏,MC 中地图的海陆边界符合哪一种? MC 中有广袤的大陆,也有浩渺的海洋。那么它们究竟以怎样的形式进行排列?显然,按照上面的几种情况进行类比,海洋和陆地的存在形式一共有四种可能 1.有限面积的陆地,比如一座孤岛 2.有限面积的海洋,比如一个水洼(里面往往聚集着一大群溺尸发出可爱的气泡音) 3.无限面积的陆地,就,很大反正,比如说荒野大镖客的地图,周边是无尽的悬崖峭壁,虽说亚瑟连第一层都爬不上去 4.无限面积的海洋,比如洛圣都周围的海洋(开船开一年也没救,因为到达地图边界之后系统把你的坐标锁死了) 那么这四种基础地貌在 MC 中又是如何排列的呢?显然有限面积的水洼,沼泽,湖泊和和小岛是 MC 中司空见惯的地貌。但我们又知道,MC 的地图大小是无限的,因此它的宏观排布究竟是何种形式? 1.所有海洋和陆地的面积都是有限的,像瓷砖一样互相镶嵌着铺满整个地图 2.无渊无尽的海洋之上散播着一个个巨型岛屿一样的陆地 3.跨越天穹的大陆之上点缀着一个个巨型湖泊一样的海洋 4.无限的大陆和无限的海洋都是存在的,凶恶的无尽深渊和浩渺的盘古大陆分别霸占了地图的两端,其交界处无论是怎样混沌复杂或五彩缤纷的地形都无法影响它们面积的无限 4 是最复杂的情况。在这种情况下,地图的拓扑结构有极多的可能性。最简单的情况就是一边全是陆地另一边全是海洋,但是在众多别的情况下你甚至可以将地图想象成飞镖靶子,放射状的陆地和水域从中心向各个方向间隔着永恒延伸 或者条带状的水陆区域彼此间隔排列着,心情好了还带分叉的 你甚至可以把它们组合起来 现在回到能否绕海岸线一周回到原点的问题。通过之前的讨论我们可以知道,上述 1,2,3 情况下,你必然可以回到原点。但是 4 就未必了,你得指望着碰到的不是无尽深渊或永恒大地,而恰好是一个岛屿或者湖泊 那么,实际游戏中是哪一种情况呢? 答案是 3,无尽大陆和它的内海们 在 MC 世界中,海洋群系的面积约占整个地图的 1/4 左右,而剩余部分则为陆地 而海洋的存在形式基本上等同于陆地上的大型湖泊,整体被陆地所包围 MC 地图的生成模式是,先由伪随机数种子按照随机点边界法划分生物群系(注意只是划分而不是生成),然后按照邻接逻辑生成各个群系的类别(比如覆雪针叶林不能邻接沙漠,深海必须邻接浅海或海岸)。在此之后会按照 perlin 噪声函数生成每个生物群系的地形,再加入其它要素 因此,在划分生物群系的时候,相当于将地图划分为若干小块,每个小块可能会被分配到任何一种生物群系中,而海洋和河流在顺序上是最优先生成的 在生成过程中,海洋与河流都是有面积要求的。河流的长度与海洋的跨度都在 1000-3000 格之间,因此其面积必然是有限的,而与之对应的海岸线则也是有限长度。 如果想亲自验证的话用地图查看器,随便输入一个种子,找到一片海洋,就会发现都是形状各异的大湖,不会有反例的。而且海洋的大小一般都比较固定,往往在千格这个数量级上,不会有特别离谱的情况出现 因此得到答案,在 mc 中,在水方块和固体方块的任何一个交界点顺着任何一个方向一直走,必定可以返回原点 除了海岸线之外,在下界顺着岩浆走,也可以回到原点 当然,实际上尽管之前认为 MC 的地图是无限的,实际上是有大小的,边界在正负三千万格。也就是说 mc 地图的实际形状是一个变长六千万格的正方形。所以回到原点这个条件在边界附近是不成立的(实际上边界之外的地形仍然会渲染,但玩家已经无法移动过去了)。算是一种特例 分割线—————————— 那么,这个问题放在现实生活中能否成立 唯一的区别是游戏地图均为欧氏平面,而现实生活中的地图表面则是球面 因此答案是,必定可以 原因很简单,因为球面是封闭的,因此球面上任何区域都是封闭的,哪怕这个球无限大 声明:文字部分为原创,图源网络,出处见水印 阅读原文