instructed/tilemap/README.md
szdytom b6656f5023
feat: Add biome-based terrain generation and Perlin noise implementation
- 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>
2025-08-01 14:28:36 +08:00

114 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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+