跳转到主要内容

模拟板块构造、侵蚀等的地球生成器。

项目描述

WorldEngine - 地球生成器
=========================

[![覆盖率状态](https://coveralls.io/repos/Mindwerks/worldengine/badge.svg?branch=master&service=github)](https://coveralls.io/github/Mindwerks/worldengine?branch=master) [![构建状态](https://travis-ci.org/Mindwerks/worldengine.svg?branch=master)](https://travis-ci.org/Mindwerks/worldengine) [![构建状态](https://ci.appveyor.com/api/projects/status/io4ljim2ra83df23?svg=true)](https://ci.appveyor.com/project/ftomassetti/worldengine)

_当前稳定版本为0.19.0_

您可以生成自己世界的相关数据,包括一系列图像(高度图、生物群落等)。

例如

```bash
worldengine world -s 1 -n seed1
```

世界是通过板块模拟、侵蚀、雨影、Holdridge生命区模型以及许多其他现象来生成的。

创建的世界可以用来模拟文明的演变(参见项目[civs](https://github.com/ftomassetti/civs))。

还可以生成额外的地图,例如古老外观的地图

```bash
worldengine ancient_map -w seed1.world
```

![](https://raw.githubusercontent.com/Mindwerks/worldengine-data/master/images/examples/ancient_map_seed1.png)


我们创建了一个[Google组](https://groups.google.com/forum/?hl=en#!forum/worldengine):如果您有任何想法、问题、建议或希望贡献力量,请[加入我们](https://groups.google.com/forum/?hl=en#!forum/worldengine)!

互操作性(Python,Java)
===============================

我们非常乐意看到WorldEngine与其他工具一起使用。由WorldEngine生成的世界可以加载到Python应用程序中,使用WorldEngine作为库。Java应用程序可以使用[WorldEngine-Java](https://github.com/Mindwerks/worldengine-java),这是一个用于加载WorldEngine文件的Java库。

世界可以使用protobuf格式或hdf5保存,这些格式在多种语言中都有库。我们一直在努力支持更多格式,并且总是乐于探讨改进互操作性的方法。

二进制包
===============

Windows、Linux和Mac的二进制包可以在[发布页面](https://github.com/Mindwerks/worldengine/releases)找到。

图形界面
===

一个实验性的(并且有限的)图形界面作为单独的项目提供:[https://github.com/Mindwerks/worldengine-gui](https://github.com/Mindwerks/worldengine-gui)。

安装
=======

### 使用pip

```
目前尚未发布到pypi,您可能仍然想使用Lands或WorldSynth
或者下载源代码
pip install worldengine
```

### 从源代码

```
git clone或下载代码

### 单元测试:同时克隆worldengine-data
git clone git@github.com:Mindwerks/worldengine-data.git ../worldengine-data
nosetest tests
```

### Windows上的安装

如果您想在Windows上安装Worldengine,您可以阅读这些[说明](https://github.com/Mindwerks/worldengine/wiki/Installing-Worldengine-on-Windows)。

可执行文件也位于[发布](https://github.com/Mindwerks/worldengine/releases)下,但目前正在过时。

注意:您还需要在同一个文件夹中包含worldengine src目录的副本。

依赖项
============

图形界面基于QT,因此您需要安装它们

输出
======

该程序生成一个二进制格式,其中包含生成世界的所有数据以及一系列图像。例如,种子1生成。

## 高程地图

![](https://raw.githubusercontent.com/Mindwerks/worldengine-data/master/images/examples/world_seed_1_elevation.png)

## 降水量地图

![](https://raw.githubusercontent.com/Mindwerks/worldengine-data/master/images/examples/world_seed_1_precipitation.png)

## 温度地图

![](https://raw.githubusercontent.com/Mindwerks/worldengine-data/master/images/examples/world_seed_1_temperature.png)

## 生物群落地图

![](https://raw.githubusercontent.com/Mindwerks/worldengine-data/master/images/examples/world_seed_1_biome.png)

## 海洋地图

![](https://raw.githubusercontent.com/Mindwerks/worldengine-data/master/images/examples/world_seed_1_ocean.png)

有几种可选输出和许多选项来控制结果。[手册](http://worldengine.readthedocs.org/en/latest/)是您的良师益友!

使用方法
=====

```
worldengine [选项] [世界|板块|古地图|信息]
```

有关所有可能的选项的详细信息,请参阅[手册](http://worldengine.readthedocs.org/en/latest/)。

例如,这些命令

```python
worldengine -s 4 -n an_example -q 25 -x 2048 -y 2048
```

产生以下输出

```
Worldengine - 世界生成器(v. 0.19.0)
-----------------------
操作:世界生成
种子:4
名称:an_example
宽度:2048
高度:2048
板块数量:25
世界格式:protobuf
黑白地图:False
步骤:完整
灰度高度图:False
河流地图:False
散点图:False
淡化边界:True

开始(可能需要几分钟)...

生成输出
* 世界数据保存在'./an_example.world'
* 海洋图像生成在'./an_example_ocean.png'
* 降水量图像生成在'./an_example_precipitation.png'
* 温度图像生成在'./an_example_temperature.png'
* 生物群落图像生成在'./an_example_biome.png'
* 高程图像生成在'./an_example_elevation.png'
...完成
```

这是相应的古地图

```python
worldengine ancient_map -w an_example.world
```

![](https://raw.githubusercontent.com/Mindwerks/worldengine-data/master/images/examples/ancient_map_large.png)

算法
=========

世界生成算法经过不同的阶段
* 板块模拟:这是获得适当山脉链的最佳方法。为此使用了[pyplatec](https://github.com/Mindwerks/pyplatec)
* 在不同步骤中使用噪声技术
* 考虑纬度和雨影效应来计算降水量
* 计算侵蚀
* 计算每个区域的湿度
* 计算地形渗透率
* 使用 [Holdridge 生命带模型](http://en.wikipedia.org/wiki/Holdridge_life_zones) 计算生物群落

开发
===========

使用 virtualenv 你可以创建一个用于开发的沙盒。

Python 2
--------

```bash
virtualenv venv
source venv/bin/activate
pip install --upgrade pip setuptools
pip install -r requirements-dev.txt
python worldengine
```

Python 3
--------

```bash
virtualenv venv -p /usr/bin/python3
source venv/bin/activate
pip install --upgrade pip setuptools
pip install -r requirements-dev.txt
python worldengine
```

分发
============

我们使用 PyInstaller 将所有内容封装成一个二进制文件。

这将创建一个位于 `dist/worldengine` 的二进制文件,其中包含所有
必需的库以运行。

### Linux
由于我们使用的库,最好使用它们的 `develop` 分支。
```bash
pip install git+https://github.com/pyinstaller/pyinstaller.git@develop
pyinstaller --clean -F -n worldengine worldengine/__main__.py
```

### OSX
你需要安装 brew,这应该会给你所有需要的工具。
```bash
pyinstaller --clean -F -n worldengine worldengine/__main__.py
```
目前,它没有从 protobuf 汇集所有内容。因此,你需要
将 google/protobuf python 复制到 dist/google/protobuf 并在
dist/google 中创建 __init__.py

### Windows
将 Windows 转换成开发者环境是一个漫长且复杂的过程。
我会尽量让这个过程尽可能简短和直接。

记住,如果你是 win32 或 win64,那么你下载和安装的所有内容
都是同一类型,但不能同时是两者。

你需要安装 msysgit:https://msysgit.github.io/,这将为你提供一个
类似 Linux 的环境。之后,克隆仓库并安装 Windows 的 Python 2.7:
https://pythonlang.cn/downloads/windows/ 这将为你提供 pip
这是后续步骤所必需的。首先需要使用 pip 安装 virtualenv。

布局与 Linux 略有不同。
```bash
virtualenv venv
venv/Scripts/pip install -r requirements.txt
```

Numpy 安装将失败,因此你需要下载预编译的 wheel 文件并
使用 pip 安装它。http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
numpy‑1.9.2+mkl‑cp27‑none‑win_amd64.whl
根据你的架构选择一个,32 或 64。
```bash
venv/Scripts/pip install ../numpy‑1.9.2+mkl‑cp27‑none‑win_amd64.whl
```

下一步是获取 pywin32,它是 Python 的 win32api 钩子,在下载时,
你需要选择 32 位或 64 位,否则将无法工作。你也将
通过 pip 安装它。http://sourceforge.net/projects/pywin32/files/pywin32/
```bash
venv/Scripts/pip install ../pywin32-219.win-amd64-py2.7.exe
```

最后一步是安装 pyinstaller,这可能有些棘手
因为我们目前必须使用一个“足够好”的特定修订版本。
问题正在这里追踪:https://github.com/pyinstaller/pyinstaller/issues/1291
```bash
venv/Scripts/pip install git+https://github.com/pyinstaller/pyinstaller.git@67610f2
venv/Scripts/pyinstaller --clean --console -F -n worldengine worldengine/__main__.py
```

你有问题或改进建议吗?
=====================================================

请给我们写信!
你可以写信给我们:
* f _dot_ tomassetti _at_ gmail _dot_ com
* psi29a _at_ gmail _dot_ com
谢谢,所有的反馈对我们来说都很宝贵!

使用 WorldEngine 的项目
==========================

WorldEngine 被用于多个产品中,我们开始在这里列出它们
* [Lost Islands](https://wl.widelands.org/maps/lost-islands/) WorldEngine 已被用于为开源实时策略游戏 [Widelands](https://widelands.org) 生成地图
* [AX:EL - Air XenoDawn](http://store.steampowered.com/app/319830) 在 Steam 上发布的科幻空战商业游戏

如果你使用 WorldEngine,请告诉我们!

贡献者
============

本项目由[Bret Curtis](https://github.com/psi29a)和[Federico Tomassetti](https://github.com/ftomassetti)维护。

所有贡献、问题、想法都备受欢迎!
请随时在[google group](https://groups.google.com/forum/?hl=en#!forum/worldengine)中提出问题或留言。

我们想感谢在开发WorldEngine及其衍生项目过程中给予我们帮助的各位伟大的人。

* [Evan Sampson](https://github.com/esampson)贡献了令人惊叹的Holdridge生命带模型实现,并极大地改进了古老的地图、生物群落、降水和温度生成器。万分感谢!

* [Ryan](https://github.com/SourceRyan)贡献了Windows二进制版本,并在Reddit上讨论Lands,吸引了大量用户。万分感谢!

* [stefan-feltmann](https://github.com/stefan-feltmann)使Lands依赖于pillow而不是PIL(已弃用),这也有助于迁移到Python 3。万分感谢!

* [Russell Brinkmann](https://github.com/rbb)帮助在生成的世界中保存生成参数(以便我们可以再次生成相同的世界,例如),改进了命令行选项,并添加了跟踪信息(对于理解各种生成步骤的性能很有用)

* [Joshua Coppola](https://github.com/pangal)实现了卫星视图。非常感谢,它看起来很棒!

* [Stephan](https://github.com/tcld)让WorldEngine充分利用numpy,帮助加快生成速度。他还使世界生成更加可重复,并帮助提高了与Python 3的兼容性。

历史
=======

WorldEngine是通过合并Lands和[WorldSynth](https://github.com/psi29a/worldsynth)创建的。
最后一个Lands版本是0.5.3,最后一个WorldSynth版本是0.12,第一个WorldEngine版本是0.18。

许可证
=======

WorldEngine可在MIT许可证下使用。您应在项目的根目录中找到LICENSE。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分布

worldengine-0.19.0.tar.gz (64.1 kB 查看哈希)

上传时间 源代码

构建分布

worldengine-0.19.0-py2.py3-none-any.whl (62.7 kB 查看哈希)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面