njin
Engine 2D gọn nhẹ để tự tay làm game theo ý mình. Vibe coding cũng ổn luôn
Loading...
Searching...
No Matches
njin::topdown_gen_desc Struct Tham chiếu

Tham số sinh bản đồ top-down. Tiếp...

#include <njin_procgen.h>

Các thuộc tính Public

i32 width = 64
 Số cột.
i32 height = 64
 Số hàng.
noise_desc height_noise {}
 Nhiễu độ cao.
noise_desc moisture_noise {.seed = 7919, .frequency = 0.03f, .octaves = 3}
 Nhiễu độ ẩm. Chỉ dùng khi có vùng đặt max_moisture dưới 1.
std::vector< biome > biomes {}
 Các vùng, xét theo thứ tự. Ô không khớp vùng nào dùng vùng cuối.
f32 island = 0.0f
 0 là tắt.
bool normalize = true
 Kéo giãn độ cao (và độ ẩm) để ô thấp nhất của bản đồ là 0 và ô cao nhất là 1.
i32 smooth = 1
 Số lần grid_majority(). 0 là tắt.
i32 min_region = 6
 grid_merge_small(): vùng nhỏ hơn số ô này bị hoà vào xung quanh.
std::vector< i32 > walkable {}
 Các ô đi được.
i32 blocked_tile = -1
 Ô thay cho vùng đi được bị bỏ, khi có walkable.
i32 border_tile = -1
 Ô cho vòng tường bao quanh bản đồ. -1 là không có.

Mô tả chi tiết

Tham số sinh bản đồ top-down.

Mặc định (chỉ cần biomes): một độ cao từ nhiễu, chia vùng theo ngưỡng, làm mượt một lần, bỏ vùng dưới 6 ô. Thêm dần: độ ẩm để có sa mạc và rừng cùng độ cao, island cho hình hòn đảo, walkable để mọi chỗ đi được liền một khối, border_tile cho tường bao.

Thông tin về Member Data

◆ island

f32 njin::topdown_gen_desc::island = 0.0f

0 là tắt.

0.5 đến 1: độ cao giảm dần về mép, thành hòn đảo giữa nước.

◆ normalize

bool njin::topdown_gen_desc::normalize = true

Kéo giãn độ cao (và độ ẩm) để ô thấp nhất của bản đồ là 0 và ô cao nhất là 1.

Bật (mặc định) thì ngưỡng của biomes đọc như phần trăm của bản đồ: max_height = 0.3 là khoảng 30% thấp nhất. Tắt thì ngưỡng so thẳng với nhiễu, mà nhiễu fBm hiếm khi ra ngoài khoảng 0.2 đến 0.8.

◆ min_region

i32 njin::topdown_gen_desc::min_region = 6

grid_merge_small(): vùng nhỏ hơn số ô này bị hoà vào xung quanh.

0 là tắt.

◆ walkable

std::vector<i32> njin::topdown_gen_desc::walkable {}

Các ô đi được.

Có thì chỉ giữ vùng đi được liền nhau lớn nhất (grid_keep_largest()), và điểm xuất phát nằm trong vùng đó.