UID550118性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2022-8-5最后登录1970-1-1
| 本帖最后由 QiguaiAAAA 于 2025-10-8 14:19 编辑
天圆地方 GeoCraft
天圆地方(GeoCraft)是一个致力于将地理要素融合进Minecraft的模组。模组在保证尽可能不添加新方块、物品等要素的情况下,尽一切可能通过修改游戏机制,使Minecraft世界更加符合真实世界,将真正的地理带入Minecraft。
该模组仍然处于早期开发中,功能尚不全面,且不保证能够稳定运行。如遇bug,请前往模组的Github页面,并发布issus。
模组已实现的主要内容有:
另外,模组拥有高度可配置的配置文件,并提供了功能丰富的API,供其他第三方模组实现更多更好的功能。
流体物理
模组对原版流体系统进行了大改。并提供了两种流体物理实现方式。对于默认实现方式(MORE_REALITY):
- 每块流体都是真实且有限的;
- 流体在水平面上会向四周摊开;
- 流体会向低处流动,包括竖直方向下落和坡度流动;
- 被方块填充时,流体会向四周流动而不会消失;
- 密度高的流体会移动到密度低的流体下方;
- 水(或其它支持的流体)会自发下渗至透水方块(需要注意,这个概念不同于含水方块),或蒸发;
- 水在地表温度低于0℃时会结冰(受原版方块限制,非满格水会结冰成对应高度的雪);
- 雪、冰会在地表温度高于0℃时融化;
- 加入了冰雪混合物,用于平滑冰和雪的转化;
- 下雨时会随机在地面上生成一片水。
类原版(VANILLA_LIKE)流体物理实现方式可以在配置文件中手动切换,请注意该模式并不推荐,因为其缺乏了很多有趣的功能。该实现方式提供:
- 流体会在可能的情况下向下流动,包括竖直向下掉落和弱化版的坡度流动;
- 在水平面上会保持原版的行为向四周摊开;
- 密度高的流体会移动到密度低的流体下方。
模组还为流体实现了一个高性能的压强系统,用以替代低性能的坡度流动算法。压强计算占用独立的线程,因而大幅降低了大量流体流动时的更新延迟。但由于压强计算需要存储计算数据,因此内存占用会偏高。若开启压强系统,建议JVM堆内存分配至少分配4G,否则可能会出现频繁的GC垃圾回收。
大气
模组实现了一个基于游戏数据实时演算的动态大气系统,游戏内ID为surface(主世界大气系统)。该大气系统独立于原版的生物群系,仅在初始化时使用生物群系的数据。这意味者玩家的活动会实实在在改变气候!
需要注意,该大气系统仍处于早期开发,对于特殊情况的模拟(例如空岛)存在较大失真,且有时会出现一些奇怪的情况。
除了上述的动态大气,大气系统还有多种实现方式(原版模式[基于生物群系],封闭模式[密闭且恒温大气]),且支持第三方 mod添加更多大气系统。
大气刻
大气的更新间隔叫做大气刻。默认1大气刻=60游戏刻,但这并不意味所有大气都是同时更新的。为了提升性能,大气是分布更新,这意味着所有加载中的大气都会被均摊成60份进行更新。即使世界同时有100000个大气加载,一游戏刻更新的大气在理想状况下也仅有大约1666个左右。
性质
大气会对游戏世界造成如下影响:
- 气温越高,水汽压越低,水蒸发会越旺盛;
- 地温低于0摄氏度时,水会结冰;
- 大气水量充沛时,多余的水会降落到地面。
同样,下垫面性质也会影响大气:
- 下垫面返照率越高,大气升温越慢;
- 下垫面有水,比热容会变大,大气温差变小;
- 水的相态变化会释放或吸收热量,影响温度;
- 下垫面的海拔越高,大气会越稀薄。
存储和运行
大气的存储和运行独立于区块存储和运行。大气会在每个维度的文件夹DIMx(x为维度ID)下的atmosphere文件夹保存.atmdat文件作为大气数据存储文件。大气的加载范围也会比区块的加载范围更大,且区块卸载并不一定大气会卸载,由此大气可以保证更加真实的大区域气候模拟。
土壤(透水方块)
模组通过引入一个暂时称为“透水方块(Permeable Block)”的概念,实现了土壤水的模拟以及和不同流体的交互。需要注意,在定义上,含水方块从集合角度讲是“透水方块”的子集(含水方块⊆透水方块)。例如:泥土、草方块、沙子都不是含水方块,但都可以透水。楼梯既是含水方块,又应该被认为是透水方块。
透水方块会带来更新鲜的游戏玩法。例如,由于土壤可透水,在较湿润群系建设地下室成为了一项较麻烦的任务,因为你必须阻止潜在的漏水可能(需MORE_REALITY模式)。但反过来,具有适宜湿度的沙子将不再容易落下,而是会形成稳定的结构。
在不同水物理模式下,土壤水(包括其他透水方块)的表现比较不同。但只有在MORE_REALITY流体物理模式下,你才能体验到土壤水的几乎全部机制。
土壤水(包括其他透水方块)的实现并不是通过添加新方块实现的,而是通过Mixin拓展了原有方块的方块状态,这意味着尽管本模组看起来没有添加任何新的方块,但你并不能随意卸载该模组,否则这意味着某些被修改的方块的方块种类会变得异常。
网络通信修改(仅服务端)
为了实现原版客户端也能连接添加了本模组的服务器,模组默认在服务端启用了网络通信修改功能。模组会修改发往所有玩家的数据包信息,并将拓展的方块状态映射回原版客户端可读取的方块状态,以实现对原版客户端的兼容。但这意味着除了耕地方块之外,玩家将无法读取其他方块的湿度信息,这会一定程度上提高游戏难度。
运行要求
模组要求使用MixinBooter作为前置以提供Mixin环境。
可以仅安装在服务端,但在双端安装下可以提供最佳效果。
模组对CPU要求不高,但由于1.12.2原版光照系统的限制,安装诸如Alfheim Lighting Engine的光照优化模组可以极大提高大量流体更新时的性能。但是在客户端,大量流体更新仍然会导致FPS波动,甚至出现卡顿。
若开启压强系统且启用多线程计算,并关闭坡度流动算法,则对CPU单核性能要求可进一步降低,但对内存要求会显著提高,建议至少分配4GB的最大JVM堆内存。另外,压强系统其实很会吃CPU的多核性能,请确保你的CPU拥有比较好的多核性能。
你也可以通过配置文件调参以调整性能。
兼容性
- 一般情况下,模组的流体物理同样支持其它Mod加入的流体,但若其它Mod的流体重写了流动实现,则其无法具有本模组提供的流体物理效果。另外,MORE_REALITY实现了对沉浸工程中混凝土的支持。
- 模组的MORE_REALITY流体物理实现重写了沉浸工程和工业时代2的泵抽取和流体放置逻辑,你可以在配置文件中对其进行调整。
- 你可以在配置文件中禁用指定流体的物理效果。
- 若卸载本模组,则一些透水方块会因数据值超出原版方块状态范围而变成同方块但不同数据值的方块,例如泥土可能变成菌丝,沙子可能变成红沙。
- 网络通信修改可能会和诸如反矿透插件之类类似原理的mod、插件冲突。为避免此问题,你可以在配置文件中禁用该功能。注意!禁用后,若不使用其它mod、插件修改网络通信,则原版客户端或其它没有装本模组的客户端会出现上一条所述的异常情况!
- 若压强系统因多线程实现而出现崩溃问题,请尝试禁用多线程或禁用压强系统。
- 该模组目前不兼容Fluidlogged API。
Q & A
问:该mod有移植到其它版本的计划吗?
答:暂时没有。
问:还可能加入什么内容?
答:外力作用啊、可再生岩浆啊等,反正想到什么有趣的地理机制就加什么。
问:会加入新方块、实体等内容吗?
答:会,但是会以附属的形式出现。因为加入这些内容会要求客户端也必须安装此模组。
问:可以加入整合包吗?
答:完全可以!但请注意该模组仍处于早期开发阶段,加入时务必小心。
问:更新频率怎样?
答:由于时间问题,接下来很长一段时间不会对模组进行很大的更新。
问:开发附属有哪些注意事项吗?
答:本模组采用Apache 2.0协议开源,请在开发的时候注意不要违反该协议。另外,该模组仍然处于早期开发阶段,部分API(尤其是大气部分)可能会发生较大变动,这些变动不会考虑API上的向后兼容性。但考虑到接下来很长一段时间不会有太大更新,因此这些变动可能是可以接受的。
|
|