地图是怎样生成的(二)

您所在的位置:网站首页 文明6平原丘陵算平原吗 地图是怎样生成的(二)

地图是怎样生成的(二)

2023-12-26 11:36| 来源: 网络整理| 查看: 265

文章内容与专栏封面无任何关系,选图原因仅为个人偏好。

Pixiv ID:79275478

文章发布时游戏版本 :1.0.0.341(443561)

前言

地貌篇来了,由于泛滥平原生成器是隐藏在源代码的,所以无法得到准确的生成规则,只能凭着函数参数和大量数据进行推测,为此耽误了不少时间。

过两天稍微比较忙,自然奇观篇和地形篇可能过三四五六天更?地形篇更完会插一个番外,有关间谍和摇滚乐队的概率的。

神标常用结论将会用蓝色字体标注出,不想看详细公式的读者可以选择性阅读。

一、生成顺序

为每一条河流生成泛滥平原(第二部分讲解)。

检测该地图是否允许海岸有山脉,如果不允许,则替换为同类丘陵。

生成极地浮冰(第三部分讲解)。

从下到上从左到右扫描地图每一个单元格。

如果该格是不可通行地形或已经拥有地貌了,则跳过此格扫描下一个单元格。

否则,如果该格是海岸,则判定是否生成礁石(第四部分讲解)。

否则,如果该格子是陆地单元格,那么已扫描的陆地单元格(初始为0)+1,然后按顺序判定此格是否生成沼泽(第五部分讲解)、雨林(第六部分讲解)或森林(第七部分讲解)。

生成自然奇观,具体规则将在之后的专栏讲到。

从下到上从左到右扫描地图每个单元格,并判定是否生成绿洲(第八部分讲解)。

生成地热裂隙(第九部分讲解)。

二、泛滥平原的生成

本部分内容大部分为根据生成器参数与实验数据推测出来的近似规律,而非准确规律!

本部分中,“一片泛滥平原”代指一次洪水影响的全部泛滥平原单元格,“一块泛滥平原”代指一个泛滥平原单元格。

每条河流至多拥有一片泛滥平原——哪怕他绕了地球大半圈。

泛滥平原优先从河流最下游的两侧的可生成地形上,沿河向上生成,遇到不可生成地形时停止。注意,由于文明6生成的河流是纯线性的,所以河流交汇处为其中一条河流的末端!

一片泛滥平原的大小为4~10格。换句话说,如果一条河全程都找不到可以生成4格泛滥平原的流域,那么这条河将不会生成泛滥平原。同时,当一片泛滥平原已经生成10格时,哪怕没有遇到不可生成地形也会停止。

一块泛滥平原可以被多片泛滥平原(也可以说是多条河流)共享。

实例讲解

泛滥数量实例

本图中,尽管红色河流的长度在游戏中很少见,而且其流域均为可生成泛滥平原的地形,但其仍只在最下游生成了一片泛滥平原。

河流交汇实例

本图中,蓝色河流与白色河流交汇。由于蓝色河流在交汇后消失,所以蓝色河流在交汇处沿河向上生成了一片共10块泛滥平原。而白色河流则在流入湖泊前,从入湖口的三角洲向上生成了一片共5块泛滥平原(遇到山脉停止)。

泛滥大小实例1

本图中,蓝色河流的可形成泛滥范围只有3格(白色),不可形成泛滥,故本河没有泛滥平原。

泛滥大小实例2

本图中,虽然白色的泛滥平原的上游并没有阻碍泛滥平原生成的地形,但由于一片泛滥平原上限为10格,故只生成了10格。

泛滥大小实例3

本图中,虽然红色河流的末端在河流交汇处,但是由于白色区域的大小不足以形成最低规模的泛滥平原,所以其泛滥平原生成在了蓝色区域。

泛滥共享实例

本图中,白色的河流的洪水影响区域为白色的泛滥平原,蓝色的河流影响区域为蓝色的泛滥平原(通过实际测试得知)。可见有两块泛滥平原同时被两片泛滥平原共享。

三、浮冰的生成

浮冰通常占地图总大小的15%。浮冰分为8步生成,首先生成永远不会融化的永冻冰(15%),然后依次生成会在气候等级从7~1会融化的冰(1~4级各10%,5~7级各15%)。

永冻冰

只会生成在不靠近陆地的地图边缘上,理论数量为地图总格子数*15%(浮冰占地图大小)*15%(永冻冰占总浮冰大小)左右。如果满足条件的地块数小于永冻冰的理论数量,则所有满足条件的地块都会生成永冻冰。

可融冰

可融冰只会生成在其它浮冰旁,并且可以靠近陆地生成。对于任一满足条件的地块,其生成浮冰的几率为:

该层浮冰理论数量 / 满足条件的地块数 + 5 × 相邻浮冰数

相邻陆地的单元格的概率变为理论的1/5。

可融冰共7层,当气候变化等级为1融化的可融冰生成完毕后将 生成。

四、礁石的生成

礁石只会生成在纬度不高于70°的非湖泊海岸,并且不能与任何相邻河流的陆地单元格相邻。

比如黄叉位置因为与红线相邻,所以不能生成礁石

如果被扫描到的单元格可以生成礁石,那么可生成礁石的单元格(初始为0)+1。如果当前已生成的礁石占可生成礁石的单元格的比例没有到达规定值(在常见的地图中为9%),则会进行生成概率判定。

礁石生成的基础概率是100%,如果与其它礁石相邻会降低(1个-25%,2个-50%,3个或4个-75%。注:由于是从下到上依次扫描格子,所以不会出现相邻5个或6个礁石的情况,毕竟本格上面的两个单元格还没有被扫描到。下同。),每远离赤道一格降低3%。

也就是说,礁石倾向于生成在赤道附近,并且倾向于分散分布。

五、沼泽的生成

沼泽只会生成在草原上。

如果被扫描到的单元格可以生成沼泽,且当前生成的沼泽占已扫描的陆地单元格比例没有到达规定值(常见地图的标准设置为3%。降雨量设置为干旱为1%,潮湿5%,随机为0.5%~5.5%间的一个随机值。),则会进行生成概率判定。

沼泽生成的基础概率为66.7%,如果与其它沼泽相邻会变化(1个+11.1%,2个或3个+33%%,4个-50%)。

也就是说,沼泽有群聚性,并且倾向于生成在大片无法生成沼泽的陆地可通行地形(如冻土、沙漠)的东部或北部。

六、雨林的生成

与一般人认知不同的是,雨林除了会生成在平原与平原丘陵上,还会生成草原与草原丘陵上。但是如果生成在草原或草原丘陵上,该单元格的地形会被强制转换为平原与平原丘陵。雨林只会生成在纬度不高于20°的地区。

如果被扫描到的单元格可以生成雨林,那么可生成雨林的单元格(初始为0)+1。如果当前已生成的雨林占可生成雨林的单元格的比例没有到达规定值(常见地图的标准设置为40%。降雨量设置为干旱为36%,潮湿44%,随机为35%~45%间的一个随机值。),则会进行生成概率判定。

雨林生成的基础概率为66.7%,如果与其它雨林相邻会变化(1个+11.1%,2个或3个+33%%,4个-50%)。

也就是说,雨林有很强的群聚性。

七、森林的生成

森林会生成在草原、草原丘陵、平原、平原丘陵、冻土与冻土丘陵上。

如果被扫描到的单元格可以生成森林,且当前生成的森林占已扫描的陆地单元格比例没有到达规定值(常见地图的标准设置为18%。降雨量设置为干旱为14%,潮湿22%,随机为13%~23%间的一个随机值。),则会进行生成概率判定。

森林生成的基础概率为66.7%,如果与其它森林相邻会变化(1个+11.1%,2个或3个+33%%,4个-50%)。

也就是说,森林有群聚性,并且倾向于生成在大片无法生成森林的陆地可通行地形(如雪地、沙漠)的东部或北部。

八、绿洲的生成

绿洲只会生成在沙漠中。绿洲不会生成在其它地貌附近,并且不能与任何相邻河流的陆地单元格相邻(和礁石类似)。

如果被扫描到的单元格可以生成绿洲,且当前生成的绿洲占可通行陆地单元格总数的比例没有到达规定值(常见地图的标准设置为1%。降雨量设置为干旱为0%,潮湿2%,随机为0%~2.5%间的一个随机值。),则会有25%的几率在该格生成一个绿洲。

由于绿洲的生成条件极为苛刻,所以生成数量通常达不到期望值。

九、地热裂隙的生成

地热裂隙会随机分布在距离板块交界处1~3格的地方——除非可用单元格不足以放下全部地热裂隙(这时多出来的地热裂隙会随机生成到地图的任何地方)。

一张地图的地热裂隙数量为该图可通行的陆地单元格总数的0.5%(向上取整),这个数值在标准千湖图通常为16。

后记

如果你通读了全文还没有明白为什么南极多森林/南极北部多沼泽,请回到第一部分的步骤4,仔细思考从下至上从左至右的扫描方式会带来怎样的结果。如果你只读了蓝色部分,那记住结论就好。

我看完这个算法着实笑出了声,未来几天可能会做一个优化地貌分布的MOD,如果没发说明我鸽了。

Pixiv ID:79275478

这次封面还是和上一个系列同一个画师的,喜欢的话去点个关注啊

关注可获得文明6更多更新消息与机制解读

如果你觉得本文是干货内容,烦请三连或者充电支持下,没硬币的点个赞也行啦~

我不咕咕咕啦,JOJO!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3