我一直被程序生成的行星深深吸引,基本上从Elder Scrolls开始。巨大的规模和它们提供的可能性一直让我觉得几乎无限。所以我决定将我从Sebastian Lague(https://www.youtube.com/c/SebastianLague)学习到的行星生成知识与我从Simon Holmqvist(https://www.youtube.com/@simonholmqvist1951)学习到的LOD系统使用Quad Trees结合起来。我的灵感来自Google Maps。我的目标是使用分而治之的方法从轨道视角生成行星和城市,直到达到单个房屋的级别,同时尽可能地确保玩家几乎没有注意到,或者完全没有注意到,后台发生的计算量。您可以在这里看到我的第一步,我称之为“像素行星”。您实际上正在看什么?其核心上来说,没有什么新鲜的。它主要是已知技术的组合,但被解释为地图。行星实际上是一个立方体。立方体的向量被标准化,然后乘以行星半径。立方体的每个面都是Quad Tree的根,Quad Tree的每个子节点被分成四个部分,直到达到23个深度。深度基本上对应于可见的缩放级别,就像Google Maps一样。对于一个大小与地球相似的行星,深度23的块将约为一平方米的大小。显然,生成此类潜在巨大的块数在前期将会花费很长时间,因此整个系统使用分而治之的方法,只显示和计算当前需要的块。在行星的例子中,这从最高级别的Quad Tree块开始,意味着立方体的面。每个块都获得一个128x128像素的纹理。当您缩放时,可见的块被分成四个新的块,每个块再次具有128x128像素的纹理。没有应用任何平滑处理。纹理的滤镜模式设置为点,以创建像素外观。对于每个像素,相应的球体点是计算并采样。目前,我正在使用单纯噪声来生成高度值。一个更深层次的块使用相同的底层高度数据。由于它只需要覆盖其父块的一四分之一区域,同时仍然具有相同数量的像素可用,它将获得更多的采样点来处理该较小区域,从而得到更多的细节。然而,这仍然会导致大量计算,因此我不得不将纹理生成移到并行Burst Jobs中。什么使这个方法特殊?我没有精炼网格,因为概念上我正在将地图映射到球体上。即使在最深层次,块也只有8x8个顶点。 我在3D模型上测试了类似的方法,通常会出现的小不一致性,例如不同尺寸块之间的裂缝,在这里根本不会出现。它是一个连续的表面。由于缩放是离散的,并且总是对应于Quad Tree的级别,每个级别的每个像素都具有类似的视觉大小。基本上,它将Web地图的原则转移到球体上。与传统的行星引擎不同,我只显示一个缩放级别一次,每个块大小均等,类似于Google Maps。因此,我不需要将不同大小的块拼接成一个连续的表面,并且可以完全忽略屏幕外的所有内容。块是否可见的计算纯粹是基于其坐标,甚至在块不存在之前。因此,每帧,只有实际可见的块才会被构建。这显著减少了需要计算的块的数量。噪声直接在球体上的3D位置上被采样。块不需要其父块,也不需要其邻近块。这意味着您可以直接跳转到行星上的任何位置,并且不需要块之间的缝隙。 我认为这个属性为我在城市和地区的分而治之系统的建立提供了一个非常好的基础,因为理论上我可以简单地取行星上的一个区域,并在其上构建一个完全新的内容,例如一个使用行星高度数据的城市。城市本身不需要了解行星的可视化方式。它只需要从噪音算法中获得的数据。最重要的是,我可以从轨道到单个房屋建立一个连续的链条。:) 下一步:行星实际上是一个刺猬,无法在当前的可视化方式下看到。高度数据具有巨大的尖峰,这意味着在一个适当的3D表示中,行星将基本上被覆盖在巨大的针上。因此,我需要先重新设计噪音算法。然后,高度数据将成为一个适当的高度图和可视化高度数据的基础。之后,我想将河流和湖泊集成,创建生物群落,并可视化它们。一旦噪音算法被重新设计并调整之后,我也想添加一个适当的高程图。您应该能够在任何时候切换到两个可视化方式之间。之后,我想生成城市。 我对Fantasy Town Generator(https://www.reddit.com/r/fantasytowngenerator/)深感着迷。我想实现自己的版本,或至少建造出与该惊人项目非常接近的东西。我还想拥有类似于Crusader Kings 3的地区。 我认为地区的层次结构在CK3中是极其合适的来简化复杂的模拟。例如,我不需要在行星的另一侧计算城市的人口增长。我可以模拟整个大陆在更高级别上,只要玩家没有主动与该大陆互动。另外,它看起来很酷。 我认为这可以与生物群落和高程图结合起来,创建一个算法来识别像沙漠、平原、山脉等等作为区域并自动绘制它们的边界。最终,我也想有程序生成的生命并可视化它们。植物、动物和人类。目前,我在思考使用90度的顶视图。类似于老的GTA游戏,或在更现代的形式上,Hotline Miami。主要是因为我认为这种视图可以大大减少需要生成的精灵和相应动画的数量。它可能永远不会像手绘精灵那样美丽。但是,对我来说,主要的吸引力在于来自组合学的潜在多样性。这是这个项目的主要驱动力。