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    # 主构建配置

构建

构建库和示例程序

mkdir build
cd build
cmake ..
make

仅构建库(不构建示例)

mkdir build
cd build
cmake -DBUILD_EXAMPLES=OFF ..
make

运行示例

构建完成后,可执行文件位于 build/tilemap/examples/ 目录下:

# 基础演示
./build/tilemap/examples/basic_demo

# 高级功能演示
./build/tilemap/examples/advanced_demo

# 生物群系系统演示
./build/tilemap/examples/biome_demo

# 高级生物群系分析
./build/tilemap/examples/advanced_biome_demo

库使用

基本用法

#include "tilemap.h"
#include "generation.h"

// 创建一个10x10区块的地图
istd::TileMap tilemap(10);

// 配置生成参数
istd::GenerationConfig config;
config.seed = 42;

// 生成地图
istd::map_generate(tilemap, config);

使用生物群系系统

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