- Introduced a new biome system with various biome types and properties. - Implemented terrain generation using Perlin noise to create diverse landscapes. - Added examples for basic tilemap generation and biome analysis. - Created helper functions for displaying tiles and biomes in the console. - Enhanced the TileMap class to support chunk-based tile management. - Developed a PerlinNoise class for generating smooth noise patterns. - Updated generation configuration to include climate parameters for biomes. - Implemented error handling for out-of-bounds access in TileMap. Signed-off-by: szdytom <szdytom@qq.com>
114 lines
2.7 KiB
Markdown
114 lines
2.7 KiB
Markdown
# Tilemap Library
|
||
|
||
一个基于Perlin噪声和生物群系系统的C++地图生成库。
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
tilemap/
|
||
├── include/ # 库头文件
|
||
│ ├── biome.h # 生物群系系统
|
||
│ ├── chunk.h # 区块和瓦片定义
|
||
│ ├── generation.h # 地形生成器
|
||
│ ├── noise.h # Perlin噪声实现
|
||
│ ├── tile.h # 瓦片类型定义
|
||
│ └── tilemap.h # 地图容器类
|
||
├── src/ # 库源文件
|
||
│ ├── biome.cpp # 生物群系实现
|
||
│ ├── generation.cpp # 地形生成实现
|
||
│ ├── noise.cpp # Perlin噪声实现
|
||
│ └── tilemap.cpp # 地图容器实现
|
||
├── examples/ # 示例程序
|
||
│ ├── basic_demo.cpp # 基础功能演示
|
||
│ ├── advanced_demo.cpp # 高级功能演示
|
||
│ ├── biome_demo.cpp # 生物群系演示
|
||
│ ├── advanced_biome_demo.cpp # 高级生物群系分析
|
||
│ └── CMakeLists.txt # 示例程序构建配置
|
||
└── CMakeLists.txt # 主构建配置
|
||
```
|
||
|
||
## 构建
|
||
|
||
### 构建库和示例程序
|
||
|
||
```bash
|
||
mkdir build
|
||
cd build
|
||
cmake ..
|
||
make
|
||
```
|
||
|
||
### 仅构建库(不构建示例)
|
||
|
||
```bash
|
||
mkdir build
|
||
cd build
|
||
cmake -DBUILD_EXAMPLES=OFF ..
|
||
make
|
||
```
|
||
|
||
## 运行示例
|
||
|
||
构建完成后,可执行文件位于 `build/tilemap/examples/` 目录下:
|
||
|
||
```bash
|
||
# 基础演示
|
||
./build/tilemap/examples/basic_demo
|
||
|
||
# 高级功能演示
|
||
./build/tilemap/examples/advanced_demo
|
||
|
||
# 生物群系系统演示
|
||
./build/tilemap/examples/biome_demo
|
||
|
||
# 高级生物群系分析
|
||
./build/tilemap/examples/advanced_biome_demo
|
||
```
|
||
|
||
## 库使用
|
||
|
||
### 基本用法
|
||
|
||
```cpp
|
||
#include "tilemap.h"
|
||
#include "generation.h"
|
||
|
||
// 创建一个10x10区块的地图
|
||
istd::TileMap tilemap(10);
|
||
|
||
// 配置生成参数
|
||
istd::GenerationConfig config;
|
||
config.seed = 42;
|
||
|
||
// 生成地图
|
||
istd::map_generate(tilemap, config);
|
||
```
|
||
|
||
### 使用生物群系系统
|
||
|
||
```cpp
|
||
#include "generation.h"
|
||
|
||
istd::GenerationConfig config;
|
||
config.seed = 12345;
|
||
config.temperature_scale = 0.005; // 温度变化尺度
|
||
config.humidity_scale = 0.007; // 湿度变化尺度
|
||
|
||
istd::TerrainGenerator generator(config);
|
||
generator.generate_map(tilemap);
|
||
```
|
||
|
||
## 核心特性
|
||
|
||
- **Perlin噪声地形生成**: 生成自然的地形特征
|
||
- **生物群系系统**: 基于温度和湿度的9种生物群系
|
||
- **区块系统**: 支持大型地图的高效存储
|
||
- **子区块分级**: 16x16瓦片的子区块,每个具有一致的生物群系
|
||
- **高性能**: 优化的内存使用和生成算法
|
||
|
||
## 编译要求
|
||
|
||
- C++23标准支持
|
||
- CMake 3.27或更高版本
|
||
- 支持C++23的编译器(GCC 13+, Clang 16+, MSVC 2022+)
|