Expand generated terrain and forest variation

This commit is contained in:
Alexander Sellite 2026-08-21 16:38:30 -04:00
parent 779e3d983e
commit b2752b1074
25 changed files with 898 additions and 145 deletions

Binary file not shown.

View file

@ -0,0 +1,45 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://bsislktcsck1y"
path="res://.godot/imported/prop_pine_large.glb-97f0e7e162a6a624faaf2cc023211d3e.scn"
[deps]
source_file="res://world/generation/props/assets/prop_pine_large.glb"
dest_files=["res://.godot/imported/prop_pine_large.glb-97f0e7e162a6a624faaf2cc023211d3e.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
gltf/naming_version=2
gltf/embedded_image_handling=1
gltf/texture_map_mode=1

Binary file not shown.

View file

@ -0,0 +1,45 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://c46jcb2vo2fd"
path="res://.godot/imported/prop_tree_large.glb-0a4ab94061e4876be025fa3d63aa7bd8.scn"
[deps]
source_file="res://world/generation/props/assets/prop_tree_large.glb"
dest_files=["res://.godot/imported/prop_tree_large.glb-0a4ab94061e4876be025fa3d63aa7bd8.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
gltf/naming_version=2
gltf/embedded_image_handling=1
gltf/texture_map_mode=1

View file

@ -11,6 +11,15 @@ packed_scene = ExtResource("2_scene")
procedural_group = &"sand_tree"
required_chunk_tags = PackedStringArray("sand")
minimum_spawn_chunk_distance = 2
clearance_radius = 2.0
clearance_radius = 0.65
minimum_visual_scale = 0.5
maximum_visual_scale = 1.0
minimum_cluster_size = 2
maximum_cluster_size = 3
minimum_cluster_radius = 1.4
maximum_cluster_radius = 3.0
prefer_ocean_facing = true
local_overhang_direction = Vector2(-0.883, 0.469)
ocean_facing_spread_degrees = 55.0
collision_radius = 0.4
collision_height = 6.0

View file

@ -6,15 +6,15 @@
[resource]
script = ExtResource("1_definition")
stable_id = &"prop_pine"
label = "pine"
label = "small pine"
packed_scene = ExtResource("2_scene")
procedural_group = &"grass_tree"
required_chunk_tags = PackedStringArray("grass")
selection_weight = 0.7
minimum_spawn_chunk_distance = 2
clearance_radius = 1.55
minimum_visual_scale = 0.75
maximum_visual_scale = 1.22
minimum_visual_scale = 0.65
maximum_visual_scale = 1.2
collision_radius = 0.5
collision_height = 4.0
gatherable_anchor_height = 2.15

View file

@ -0,0 +1,20 @@
[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=3 format=3]
[ext_resource type="Script" path="res://world/generation/terrain_prop_definition.gd" id="1_definition"]
[ext_resource type="PackedScene" path="res://world/generation/props/assets/prop_pine_large.glb" id="2_scene"]
[resource]
script = ExtResource("1_definition")
stable_id = &"prop_pine_large"
label = "large pine"
packed_scene = ExtResource("2_scene")
procedural_group = &"grass_tree"
required_chunk_tags = PackedStringArray("grass")
selection_weight = 3.0
minimum_spawn_chunk_distance = 2
clearance_radius = 1.65
minimum_visual_scale = 0.75
maximum_visual_scale = 1.2
collision_radius = 0.65
collision_height = 9.5
gatherable_anchor_height = 2.15

View file

@ -1,24 +1,30 @@
[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=6 format=3]
[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=9 format=3]
[ext_resource type="Script" path="res://world/generation/terrain_prop_definition.gd" id="1_definition"]
[ext_resource type="PackedScene" path="res://world/generation/props/assets/prop_tree_1.glb" id="2_scene"]
[ext_resource type="Material" path="res://world/generation/props/materials/leaf_light.tres" id="3_leaf_light"]
[ext_resource type="Material" path="res://world/generation/props/materials/leaf_mid.tres" id="4_leaf_mid"]
[ext_resource type="Material" path="res://world/generation/props/materials/leaf_dark.tres" id="5_leaf_dark"]
[ext_resource type="Material" path="res://world/generation/props/materials/wood_light.tres" id="6_wood_light"]
[ext_resource type="Material" path="res://world/generation/props/materials/wood_mid.tres" id="7_wood_mid"]
[ext_resource type="Material" path="res://world/generation/props/materials/wood_dark.tres" id="8_wood_dark"]
[resource]
script = ExtResource("1_definition")
stable_id = &"prop_tree_1"
label = "small tree"
label = "small deciduous tree"
packed_scene = ExtResource("2_scene")
procedural_group = &"grass_tree"
required_chunk_tags = PackedStringArray("grass")
selection_weight = 1.0
minimum_spawn_chunk_distance = 2
clearance_radius = 1.3
minimum_visual_scale = 0.75
maximum_visual_scale = 1.15
minimum_visual_scale = 0.65
maximum_visual_scale = 1.2
variant_material_slot_names = PackedStringArray("leaf_light", "leaf", "leaf_dark")
material_variants = Array[Material]([ExtResource("3_leaf_light"), ExtResource("4_leaf_mid"), ExtResource("5_leaf_dark")])
secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", "wood_mid")
secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")])
collision_radius = 0.4
collision_height = 3.2
gatherable_anchor_height = 2.15

View file

@ -1,24 +1,30 @@
[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=6 format=3]
[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=9 format=3]
[ext_resource type="Script" path="res://world/generation/terrain_prop_definition.gd" id="1_definition"]
[ext_resource type="PackedScene" path="res://world/generation/props/assets/prop_tree_2.glb" id="2_scene"]
[ext_resource type="Material" path="res://world/generation/props/materials/leaf_light.tres" id="3_leaf_light"]
[ext_resource type="Material" path="res://world/generation/props/materials/leaf_mid.tres" id="4_leaf_mid"]
[ext_resource type="Material" path="res://world/generation/props/materials/leaf_dark.tres" id="5_leaf_dark"]
[ext_resource type="Material" path="res://world/generation/props/materials/wood_light.tres" id="6_wood_light"]
[ext_resource type="Material" path="res://world/generation/props/materials/wood_mid.tres" id="7_wood_mid"]
[ext_resource type="Material" path="res://world/generation/props/materials/wood_dark.tres" id="8_wood_dark"]
[resource]
script = ExtResource("1_definition")
stable_id = &"prop_tree_2"
label = "medium tree"
label = "medium deciduous tree"
packed_scene = ExtResource("2_scene")
procedural_group = &"grass_tree"
required_chunk_tags = PackedStringArray("grass")
selection_weight = 1.0
minimum_spawn_chunk_distance = 2
clearance_radius = 1.5
minimum_visual_scale = 0.8
maximum_visual_scale = 1.18
minimum_visual_scale = 0.7
maximum_visual_scale = 1.2
variant_material_slot_names = PackedStringArray("leaf_light", "leaf", "leaf_dark")
material_variants = Array[Material]([ExtResource("3_leaf_light"), ExtResource("4_leaf_mid"), ExtResource("5_leaf_dark")])
secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", "wood_mid")
secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")])
collision_radius = 0.5
collision_height = 3.8
gatherable_anchor_height = 2.15

View file

@ -1,24 +1,30 @@
[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=6 format=3]
[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=9 format=3]
[ext_resource type="Script" path="res://world/generation/terrain_prop_definition.gd" id="1_definition"]
[ext_resource type="PackedScene" path="res://world/generation/props/assets/prop_tree_3.glb" id="2_scene"]
[ext_resource type="Material" path="res://world/generation/props/materials/leaf_light.tres" id="3_leaf_light"]
[ext_resource type="Material" path="res://world/generation/props/materials/leaf_mid.tres" id="4_leaf_mid"]
[ext_resource type="Material" path="res://world/generation/props/materials/leaf_dark.tres" id="5_leaf_dark"]
[ext_resource type="Material" path="res://world/generation/props/materials/wood_light.tres" id="6_wood_light"]
[ext_resource type="Material" path="res://world/generation/props/materials/wood_mid.tres" id="7_wood_mid"]
[ext_resource type="Material" path="res://world/generation/props/materials/wood_dark.tres" id="8_wood_dark"]
[resource]
script = ExtResource("1_definition")
stable_id = &"prop_tree_3"
label = "large tree"
label = "decorative deciduous tree"
packed_scene = ExtResource("2_scene")
procedural_group = &"grass_tree"
required_chunk_tags = PackedStringArray("grass")
selection_weight = 1.0
minimum_spawn_chunk_distance = 2
clearance_radius = 1.8
minimum_visual_scale = 0.85
maximum_visual_scale = 1.15
minimum_visual_scale = 0.7
maximum_visual_scale = 1.2
variant_material_slot_names = PackedStringArray("leaf_light", "leaf", "leaf_dark")
material_variants = Array[Material]([ExtResource("3_leaf_light"), ExtResource("4_leaf_mid"), ExtResource("5_leaf_dark")])
secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", "wood_mid")
secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")])
collision_radius = 0.55
collision_height = 4.2
gatherable_anchor_height = 2.15

View file

@ -0,0 +1,30 @@
[gd_resource type="Resource" script_class="TerrainPropDefinition" load_steps=9 format=3]
[ext_resource type="Script" path="res://world/generation/terrain_prop_definition.gd" id="1_definition"]
[ext_resource type="PackedScene" path="res://world/generation/props/assets/prop_tree_large.glb" id="2_scene"]
[ext_resource type="Material" path="res://world/generation/props/materials/leaf_light.tres" id="3_leaf_light"]
[ext_resource type="Material" path="res://world/generation/props/materials/leaf_mid.tres" id="4_leaf_mid"]
[ext_resource type="Material" path="res://world/generation/props/materials/leaf_dark.tres" id="5_leaf_dark"]
[ext_resource type="Material" path="res://world/generation/props/materials/wood_light.tres" id="6_wood_light"]
[ext_resource type="Material" path="res://world/generation/props/materials/wood_mid.tres" id="7_wood_mid"]
[ext_resource type="Material" path="res://world/generation/props/materials/wood_dark.tres" id="8_wood_dark"]
[resource]
script = ExtResource("1_definition")
stable_id = &"prop_tree_large"
label = "large deciduous tree"
packed_scene = ExtResource("2_scene")
procedural_group = &"grass_tree"
required_chunk_tags = PackedStringArray("grass")
selection_weight = 12.0
minimum_spawn_chunk_distance = 2
clearance_radius = 2.5
minimum_visual_scale = 0.75
maximum_visual_scale = 1.2
variant_material_slot_names = PackedStringArray("leaf_light", "leaf", "leaf_dark")
material_variants = Array[Material]([ExtResource("3_leaf_light"), ExtResource("4_leaf_mid"), ExtResource("5_leaf_dark")])
secondary_variant_material_slot_names = PackedStringArray("wood", "wood_light", "wood_mid")
secondary_material_variants = Array[Material]([ExtResource("6_wood_light"), ExtResource("7_wood_mid"), ExtResource("8_wood_dark")])
collision_radius = 0.85
collision_height = 7.5
gatherable_anchor_height = 2.15

View file

@ -0,0 +1,9 @@
[gd_resource type="StandardMaterial3D" format=3]
[resource]
resource_name = "wood_variant_dark"
albedo_color = Color(0.163, 0.139, 0.0254, 1)
metallic = 0.0
roughness = 1.0
shading_mode = 1
texture_filter = 0

View file

@ -0,0 +1,9 @@
[gd_resource type="StandardMaterial3D" format=3]
[resource]
resource_name = "wood_variant_light"
albedo_color = Color(0.644, 0.563, 0.356, 1)
metallic = 0.0
roughness = 1.0
shading_mode = 1
texture_filter = 0

View file

@ -0,0 +1,9 @@
[gd_resource type="StandardMaterial3D" format=3]
[resource]
resource_name = "wood_variant_mid"
albedo_color = Color(0.333, 0.271, 0.114, 1)
metallic = 0.0
roughness = 1.0
shading_mode = 1
texture_filter = 0

View file

@ -1,4 +1,4 @@
[gd_resource type="Resource" script_class="TerrainPropCatalog" load_steps=16 format=3]
[gd_resource type="Resource" script_class="TerrainPropCatalog" load_steps=18 format=3]
[ext_resource type="Script" path="res://world/generation/terrain_prop_catalog.gd" id="1_catalog"]
[ext_resource type="Resource" path="res://world/generation/props/definitions/prop_bridge.tres" id="2_bridge"]
@ -15,7 +15,9 @@
[ext_resource type="Resource" path="res://world/generation/props/definitions/prop_tree_2.tres" id="13_tree_2"]
[ext_resource type="Resource" path="res://world/generation/props/definitions/prop_tree_3.tres" id="14_tree_3"]
[ext_resource type="Script" path="res://world/generation/terrain_prop_definition.gd" id="15_definition_script"]
[ext_resource type="Resource" path="res://world/generation/props/definitions/prop_tree_large.tres" id="16_tree_large"]
[ext_resource type="Resource" path="res://world/generation/props/definitions/prop_pine_large.tres" id="17_pine_large"]
[resource]
script = ExtResource("1_catalog")
definitions = Array[ExtResource("15_definition_script")]([ExtResource("2_bridge"), ExtResource("3_dock"), ExtResource("4_log"), ExtResource("5_post_1"), ExtResource("6_post_2"), ExtResource("7_mushroom"), ExtResource("8_palm"), ExtResource("9_pine"), ExtResource("10_timber_1"), ExtResource("11_timber_2"), ExtResource("12_tree_1"), ExtResource("13_tree_2"), ExtResource("14_tree_3")])
definitions = Array[ExtResource("15_definition_script")]([ExtResource("2_bridge"), ExtResource("3_dock"), ExtResource("4_log"), ExtResource("5_post_1"), ExtResource("6_post_2"), ExtResource("7_mushroom"), ExtResource("8_palm"), ExtResource("9_pine"), ExtResource("10_timber_1"), ExtResource("11_timber_2"), ExtResource("12_tree_1"), ExtResource("13_tree_2"), ExtResource("14_tree_3"), ExtResource("16_tree_large"), ExtResource("17_pine_large")])