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::platformer_gen_desc Struct Tham chiếu

Tham số sinh màn platformer, nhìn ngang, đi từ trái sang phải. Tiếp...

#include <njin_procgen.h>

Các thuộc tính Public

i32 width = 120
 Số cột.
i32 height = 30
 Số hàng.
noise_desc surface_noise {.seed = 1, .frequency = 0.04f, .octaves = 3}
 Nhiễu của mặt đất, theo cột.
i32 ground_min = 12
 Hàng cao nhất mặt đất được lên (hàng tính từ trên xuống).
i32 ground_max = 24
 Hàng thấp nhất mặt đất được xuống.
i32 max_step = 2
 Chênh lệch tối đa giữa hai cột cạnh nhau, tính bằng ô.
i32 surface_tile = 0
 Ô mặt đất (cỏ).
i32 dirt_tile = 1
 Ô dưới mặt đất.
i32 deep_tile = -1
 Ô ở sâu (đá). -1 là dùng dirt_tile.
i32 deep_depth = 6
 Từ độ sâu này (ô tính từ mặt đất) trở xuống là deep_tile.
i32 slope_r_tile = -1
 Ô dốc cao bên phải và cao bên trái (njin::tile_slope_r, njin::tile_slope_l), đặt ở chỗ mặt đất lên hoặc xuống đúng một ô.
i32 slope_l_tile = -1
 Xem slope_r_tile.
noise_desc cave_noise {.seed = 3, .frequency = 0.09f, .octaves = 2}
 Nhiễu của hang.
f32 caves = 0.0f
 Tỉ lệ diện tích ngầm được đục thành hang, 0 (tắt) đến 0.9.
i32 cave_margin = 4
 Số hàng ngay dưới mặt đất không bị đục hang.
f32 pit_chance = 0.0f
 Xác suất bắt đầu một hố ở mỗi cột. 0 là không có hố.
i32 pit_min = 1
 Hố hẹp nhất, tính bằng ô.
i32 pit_max = 2
 Hố rộng nhất.
i32 safe_columns = 6
 Số cột bằng phẳng, không hố, ở mỗi đầu màn (chỗ xuất phát và đích).
f32 platform_chance = 0.0f
 Xác suất đặt một bục lơ lửng ở mỗi cột. 0 là không có bục.
i32 platform_tile = -1
 Ô của bục (thường là bục một chiều, njin::tile_one_way).
i32 platform_min = 3
 Bục ngắn nhất.
i32 platform_max = 5
 Bục dài nhất.
i32 platform_height = 3
 Bục cao hơn mặt đất bấy nhiêu ô. Giữ không quá độ cao nhảy.

Mô tả chi tiết

Tham số sinh màn platformer, nhìn ngang, đi từ trái sang phải.

Mặt đất là một đường nhiễu theo cột. Luật giữ cho màn chơi được: hai cột cạnh nhau chênh nhau không quá max_step ô (đặt không quá độ cao nhảy của nhân vật), hang không đục lên sát mặt đất, hố không rộng quá pit_max ô, và hai đầu màn luôn bằng phẳng.

Thông tin về Member Data

◆ slope_r_tile

i32 njin::platformer_gen_desc::slope_r_tile = -1

Ô dốc cao bên phải và cao bên trái (njin::tile_slope_r, njin::tile_slope_l), đặt ở chỗ mặt đất lên hoặc xuống đúng một ô.

-1 là không dùng dốc. Nhớ đặt hình cho chúng bằng tilemap_set_shape().

◆ caves

f32 njin::platformer_gen_desc::caves = 0.0f

Tỉ lệ diện tích ngầm được đục thành hang, 0 (tắt) đến 0.9.

Là tỉ lệ thật (lấy theo thứ hạng của nhiễu trên đúng những ô được phép): 0.2 là đục chừng 20% số ô nằm dưới cave_margin, bất kể nhiễu có dải giá trị thế nào. Sau đó hang được bo tròn bằng hai lượt automat tế bào và bỏ hốc dưới 8 ô, nên số thật lệch đôi chút. 0.15 đến 0.3 là vừa; hơn nữa là hầm hố.

◆ pit_max

i32 njin::platformer_gen_desc::pit_max = 2

Hố rộng nhất.

Giữ không quá tầm nhảy xa của nhân vật: njin::platformer_body mặc định chạy 110 px/s và bay chừng 0,54 giây, tức khoảng 59 px, nên hố 2 ô (32 px) còn dư; hố 3 ô (48 px, cộng bề rộng nhân vật) thì phải cất cánh sát mép. Tăng run_speed hoặc jump_speed của nhân vật trước khi tăng số này.