From 6fd1aa03887082e9e4b29542c7d251a7a62502ac Mon Sep 17 00:00:00 2001 From: Voyager Date: Sat, 22 Aug 2026 22:56:21 -0400 Subject: [PATCH] Add turning rivers and lake edge variation --- tests/generated_world_runtime_validation.gd | 84 +- tests/terrain_chunk_generator_validation.gd | 164 ++- world/generation/chunks/assets/chunk_0017.glb | Bin 24624 -> 27692 bytes world/generation/chunks/assets/chunk_0033.glb | Bin 0 -> 25700 bytes .../chunks/assets/chunk_0033.glb.import | 45 + .../chunks/assets/chunk_0033_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0033_cliff_wall.png.import | 45 + .../chunks/assets/chunk_0033_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0033_dirt.png.import | 45 + .../chunks/assets/chunk_0033_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0033_grass_lite.png.import | 45 + world/generation/chunks/assets/chunk_0034.glb | Bin 0 -> 30684 bytes .../chunks/assets/chunk_0034.glb.import | 45 + .../chunks/assets/chunk_0034_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0034_cliff_wall.png.import | 45 + .../chunks/assets/chunk_0034_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0034_dirt.png.import | 45 + .../chunks/assets/chunk_0034_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0034_grass_lite.png.import | 45 + world/generation/chunks/assets/chunk_0035.glb | Bin 0 -> 30304 bytes .../chunks/assets/chunk_0035.glb.import | 45 + .../chunks/assets/chunk_0035_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0035_cliff_wall.png.import | 45 + .../chunks/assets/chunk_0035_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0035_dirt.png.import | 45 + .../chunks/assets/chunk_0035_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0035_grass_lite.png.import | 45 + world/generation/chunks/assets/chunk_0036.glb | Bin 0 -> 29524 bytes .../chunks/assets/chunk_0036.glb.import | 45 + .../chunks/assets/chunk_0036_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0036_cliff_wall.png.import | 45 + .../chunks/assets/chunk_0036_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0036_dirt.png.import | 45 + .../chunks/assets/chunk_0036_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0036_grass_lite.png.import | 45 + world/generation/chunks/assets/chunk_0037.glb | Bin 0 -> 27692 bytes .../chunks/assets/chunk_0037.glb.import | 45 + .../chunks/assets/chunk_0037_cliff_wall.png | Bin 0 -> 9025 bytes .../assets/chunk_0037_cliff_wall.png.import | 45 + .../chunks/assets/chunk_0037_dirt.png | Bin 0 -> 5589 bytes .../chunks/assets/chunk_0037_dirt.png.import | 45 + .../chunks/assets/chunk_0037_grass_lite.png | Bin 0 -> 6317 bytes .../assets/chunk_0037_grass_lite.png.import | 45 + .../chunks/definitions/chunk_0033.tres | 22 + .../chunks/definitions/chunk_0034.tres | 25 + .../chunks/definitions/chunk_0035.tres | 23 + .../chunks/definitions/chunk_0036.tres | 24 + .../chunks/definitions/chunk_0037.tres | 22 + .../chunks/terrain_chunk_catalog.tres | 9 +- world/generation/terrain_chunk_catalog.gd | 13 + world/generation/terrain_chunk_definition.gd | 6 + world/generation/terrain_chunk_generator.gd | 1130 +++++++++++------ world/generation/terrain_chunk_variant.gd | 3 +- 53 files changed, 2039 insertions(+), 386 deletions(-) create mode 100644 world/generation/chunks/assets/chunk_0033.glb create mode 100644 world/generation/chunks/assets/chunk_0033.glb.import create mode 100644 world/generation/chunks/assets/chunk_0033_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0033_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0033_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0033_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0033_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0033_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0034.glb create mode 100644 world/generation/chunks/assets/chunk_0034.glb.import create mode 100644 world/generation/chunks/assets/chunk_0034_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0034_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0034_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0034_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0034_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0034_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0035.glb create mode 100644 world/generation/chunks/assets/chunk_0035.glb.import create mode 100644 world/generation/chunks/assets/chunk_0035_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0035_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0035_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0035_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0035_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0035_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0036.glb create mode 100644 world/generation/chunks/assets/chunk_0036.glb.import create mode 100644 world/generation/chunks/assets/chunk_0036_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0036_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0036_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0036_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0036_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0036_grass_lite.png.import create mode 100644 world/generation/chunks/assets/chunk_0037.glb create mode 100644 world/generation/chunks/assets/chunk_0037.glb.import create mode 100644 world/generation/chunks/assets/chunk_0037_cliff_wall.png create mode 100644 world/generation/chunks/assets/chunk_0037_cliff_wall.png.import create mode 100644 world/generation/chunks/assets/chunk_0037_dirt.png create mode 100644 world/generation/chunks/assets/chunk_0037_dirt.png.import create mode 100644 world/generation/chunks/assets/chunk_0037_grass_lite.png create mode 100644 world/generation/chunks/assets/chunk_0037_grass_lite.png.import create mode 100644 world/generation/chunks/definitions/chunk_0033.tres create mode 100644 world/generation/chunks/definitions/chunk_0034.tres create mode 100644 world/generation/chunks/definitions/chunk_0035.tres create mode 100644 world/generation/chunks/definitions/chunk_0036.tres create mode 100644 world/generation/chunks/definitions/chunk_0037.tres diff --git a/tests/generated_world_runtime_validation.gd b/tests/generated_world_runtime_validation.gd index 0d7d26f..82627a5 100644 --- a/tests/generated_world_runtime_validation.gd +++ b/tests/generated_world_runtime_validation.gd @@ -136,17 +136,30 @@ func _validate_generated_region( assert(maxi( generator._river_feature_footprint_size.x, generator._river_feature_footprint_size.y, - ) >= 7) + ) >= 4) assert(mini( generator._river_feature_footprint_size.x, generator._river_feature_footprint_size.y, - ) == 2) + ) >= 4) assert(generator._river_feature_flow_direction in [ Vector2i.RIGHT, Vector2i.DOWN, Vector2i.LEFT, Vector2i.UP, ]) + assert(generator._river_feature_outlet_direction in [ + Vector2i.RIGHT, + Vector2i.DOWN, + Vector2i.LEFT, + Vector2i.UP, + ]) + assert( + generator._river_feature_flow_direction.x + * generator._river_feature_outlet_direction.x + + generator._river_feature_flow_direction.y + * generator._river_feature_outlet_direction.y + == 0 + ) assert(generator.elevated_cliff_coastal_feature_required) assert(placements.size() == expected_chunk_count) assert(placements[center_index].begins_with("chunk_spawn@")) @@ -226,6 +239,10 @@ func _validate_generated_region( assert(_placement_count(placements, "chunk_0030") == 1) assert(_placement_count(placements, "chunk_0031") == 1) assert(_placement_count(placements, "chunk_0032") == 1) + assert(_placement_count(placements, "chunk_0033") == 1) + assert(_placement_count(placements, "chunk_0034") == 1) + assert(_placement_count(placements, "chunk_0035") == 1) + assert(_placement_count(placements, "chunk_0036") == 1) assert( _placement_count(placements, "chunk_0014") == (2 if has_secondary_elevation else 0) @@ -239,12 +256,15 @@ func _validate_generated_region( assert(_placement_count(placements, "chunk_0022") == 4) assert(_placement_count(placements, "chunk_0023") == 4) var lake_edge_count := _placement_count(placements, "chunk_0017") + var lake_edge_variant_count := _placement_count(placements, "chunk_0037") var lake_fill_count := _placement_count(placements, "chunk_0019") var lake_narrow_count := _placement_count(placements, "chunk_0021") var lake_size := generator._lake_feature_footprint_size.x assert(lake_size in [7, 8]) assert(lake_fill_count == (lake_size - 2) * (lake_size - 2)) - assert(lake_edge_count == (lake_size - 6) * 4) + assert(lake_edge_count + lake_edge_variant_count == (lake_size - 6) * 4) + assert(lake_edge_count > 0) + assert(lake_edge_variant_count > 0) assert(lake_narrow_count == 8) assert(_placement_count(placements, "chunk_9999") == 0) assert(_placement_count(placements, "chunk_9998") == 0) @@ -257,13 +277,14 @@ func _validate_generated_region( == (1 if has_secondary_elevation else 0) ) assert(_placement_count(placements, "chunk_9995") == 0) - var river_length := maxi( - generator._river_feature_footprint_size.x, - generator._river_feature_footprint_size.y, + var river_coordinate_count := generator._river_feature_coordinates.size() + var river_edge_count := ( + _placement_count(placements, "chunk_0024") + + _placement_count(placements, "chunk_0025") ) - assert(river_length in [7, 8]) - assert(_placement_count(placements, "chunk_0024") == river_length - 2) - assert(_placement_count(placements, "chunk_0025") == river_length - 2) + assert(river_coordinate_count >= 12) + assert(generator._river_feature_placements.size() == river_coordinate_count) + assert(river_edge_count == river_coordinate_count - 8) var river_source_coordinates := generator._river_source_coordinates( generator._river_feature_origin, generator._river_feature_footprint_size, @@ -297,7 +318,7 @@ func _validate_generated_region( assert( not generator._coordinate_is_inside_grid( outlet_coordinate - + generator._river_feature_flow_direction + + generator._river_feature_outlet_direction ) ) assert(outlet_coordinates.size() == 2) @@ -379,7 +400,7 @@ func _validate_generated_region( ] = surface_polygon.size() _validate_complete_coastline(generator) assert(fresh_root.get_child_count() == fresh_placement_count) - assert(river_placement_count == river_length * 2) + assert(river_placement_count == river_coordinate_count) assert( polygon_sizes_by_coordinate.size() == 20 + river_placement_count @@ -1025,19 +1046,48 @@ func _validate_decoration_transform( prop.global_position + Vector3.DOWN * 8.0, 1, ) - var prop_body := prop.get_node_or_null( - "TrunkCollision", - ) as CollisionObject3D - if prop_body != null: - query.exclude = [prop_body.get_rid()] + var excluded_colliders: Array[RID] = [] + var decorations := region.get_node("Decorations") as Node3D + for decoration: Node in decorations.get_children(): + var prop_body := decoration.get_node_or_null( + "TrunkCollision", + ) as CollisionObject3D + if prop_body != null: + excluded_colliders.append(prop_body.get_rid()) + query.exclude = excluded_colliders var hit := region.get_world_3d().direct_space_state.intersect_ray(query) + # Stacked cliff walls can overhang a neighboring cell. Match the placement + # sampler by ignoring steep faces until the ray reaches walkable terrain. + while ( + not hit.is_empty() + and absf((hit.get("normal", Vector3.ZERO) as Vector3).dot(Vector3.UP)) + < 0.35 + ): + var steep_collider := hit.get("collider") as CollisionObject3D + assert(steep_collider != null) + excluded_colliders.append(steep_collider.get_rid()) + query.exclude = excluded_colliders + hit = region.get_world_3d().direct_space_state.intersect_ray(query) assert( not hit.is_empty(), "No terrain collision below %s (%s) at %s." % [prop.name, definition.stable_id, prop.global_position], ) var ground_position: Vector3 = hit["position"] - assert(absf(ground_position.y - prop.global_position.y) <= 0.01) + assert( + absf(ground_position.y - prop.global_position.y) <= 0.01, + "Terrain height %s does not match %s (%s) at %s." + % [ + ground_position.y, + prop.name, + definition.stable_id, + "%s in chunk %s; hit %s" % [ + prop.global_position, + prop.get_meta(&"terrain_chunk_coordinate", Vector2i(-1, -1)), + (hit.get("collider") as Node).get_path(), + ], + ], + ) func _validate_tree_gatherable_anchors( diff --git a/tests/terrain_chunk_generator_validation.gd b/tests/terrain_chunk_generator_validation.gd index e8bf158..b8d24cf 100644 --- a/tests/terrain_chunk_generator_validation.gd +++ b/tests/terrain_chunk_generator_validation.gd @@ -37,6 +37,11 @@ const EXPECTED_IDS: Array[String] = [ "chunk_0030", "chunk_0031", "chunk_0032", + "chunk_0033", + "chunk_0034", + "chunk_0035", + "chunk_0036", + "chunk_0037", "chunk_9999", "chunk_9998", "chunk_9997", @@ -88,6 +93,11 @@ const EXPECTED_VARIANT_COUNTS: Dictionary[StringName, int] = { &"chunk_0030": 4, &"chunk_0031": 4, &"chunk_0032": 4, + &"chunk_0033": 4, + &"chunk_0034": 4, + &"chunk_0035": 4, + &"chunk_0036": 4, + &"chunk_0037": 4, &"chunk_9999": 4, &"chunk_9998": 4, &"chunk_9997": 4, @@ -144,6 +154,7 @@ func _validate_catalog() -> void: var cliff_beach_transition_left := CATALOG.definition_for_id(&"chunk_9996") var stream_variant := CATALOG.definition_for_id(&"chunk_0016") var lake_edge := CATALOG.definition_for_id(&"chunk_0017") + var lake_edge_variant := CATALOG.definition_for_id(&"chunk_0037") var lake_corner := CATALOG.definition_for_id(&"chunk_0018") var lake_fill := CATALOG.definition_for_id(&"chunk_0019") var lake_diagonal := CATALOG.definition_for_id(&"chunk_0020") @@ -156,6 +167,10 @@ func _validate_catalog() -> void: var river_source_left := CATALOG.definition_for_id(&"chunk_0030") var river_outlet_right := CATALOG.definition_for_id(&"chunk_0031") var river_outlet_left := CATALOG.definition_for_id(&"chunk_0032") + var river_bend_c := CATALOG.definition_for_id(&"chunk_0033") + var river_bend_b := CATALOG.definition_for_id(&"chunk_0034") + var river_bend_a := CATALOG.definition_for_id(&"chunk_0035") + var river_bend_d := CATALOG.definition_for_id(&"chunk_0036") var river_cap := CATALOG.definition_for_id(&"chunk_9995") var cliff_top := CATALOG.definition_for_id(&"chunk_0009") var cliff_corner := CATALOG.definition_for_id(&"chunk_0010") @@ -184,6 +199,7 @@ func _validate_catalog() -> void: and cliff_beach_transition_left != null and stream_variant != null and lake_edge != null + and lake_edge_variant != null and lake_corner != null and lake_fill != null and lake_diagonal != null @@ -196,6 +212,10 @@ func _validate_catalog() -> void: and river_source_left != null and river_outlet_right != null and river_outlet_left != null + and river_bend_a != null + and river_bend_b != null + and river_bend_c != null + and river_bend_d != null and river_cap != null and cliff_top != null and cliff_corner != null @@ -226,6 +246,7 @@ func _validate_catalog() -> void: and cliff_beach_transition_left != null and stream_variant != null and lake_edge != null + and lake_edge_variant != null and lake_corner != null and lake_fill != null and lake_diagonal != null @@ -238,6 +259,10 @@ func _validate_catalog() -> void: and river_source_left != null and river_outlet_right != null and river_outlet_left != null + and river_bend_a != null + and river_bend_b != null + and river_bend_c != null + and river_bend_d != null and river_cap != null and cliff_top != null and cliff_corner != null @@ -431,6 +456,7 @@ func _validate_catalog() -> void: _check( ( not lake_edge.participates_in_base_solver + and not lake_edge_variant.participates_in_base_solver and not lake_corner.participates_in_base_solver and not lake_fill.participates_in_base_solver and not lake_diagonal.participates_in_base_solver @@ -439,6 +465,14 @@ func _validate_catalog() -> void: and not lake_narrow_to_regular.participates_in_base_solver and lake_edge.water_inlet_edges == lake_edge.water_outlet_edges and lake_edge.water_inlet_edges == 7 + and lake_edge_variant.water_inlet_edges + == lake_edge.water_inlet_edges + and lake_edge_variant.water_outlet_edges + == lake_edge.water_outlet_edges + and lake_edge_variant.water_surface_size + == lake_edge.water_surface_size + and lake_edge_variant.water_surface_offset + == lake_edge.water_surface_offset and lake_corner.water_inlet_edges == lake_corner.water_outlet_edges and lake_corner.water_inlet_edges == 6 @@ -461,6 +495,7 @@ func _validate_catalog() -> void: and lake_narrow_to_regular.water_outlet_edges == 14 and lake_narrow_to_regular.water_surface_polygon.size() == 5 and "lake" in lake_edge.tags + and "lake" in lake_edge_variant.tags and "lake" in lake_corner.tags and "lake" in lake_fill.tags and "lake" in lake_diagonal.tags @@ -478,6 +513,10 @@ func _validate_catalog() -> void: and not river_source_left.participates_in_base_solver and not river_outlet_right.participates_in_base_solver and not river_outlet_left.participates_in_base_solver + and not river_bend_a.participates_in_base_solver + and not river_bend_b.participates_in_base_solver + and not river_bend_c.participates_in_base_solver + and not river_bend_d.participates_in_base_solver and not river_cap.participates_in_base_solver and river_edge.water_inlet_edges == 14 and river_edge.water_outlet_edges == 14 @@ -491,6 +530,16 @@ func _validate_catalog() -> void: and river_outlet_right.water_outlet_edges == 14 and river_outlet_left.water_inlet_edges == 11 and river_outlet_left.water_outlet_edges == 11 + and river_bend_a.water_inlet_edges == 14 + and river_bend_a.water_outlet_edges == 14 + and river_bend_b.water_inlet_edges == 12 + and river_bend_b.water_outlet_edges == 12 + and river_bend_c.water_inlet_edges == 15 + and river_bend_c.water_outlet_edges == 15 + and river_bend_c.continuous_water_seam_edges == 15 + and river_bend_d.water_inlet_edges == 13 + and river_bend_d.water_outlet_edges == 13 + and river_bend_d.continuous_water_seam_edges == 1 and river_cap.water_inlet_edges == 6 and river_cap.water_outlet_edges == 6 and river_edge.water_surface_polygon.size() == 13 @@ -509,11 +558,15 @@ func _validate_catalog() -> void: and "river_source_left" in river_source_left.tags and "river_outlet_right" in river_outlet_right.tags and "river_outlet_left" in river_outlet_left.tags + and "river_bend_a" in river_bend_a.tags + and "river_bend_b" in river_bend_b.tags + and "river_bend_c" in river_bend_c.tags + and "river_bend_d" in river_bend_d.tags and "river" in river_cap.tags ), ( - "The river banks, cliff source, ocean outlet, and legacy caps " - + "must remain connected freshwater chunks." + "The river banks, bend, cliff source, ocean outlet, and legacy " + + "caps must remain connected freshwater chunks." ), ) for cliff_definition: TerrainChunkDefinition in [ @@ -1307,6 +1360,7 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: var lake_regular_to_narrow := _find_variant(generator, &"chunk_0022", 0) var lake_narrow_to_regular := _find_variant(generator, &"chunk_0023", 0) var lake_regular_top := _find_variant(generator, &"chunk_0017", 3) + var lake_regular_variant_top := _find_variant(generator, &"chunk_0037", 3) _check( ( lake_diagonal_northwest != null @@ -1316,6 +1370,7 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: and lake_regular_to_narrow != null and lake_narrow_to_regular != null and lake_regular_top != null + and lake_regular_variant_top != null ), "Every authored diagonal lake perimeter variant must be available.", ) @@ -1327,7 +1382,13 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: and lake_regular_to_narrow != null and lake_narrow_to_regular != null and lake_regular_top != null + and lake_regular_variant_top != null ): + _check( + lake_regular_variant_top.topology_signature(0.001) + == lake_regular_top.topology_signature(0.001), + "Both regular lake edge visuals must expose identical seams.", + ) _check( generator._edges_are_compatible( lake_diagonal_northwest, @@ -1398,11 +1459,36 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: var river_edge_top := _find_variant(generator, &"chunk_0024", 0) var river_edge_variant_top := _find_variant(generator, &"chunk_0025", 0) var river_edge_variant_bottom := _find_variant(generator, &"chunk_0025", 2) + var river_edge_vertical_left := _find_variant(generator, &"chunk_0024", 1) + var river_edge_vertical_right := _find_variant(generator, &"chunk_0025", 3) var river_source_right := _find_variant(generator, &"chunk_0029", 0) var river_source_left := _find_variant(generator, &"chunk_0030", 0) var river_outlet_right := _find_variant(generator, &"chunk_0031", 0) var river_outlet_left := _find_variant(generator, &"chunk_0032", 0) + var river_bend_a := _find_variant(generator, &"chunk_0035", 0) + var river_bend_b := _find_variant(generator, &"chunk_0034", 0) + var river_bend_c := _find_variant(generator, &"chunk_0033", 2) + var river_bend_d := _find_variant(generator, &"chunk_0036", 0) var beach_east := _find_variant(generator, &"chunk_0002", 0) + var canonical_bend_specs := generator._river_bend_placement_specs( + Vector2i(5, 5), + 0, + ) + var rotated_bend_specs := generator._river_bend_placement_specs( + Vector2i(5, 5), + 1, + ) + _check( + ( + canonical_bend_specs.size() == 4 + and canonical_bend_specs[2]["id"] == &"chunk_0033" + and int(canonical_bend_specs[2]["turns"]) == 2 + and rotated_bend_specs.size() == 4 + and rotated_bend_specs[2]["id"] == &"chunk_0033" + and int(rotated_bend_specs[2]["turns"]) == 3 + ), + "River bend C must retain its authored half-turn at every bend rotation.", + ) _check( ( river_cap_northwest != null @@ -1412,15 +1498,21 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: and river_edge_top != null and river_edge_variant_top != null and river_edge_variant_bottom != null + and river_edge_vertical_left != null + and river_edge_vertical_right != null and river_source_right != null and river_source_left != null and river_outlet_right != null and river_outlet_left != null + and river_bend_a != null + and river_bend_b != null + and river_bend_c != null + and river_bend_d != null and beach_east != null ), ( - "Every authored river-bank, source, outlet, and legacy-cap variant " - + "must be available." + "Every authored river-bank, bend, source, outlet, and legacy-cap " + + "variant must be available." ), ) if ( @@ -1431,10 +1523,16 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: and river_edge_top != null and river_edge_variant_top != null and river_edge_variant_bottom != null + and river_edge_vertical_left != null + and river_edge_vertical_right != null and river_source_right != null and river_source_left != null and river_outlet_right != null and river_outlet_left != null + and river_bend_a != null + and river_bend_b != null + and river_bend_c != null + and river_bend_d != null and beach_east != null ): _check( @@ -1458,6 +1556,60 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: ), "The paired cliff source must open directly into both river banks.", ) + _check( + generator._edges_are_compatible( + river_bend_a, + TerrainChunkTopology.Edge.EAST, + river_bend_b, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + river_bend_a, + TerrainChunkTopology.Edge.SOUTH, + river_bend_c, + TerrainChunkTopology.Edge.NORTH, + ) + and generator._edges_are_compatible( + river_bend_b, + TerrainChunkTopology.Edge.SOUTH, + river_bend_d, + TerrainChunkTopology.Edge.NORTH, + ) + and generator._edges_are_compatible( + river_bend_c, + TerrainChunkTopology.Edge.EAST, + river_bend_d, + TerrainChunkTopology.Edge.WEST, + ), + "The four authored river-bend quadrants must form one continuous turn.", + ) + _check( + generator._edges_are_compatible( + river_edge_top, + TerrainChunkTopology.Edge.EAST, + river_bend_a, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + river_edge_variant_bottom, + TerrainChunkTopology.Edge.EAST, + river_bend_c, + TerrainChunkTopology.Edge.WEST, + ) + and generator._edges_are_compatible( + river_bend_c, + TerrainChunkTopology.Edge.SOUTH, + river_edge_vertical_left, + TerrainChunkTopology.Edge.NORTH, + ) + and generator._edges_are_compatible( + river_bend_d, + TerrainChunkTopology.Edge.SOUTH, + river_edge_vertical_right, + TerrainChunkTopology.Edge.NORTH, + ), + "The bend must connect both incoming and outgoing authored river banks.", + ) _check( generator._edges_are_compatible( river_edge_top, @@ -1598,8 +1750,8 @@ func _validate_authored_rotations(generator: TerrainChunkGenerator) -> void: func _validate_generation_summary(generator: TerrainChunkGenerator) -> void: var summary := generator._build_summary() _check( - int(summary.get("variant_count", 0)) == 150, - "The current catalog must expose all 150 authored rotations.", + int(summary.get("variant_count", 0)) == 170, + "The current catalog must expose all 170 authored rotations.", ) _check( int(summary.get("solver_variant_count", 0)) diff --git a/world/generation/chunks/assets/chunk_0017.glb b/world/generation/chunks/assets/chunk_0017.glb index 89e449a7a4fc79962148454f777e67d2e590280d..474fa97c1ef2da2dedeb07a19eb8f2e5cebe1b7b 100644 GIT binary patch delta 3635 zcmbVNdu&rx82{R}Tidl;H|SazTSpliuu^(&AG;mcb0_bifDw@(h%kx}CLk;zAh|%u zA}R*BO2F{az%UU3ov%dJTcR;R<*i}FgoqlW28Ea?COq`}?znh1*8Slh=llJ>_c{0U zd_9&i9qur>o^F~p&I|y-CV(;9T;H4G+pe!75m)z`qJ37)ZB8wpvplsRwLGG%Towxl1JBHTE>QQx@Ng&|t(BspC`wU5jEj<}9UFp0`jJxIv&f>7dOcS*3z9124Ra?1Nr*{8Z6p>K!il(uc`v{r9ZB1F4wO_1WaYuo`fvIvsY*(sCX$08-L)5ZMB zj%ZAbuA9BC;;T7o$hlD2pTXY`O#gUi;&#ViO+Is|y*u9$Vww??jRSPnX*5^JJ1-aN zHGAXH&GyWL*sD>&gnJ6|<_%l5Bs%uo_Gfr*G$8w^;2wQLz41HkpXzl^-&vaBxlxDg zpD#SCDReSJ>4{TvJ#J{|iZ>b0jY4FnLX_JZH{wOpGI{e!Ylh;HE4FOJPCJXhf?~f0q)msyNmD!wK0&y$UIm{a!qX)5y5o7hk@cZU>K^=U(Im7&C z;LnoHP8Ah?&-^yB*-g7;ZTPg=GU2Ujo{aa=fZVa@aoOyCoss?Q(Ng)+U7h?Fblt1R zU0USLP~MUY1(iQA-QhtQbtH$sCetpPE?Rk!6FVR;n>)kG<^|5Dzvp__C2Kd zov0gF3VDzVrMUbs0Ls9M(h4RBz#zy+nGZIo06REQI-wG3pbr$GEP|n+R6#WqLKUt8 z2*PmiqVz%ugrP6^Q2HQ*nitEK;2HoP=nv&6%b_0>!$25}axl0tyAazI;0oZ2%)zRF zs|w6842GZ_0v2$903%S202gj4AG_HsD1vR1TvvR`unpg&o4u_X&2^qxy2VCTGbk z4 zyBVL5&HnO|xhxQ`NnW=6ko<1fYUY0Ff#kTho9)@`rED>K|6MWpS-%g`2Y*@0c8rcE zZywl{CcDy;gAd|2l+Dg>l;1=)JNG3fruh?ajxKio1pJ10yE?ThsNA{XVCVX+X9oU* zI-GB*GjQeGCp7Z&2w%6&3X- zI1^~>Ll0Rw!zgG16>9Kz<${n68xh# z>@*Dc$8Ff@(Hn1)-m_un-!{El!%qC}`y8s#12r7P`L}1-=}qDvYMB1p|IboB{C%UQ zuAC(k&MWq03MW*{q!W^!cr8bJ3jZHTCp>=qnAYY2-B0++dkvcJlX)8X38_xyiBq~x zNcxN6gL*z;(05P^j0@@ch>A=NmYu0iQvt#PyjnBfg&FVAjrU|lX~o-f;=Sde%)?uy ztG1)GB5X$tWk)v5HoC8qX=aYW^A51dA!Tf-+^sh6DO!MU0d7! IYN+%43jm7$r~m)} delta 798 zcmZ`%&ubGw6rSB|ez&A;k|q#oBzkJLb!K*UG8-k0mtOn{O)aRUTAFIWAD|H}66mF8 zjqm0`@n%4Qty^s!7fi?Gtbf*Qm<45*u3x@as$Q63vo80z<4Vc| zcUgtOYpZD}I2oCO`EU^mu_A1Rized`j~;}#;o>Q=N6bCtctQv!sgO)K_6(h+ig}LW z$Wkt-lD4~yiq?&P+qsd3A%=FnND-q0u_^e9kwm{b<|m@lV?h_#iY{X5Q?xb|)Uf$t z>?m{+WAHpyMjVIZ$?~|wO;H+G*wdoz_zQ zH|G4@La9E${Qb)Ua)0sTFwgmaQ1@w#Nune|Ogt9;jUf`oJ4}rJO8RsD@L==)+`H^t z4LS0^7_1|9GK3SfnxOI~y>ke*8?^l9+p|}Xe=OEDuJtDUjee%CbB#JTu-zmEo)E00 LpZ0gpRkObUhdSkj diff --git a/world/generation/chunks/assets/chunk_0033.glb b/world/generation/chunks/assets/chunk_0033.glb new file mode 100644 index 0000000000000000000000000000000000000000..909f7f9346ba34107d235dc6e4bbcdd01905a230 GIT binary patch literal 25700 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0033_dirt.png.import b/world/generation/chunks/assets/chunk_0033_dirt.png.import new file mode 100644 index 0000000..5d3f72d --- /dev/null +++ b/world/generation/chunks/assets/chunk_0033_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdo5u7ulyf420" +path.s3tc="res://.godot/imported/chunk_0033_dirt.png-922aa321752269bafb91e9d4b7af875e.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0033_dirt.png-922aa321752269bafb91e9d4b7af875e.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0033_dirt.png" +dest_files=["res://.godot/imported/chunk_0033_dirt.png-922aa321752269bafb91e9d4b7af875e.s3tc.ctex", "res://.godot/imported/chunk_0033_dirt.png-922aa321752269bafb91e9d4b7af875e.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/world/generation/chunks/assets/chunk_0033_grass_lite.png b/world/generation/chunks/assets/chunk_0033_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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

}Y(i5lbd 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0034_dirt.png.import b/world/generation/chunks/assets/chunk_0034_dirt.png.import new file mode 100644 index 0000000..8a37ca8 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0034_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://brbxnlixypkxp" +path.s3tc="res://.godot/imported/chunk_0034_dirt.png-1bf0eb5903180997b50f578932bd52c6.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0034_dirt.png-1bf0eb5903180997b50f578932bd52c6.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0034_dirt.png" +dest_files=["res://.godot/imported/chunk_0034_dirt.png-1bf0eb5903180997b50f578932bd52c6.s3tc.ctex", "res://.godot/imported/chunk_0034_dirt.png-1bf0eb5903180997b50f578932bd52c6.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/world/generation/chunks/assets/chunk_0034_grass_lite.png b/world/generation/chunks/assets/chunk_0034_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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

-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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0035_dirt.png.import b/world/generation/chunks/assets/chunk_0035_dirt.png.import new file mode 100644 index 0000000..196b777 --- /dev/null +++ b/world/generation/chunks/assets/chunk_0035_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dc1nrektrgqkp" +path.s3tc="res://.godot/imported/chunk_0035_dirt.png-58b1612acd4423920b9fa50fc3926b47.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0035_dirt.png-58b1612acd4423920b9fa50fc3926b47.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0035_dirt.png" +dest_files=["res://.godot/imported/chunk_0035_dirt.png-58b1612acd4423920b9fa50fc3926b47.s3tc.ctex", "res://.godot/imported/chunk_0035_dirt.png-58b1612acd4423920b9fa50fc3926b47.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/world/generation/chunks/assets/chunk_0035_grass_lite.png b/world/generation/chunks/assets/chunk_0035_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0036_dirt.png.import b/world/generation/chunks/assets/chunk_0036_dirt.png.import new file mode 100644 index 0000000..56830df --- /dev/null +++ b/world/generation/chunks/assets/chunk_0036_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://tb7yncykrheo" +path.s3tc="res://.godot/imported/chunk_0036_dirt.png-38c14a27c0e4c7f325f880966042443b.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0036_dirt.png-38c14a27c0e4c7f325f880966042443b.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0036_dirt.png" +dest_files=["res://.godot/imported/chunk_0036_dirt.png-38c14a27c0e4c7f325f880966042443b.s3tc.ctex", "res://.godot/imported/chunk_0036_dirt.png-38c14a27c0e4c7f325f880966042443b.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/world/generation/chunks/assets/chunk_0036_grass_lite.png b/world/generation/chunks/assets/chunk_0036_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 literal 0 HcmV?d00001 diff --git a/world/generation/chunks/assets/chunk_0037_dirt.png.import b/world/generation/chunks/assets/chunk_0037_dirt.png.import new file mode 100644 index 0000000..63ee56e --- /dev/null +++ b/world/generation/chunks/assets/chunk_0037_dirt.png.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cie8oie0c845v" +path.s3tc="res://.godot/imported/chunk_0037_dirt.png-19715c4c1848faa763210a57f6770bc8.s3tc.ctex" +path.etc2="res://.godot/imported/chunk_0037_dirt.png-19715c4c1848faa763210a57f6770bc8.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} +generator_parameters={ +"md5": "07d90b3c46a4c3d0c172bed143dc9436" +} + +[deps] + +source_file="res://world/generation/chunks/assets/chunk_0037_dirt.png" +dest_files=["res://.godot/imported/chunk_0037_dirt.png-19715c4c1848faa763210a57f6770bc8.s3tc.ctex", "res://.godot/imported/chunk_0037_dirt.png-19715c4c1848faa763210a57f6770bc8.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/world/generation/chunks/assets/chunk_0037_grass_lite.png b/world/generation/chunks/assets/chunk_0037_grass_lite.png new file mode 100644 index 0000000000000000000000000000000000000000..52c7ccb8088ddfae88f9b861a807f1de2d38f855 GIT binary patch literal 6317 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 PackedStringArray: % definition.stable_id ) var has_fresh_water := "fresh_water" in definition.tags + var water_connector_edges := ( + definition.water_inlet_edges | definition.water_outlet_edges + ) + if ( + definition.continuous_water_seam_edges + & ~water_connector_edges + ) != 0: + errors.append( + ( + "%s relaxes a continuous-water seam on an edge without " + + "a water connector." + ) % definition.stable_id + ) var has_rectangular_water_footprint := ( definition.water_surface_size.x > 0.0 and definition.water_surface_size.y > 0.0 diff --git a/world/generation/terrain_chunk_definition.gd b/world/generation/terrain_chunk_definition.gd index 9f33e34..dcbceca 100644 --- a/world/generation/terrain_chunk_definition.gd +++ b/world/generation/terrain_chunk_definition.gd @@ -92,6 +92,12 @@ var edge_profile_tolerance_override := 0.0 @export_flags("North", "East", "South", "West") var buried_cliff_seam_edges := 0 @export_flags("North", "East", "South", "West") var water_inlet_edges := 0 @export_flags("North", "East", "South", "West") var water_outlet_edges := 0 +## Authored multi-cell water assemblies may deliberately carry a broad, +## continuous channel across a seam whose bank control points do not match +## one-for-one. These edges relax only the height-profile comparison; both +## neighboring edges must still expose compatible water connectors. +@export_flags("North", "East", "South", "West") +var continuous_water_seam_edges := 0 ## Optional generated water footprint in the chunk's unrotated local X/Z plane. ## Zero means this chunk contributes no standalone water surface. @export var water_surface_size := Vector2.ZERO diff --git a/world/generation/terrain_chunk_generator.gd b/world/generation/terrain_chunk_generator.gd index cc49494..1098caf 100644 --- a/world/generation/terrain_chunk_generator.gd +++ b/world/generation/terrain_chunk_generator.gd @@ -38,6 +38,7 @@ const MAX_PACKED_SOLVER_VARIANTS := 62 @export_group("Freshwater Lake Feature") @export var lake_feature_enabled := false @export var lake_edge_chunk_id: StringName = &"chunk_0017" +@export var lake_edge_variant_chunk_id: StringName = &"chunk_0037" @export var lake_corner_chunk_id: StringName = &"chunk_0018" @export var lake_fill_chunk_id: StringName = &"chunk_0019" @export var lake_diagonal_chunk_id: StringName = &"chunk_0020" @@ -57,6 +58,10 @@ const MAX_PACKED_SOLVER_VARIANTS := 62 @export var river_source_left_chunk_id: StringName = &"chunk_0030" @export var river_outlet_right_chunk_id: StringName = &"chunk_0031" @export var river_outlet_left_chunk_id: StringName = &"chunk_0032" +@export var river_bend_c_chunk_id: StringName = &"chunk_0033" +@export var river_bend_b_chunk_id: StringName = &"chunk_0034" +@export var river_bend_a_chunk_id: StringName = &"chunk_0035" +@export var river_bend_d_chunk_id: StringName = &"chunk_0036" @export_range(5, 8, 1) var river_minimum_length := 5 @export_range(5, 8, 1) var river_maximum_length := 5 @export_group("") @@ -136,9 +141,13 @@ var _lake_feature_reserved_grass_indices: Dictionary[int, bool] = {} var _river_feature_origin := Vector2i(-1, -1) var _river_feature_footprint_size := Vector2i.ZERO var _river_feature_flow_direction := Vector2i.ZERO +var _river_feature_outlet_direction := Vector2i.ZERO var _river_feature_reserved_grass_indices: Dictionary[int, bool] = {} var _river_feature_candidate_order: Array[Dictionary] = [] var _river_feature_candidate_index := -1 +var _river_feature_placements: Array[Dictionary] = [] +var _river_feature_coordinates: Dictionary[Vector2i, bool] = {} +var _river_feature_source_coordinates: Array[Vector2i] = [] var _stacked_elevated_placements: Array[Dictionary] = [] @@ -1460,9 +1469,8 @@ func _elevated_feature_overlaps_river( center: Vector2i, clearance_radius: int, ) -> bool: - if _river_feature_origin.x < 0: + if _river_feature_coordinates.is_empty(): return false - var river_end := _river_feature_origin + _river_feature_footprint_size for row: int in range( center.y - clearance_radius, center.y + clearance_radius + 1, @@ -1471,12 +1479,13 @@ func _elevated_feature_overlaps_river( center.x - clearance_radius, center.x + clearance_radius + 1, ): - if ( - column >= _river_feature_origin.x - and column < river_end.x - and row >= _river_feature_origin.y - and row < river_end.y - ): + var coordinate := Vector2i(column, row) + if _river_feature_coordinates.has(coordinate): + return true + if not _coordinate_is_inside_grid(coordinate): + continue + var index := coordinate.y * grid_size.x + coordinate.x + if _river_feature_reserved_grass_indices.has(index): return true return false @@ -1510,6 +1519,9 @@ func _prepare_lake_feature_region(report_no_room_error := true) -> bool: if not lake_feature_enabled: return true var edge_definition := catalog.definition_for_id(lake_edge_chunk_id) + var edge_variant_definition := catalog.definition_for_id( + lake_edge_variant_chunk_id + ) var corner_definition := catalog.definition_for_id(lake_corner_chunk_id) var fill_definition := catalog.definition_for_id(lake_fill_chunk_id) var diagonal_definition := catalog.definition_for_id(lake_diagonal_chunk_id) @@ -1520,11 +1532,18 @@ func _prepare_lake_feature_region(report_no_room_error := true) -> bool: var narrow_to_regular_definition := catalog.definition_for_id( lake_narrow_to_regular_chunk_id ) - if edge_definition == null or corner_definition == null: - push_error("Lake feature references missing edge or corner chunks.") + if ( + edge_definition == null + or edge_variant_definition == null + or corner_definition == null + ): + push_error( + "Lake feature references missing edge, edge variant, or corner chunks." + ) return false if ( edge_definition.participates_in_base_solver + or edge_variant_definition.participates_in_base_solver or corner_definition.participates_in_base_solver or ( fill_definition != null @@ -1677,9 +1696,13 @@ func _prepare_river_feature_region(report_no_room_error := true) -> bool: _river_feature_origin = Vector2i(-1, -1) _river_feature_footprint_size = Vector2i.ZERO _river_feature_flow_direction = Vector2i.ZERO + _river_feature_outlet_direction = Vector2i.ZERO _river_feature_reserved_grass_indices.clear() _river_feature_candidate_order.clear() _river_feature_candidate_index = -1 + _river_feature_placements.clear() + _river_feature_coordinates.clear() + _river_feature_source_coordinates.clear() if not river_feature_enabled: return true for stable_id: StringName in [ @@ -1689,6 +1712,10 @@ func _prepare_river_feature_region(report_no_room_error := true) -> bool: river_source_left_chunk_id, river_outlet_right_chunk_id, river_outlet_left_chunk_id, + river_bend_a_chunk_id, + river_bend_b_chunk_id, + river_bend_c_chunk_id, + river_bend_d_chunk_id, ]: var definition := catalog.definition_for_id(stable_id) if definition == null: @@ -1750,62 +1777,56 @@ func _select_river_feature_region(candidate_index: int) -> bool: ): return false var selected: Dictionary = _river_feature_candidate_order[candidate_index] + if not _river_feature_candidate_is_valid(selected): + return false var origin: Vector2i = selected.get("origin", Vector2i(-1, -1)) var footprint_size: Vector2i = selected.get("size", Vector2i.ZERO) var flow_direction: Vector2i = selected.get( "flow_direction", Vector2i.ZERO, ) - var source_coordinates := _river_source_coordinates( - origin, - footprint_size, - flow_direction, + var outlet_direction: Vector2i = selected.get( + "outlet_direction", + Vector2i.ZERO, ) - var source_lookup: Dictionary[Vector2i, bool] = {} - var source_exit_lookup: Dictionary[Vector2i, bool] = {} - for coordinate: Vector2i in source_coordinates: - source_lookup[coordinate] = true - source_exit_lookup[coordinate + flow_direction] = true - for row: int in range(origin.y, origin.y + footprint_size.y): - for column: int in range(origin.x, origin.x + footprint_size.x): - var coordinate := Vector2i(column, row) - var index := row * grid_size.x + column - if ( - ( - _elevated_feature_reserved_grass_indices.has(index) - and not source_lookup.has(coordinate) - and not source_exit_lookup.has(coordinate) - ) - or _lake_feature_reserved_grass_indices.has(index) - ): - return false - for coordinate: Vector2i in source_coordinates: - var index := coordinate.y * grid_size.x + coordinate.x - if not _elevated_feature_reserved_grass_indices.has(index): - return false + var source_coordinates: Array[Vector2i] = [] + source_coordinates.assign(selected.get("source_coordinates", [])) + var placements: Array[Dictionary] = [] + placements.assign(selected.get("placements", [])) + var coordinates: Array[Vector2i] = [] + coordinates.assign(selected.get("coordinates", [])) _river_feature_candidate_index = candidate_index _river_feature_origin = origin _river_feature_footprint_size = footprint_size _river_feature_flow_direction = flow_direction + _river_feature_outlet_direction = outlet_direction + _river_feature_source_coordinates.assign(source_coordinates) + _river_feature_placements.assign(placements) + _river_feature_coordinates.clear() + for coordinate: Vector2i in coordinates: + _river_feature_coordinates[coordinate] = true _river_feature_reserved_grass_indices.clear() - var river_end := _river_feature_origin + _river_feature_footprint_size - for row: int in range( - _river_feature_origin.y - RIVER_FEATURE_CLEARANCE, - river_end.y + RIVER_FEATURE_CLEARANCE, - ): - for column: int in range( - _river_feature_origin.x - RIVER_FEATURE_CLEARANCE, - river_end.x + RIVER_FEATURE_CLEARANCE, + for river_coordinate: Vector2i in coordinates: + for row_offset: int in range( + -RIVER_FEATURE_CLEARANCE, + RIVER_FEATURE_CLEARANCE + 1, ): - var coordinate := Vector2i(column, row) - if ( - not _coordinate_is_inside_grid(coordinate) - or _coordinate_is_on_boundary(coordinate) + for column_offset: int in range( + -RIVER_FEATURE_CLEARANCE, + RIVER_FEATURE_CLEARANCE + 1, ): - continue - _river_feature_reserved_grass_indices[ - row * grid_size.x + column - ] = true + var coordinate := ( + river_coordinate + + Vector2i(column_offset, row_offset) + ) + if ( + not _coordinate_is_inside_grid(coordinate) + or _coordinate_is_on_boundary(coordinate) + ): + continue + _river_feature_reserved_grass_indices[ + coordinate.y * grid_size.x + coordinate.x + ] = true return true @@ -1823,129 +1844,614 @@ func _river_feature_candidates( ] for flow_direction: Vector2i in directions: for cross_offset: int in [-1, 0]: - var footprint_size := ( - Vector2i(length, 2) - if flow_direction.x != 0 - else Vector2i(2, length) - ) - var origin := Vector2i.ZERO - match flow_direction: - Vector2i.RIGHT: - origin = Vector2i( - _elevated_feature_center.x + ELEVATED_FEATURE_RADIUS, - _elevated_feature_center.y + cross_offset, - ) - Vector2i.LEFT: - origin = Vector2i( - _elevated_feature_center.x - - ELEVATED_FEATURE_RADIUS - - length - + 1, - _elevated_feature_center.y + cross_offset, - ) - Vector2i.DOWN: - origin = Vector2i( - _elevated_feature_center.x + cross_offset, - _elevated_feature_center.y + ELEVATED_FEATURE_RADIUS, - ) - Vector2i.UP: - origin = Vector2i( - _elevated_feature_center.x + cross_offset, - _elevated_feature_center.y - - ELEVATED_FEATURE_RADIUS - - length - + 1, - ) - if _river_feature_candidate_is_valid( - origin, - footprint_size, + var source_coordinates := _river_source_pair_for_direction( flow_direction, - ): - result.append({ - "origin": origin, - "size": footprint_size, - "flow_direction": flow_direction, - }) + cross_offset, + ) + for bend_distance: int in range(2, maxi(3, length - 1)): + var target_entry: Array[Vector2i] = [] + for coordinate: Vector2i in source_coordinates: + target_entry.append( + coordinate + flow_direction * bend_distance + ) + for bend_turns: int in 4: + var sides := _river_bend_sides(bend_turns) + for entry_index: int in 2: + var entry_side: Dictionary = sides[entry_index] + if ( + entry_side.get("normal", Vector2i.ZERO) + != -flow_direction + ): + continue + var exit_side: Dictionary = sides[1 - entry_index] + var entry_offsets: Array[Vector2i] = [] + entry_offsets.assign(entry_side.get("offsets", [])) + var bend_origin := _river_pair_translation( + target_entry, + entry_offsets, + ) + if bend_origin.x == -1000000: + continue + var exit_offsets: Array[Vector2i] = [] + exit_offsets.assign(exit_side.get("offsets", [])) + var exit_coordinates: Array[Vector2i] = [] + for offset: Vector2i in exit_offsets: + exit_coordinates.append(bend_origin + offset) + var outlet_direction: Vector2i = exit_side.get( + "normal", + Vector2i.ZERO, + ) + var outlet_distance := _river_distance_to_boundary( + exit_coordinates, + outlet_direction, + ) + if ( + outlet_distance < 2 + or bend_distance + outlet_distance + 2 < length + ): + continue + var candidate := _build_river_feature_candidate( + source_coordinates, + flow_direction, + bend_origin, + bend_turns, + bend_distance, + exit_coordinates, + outlet_direction, + outlet_distance, + ) + if _river_feature_candidate_is_valid(candidate): + result.append(candidate) return result func _river_feature_candidate_is_valid( - origin: Vector2i, - footprint_size: Vector2i, - flow_direction: Vector2i, + candidate: Dictionary, ) -> bool: - var river_end := origin + footprint_size - var boundary_clearance := RIVER_FEATURE_CLEARANCE + 1 - if flow_direction.x != 0: - if ( - origin.y < boundary_clearance - or river_end.y > grid_size.y - boundary_clearance - ): - return false - if ( - flow_direction == Vector2i.RIGHT - and river_end.x != grid_size.x - ) or ( - flow_direction == Vector2i.LEFT - and origin.x != 0 - ): - return false - else: - if ( - origin.x < boundary_clearance - or river_end.x > grid_size.x - boundary_clearance - ): - return false - if ( - flow_direction == Vector2i.DOWN - and river_end.y != grid_size.y - ) or ( - flow_direction == Vector2i.UP - and origin.y != 0 - ): - return false + if candidate.is_empty(): + return false + var flow_direction: Vector2i = candidate.get( + "flow_direction", + Vector2i.ZERO, + ) + var outlet_direction: Vector2i = candidate.get( + "outlet_direction", + Vector2i.ZERO, + ) + if ( + flow_direction == Vector2i.ZERO + or outlet_direction == Vector2i.ZERO + or ( + flow_direction.x * outlet_direction.x + + flow_direction.y * outlet_direction.y + ) != 0 + ): + return false + var coordinates: Array[Vector2i] = [] + coordinates.assign(candidate.get("coordinates", [])) + var source_coordinates: Array[Vector2i] = [] + source_coordinates.assign(candidate.get("source_coordinates", [])) + var outlet_coordinates: Array[Vector2i] = [] + outlet_coordinates.assign(candidate.get("outlet_coordinates", [])) + if ( + coordinates.is_empty() + or source_coordinates.size() != 2 + or outlet_coordinates.size() != 2 + ): + return false var center := Vector2i(grid_size.x / 2, grid_size.y / 2) var source_lookup: Dictionary[Vector2i, bool] = {} var source_exit_lookup: Dictionary[Vector2i, bool] = {} - for coordinate: Vector2i in _river_source_coordinates( - origin, - footprint_size, - flow_direction, - ): + var outlet_lookup: Dictionary[Vector2i, bool] = {} + var outlet_approach_lookup: Dictionary[Vector2i, bool] = {} + for coordinate: Vector2i in source_coordinates: source_lookup[coordinate] = true source_exit_lookup[coordinate + flow_direction] = true - if source_lookup.size() != 2: - return false - for row: int in range(origin.y, river_end.y): - for column: int in range(origin.x, river_end.x): - var coordinate := Vector2i(column, row) - var index := row * grid_size.x + column - var center_distance := ( - absi(coordinate.x - center.x) - + absi(coordinate.y - center.y) + for coordinate: Vector2i in outlet_coordinates: + outlet_lookup[coordinate] = true + outlet_approach_lookup[coordinate - outlet_direction] = true + var coordinate_lookup: Dictionary[Vector2i, bool] = {} + for coordinate: Vector2i in coordinates: + if not _coordinate_is_inside_grid(coordinate): + return false + if coordinate_lookup.has(coordinate): + return false + var boundary_distance := _distance_from_map_boundary(coordinate) + if ( + boundary_distance == 0 + and not outlet_lookup.has(coordinate) + ): + return false + if ( + boundary_distance == 1 + and not outlet_approach_lookup.has(coordinate) + ): + return false + coordinate_lookup[coordinate] = true + var index := coordinate.y * grid_size.x + coordinate.x + var center_distance := ( + absi(coordinate.x - center.x) + + absi(coordinate.y - center.y) + ) + if ( + center_distance <= 1 + or _lake_feature_reserved_grass_indices.has(index) + or ( + _elevated_feature_reserved_grass_indices.has(index) + and not source_lookup.has(coordinate) + and not source_exit_lookup.has(coordinate) ) - if ( - center_distance <= 1 - or _lake_feature_reserved_grass_indices.has(index) - or ( - _elevated_feature_reserved_grass_indices.has(index) - and not source_lookup.has(coordinate) - and not source_exit_lookup.has(coordinate) - ) - ): - return false + ): + return false for coordinate: Vector2i in source_lookup: var index := coordinate.y * grid_size.x + coordinate.x if not _elevated_feature_reserved_grass_indices.has(index): return false + for coordinate: Vector2i in outlet_coordinates: + if ( + not _coordinate_is_on_boundary(coordinate) + or _coordinate_is_inside_grid(coordinate + outlet_direction) + ): + return false + var ordered_outlet := _river_sorted_pair( + outlet_coordinates, + outlet_direction, + ) + var tangent := ( + Vector2i.DOWN + if outlet_direction.x != 0 + else Vector2i.RIGHT + ) + for beach_coordinate: Vector2i in [ + ordered_outlet[0] - tangent, + ordered_outlet[1] + tangent, + ]: + if ( + not _coordinate_is_inside_grid(beach_coordinate) + or not _coordinate_is_on_boundary(beach_coordinate) + or coordinate_lookup.has(beach_coordinate) + ): + return false return true +func _river_source_pair_for_direction( + flow_direction: Vector2i, + cross_offset: int, +) -> Array[Vector2i]: + match flow_direction: + Vector2i.RIGHT: + return [ + Vector2i( + _elevated_feature_center.x + ELEVATED_FEATURE_RADIUS, + _elevated_feature_center.y + cross_offset, + ), + Vector2i( + _elevated_feature_center.x + ELEVATED_FEATURE_RADIUS, + _elevated_feature_center.y + cross_offset + 1, + ), + ] + Vector2i.LEFT: + return [ + Vector2i( + _elevated_feature_center.x - ELEVATED_FEATURE_RADIUS, + _elevated_feature_center.y + cross_offset, + ), + Vector2i( + _elevated_feature_center.x - ELEVATED_FEATURE_RADIUS, + _elevated_feature_center.y + cross_offset + 1, + ), + ] + Vector2i.DOWN: + return [ + Vector2i( + _elevated_feature_center.x + cross_offset, + _elevated_feature_center.y + ELEVATED_FEATURE_RADIUS, + ), + Vector2i( + _elevated_feature_center.x + cross_offset + 1, + _elevated_feature_center.y + ELEVATED_FEATURE_RADIUS, + ), + ] + Vector2i.UP: + return [ + Vector2i( + _elevated_feature_center.x + cross_offset, + _elevated_feature_center.y - ELEVATED_FEATURE_RADIUS, + ), + Vector2i( + _elevated_feature_center.x + cross_offset + 1, + _elevated_feature_center.y - ELEVATED_FEATURE_RADIUS, + ), + ] + return [] + + +func _river_bend_sides(quarter_turns: int) -> Array[Dictionary]: + var west_offsets: Array[Vector2i] = [Vector2i(0, 0), Vector2i(0, 1)] + var south_offsets: Array[Vector2i] = [Vector2i(0, 1), Vector2i(1, 1)] + return [ + { + "normal": _rotate_grid_direction(Vector2i.LEFT, quarter_turns), + "offsets": _rotate_river_bend_offsets( + west_offsets, + quarter_turns, + ), + }, + { + "normal": _rotate_grid_direction(Vector2i.DOWN, quarter_turns), + "offsets": _rotate_river_bend_offsets( + south_offsets, + quarter_turns, + ), + }, + ] + + +func _rotate_river_bend_offsets( + offsets: Array[Vector2i], + quarter_turns: int, +) -> Array[Vector2i]: + var result: Array[Vector2i] = [] + for offset: Vector2i in offsets: + var rotated := offset + for _turn: int in posmod(quarter_turns, 4): + rotated = Vector2i(rotated.y, 1 - rotated.x) + result.append(rotated) + return result + + +func _rotate_grid_direction( + direction: Vector2i, + quarter_turns: int, +) -> Vector2i: + var result := direction + for _turn: int in posmod(quarter_turns, 4): + result = Vector2i(result.y, -result.x) + return result + + +func _river_pair_translation( + target_coordinates: Array[Vector2i], + local_offsets: Array[Vector2i], +) -> Vector2i: + if target_coordinates.size() != 2 or local_offsets.size() != 2: + return Vector2i(-1000000, -1000000) + for reversed_offsets: bool in [false, true]: + var first_offset := local_offsets[1 if reversed_offsets else 0] + var second_offset := local_offsets[0 if reversed_offsets else 1] + var origin := target_coordinates[0] - first_offset + if origin + second_offset == target_coordinates[1]: + return origin + return Vector2i(-1000000, -1000000) + + +func _river_distance_to_boundary( + pair: Array[Vector2i], + direction: Vector2i, +) -> int: + if pair.size() != 2: + return -1 + match direction: + Vector2i.RIGHT: + return grid_size.x - 1 - pair[0].x + Vector2i.LEFT: + return pair[0].x + Vector2i.DOWN: + return grid_size.y - 1 - pair[0].y + Vector2i.UP: + return pair[0].y + return -1 + + +func _build_river_feature_candidate( + source_coordinates: Array[Vector2i], + flow_direction: Vector2i, + bend_origin: Vector2i, + bend_turns: int, + bend_distance: int, + exit_coordinates: Array[Vector2i], + outlet_direction: Vector2i, + outlet_distance: int, +) -> Dictionary: + var placements: Array[Dictionary] = [] + placements.append_array( + _river_endpoint_pair_specs( + source_coordinates, + flow_direction, + true, + ) + ) + var phase := posmod( + generation_seed + + source_coordinates[0].x + + source_coordinates[0].y + + bend_origin.x + + bend_origin.y, + 2, + ) + var station_index := 0 + for step: int in range(1, bend_distance): + var pair: Array[Vector2i] = [] + for coordinate: Vector2i in source_coordinates: + pair.append(coordinate + flow_direction * step) + placements.append_array( + _river_edge_pair_specs( + pair, + flow_direction, + phase + station_index, + ) + ) + station_index += 1 + placements.append_array( + _river_bend_placement_specs(bend_origin, bend_turns) + ) + for step: int in range(1, outlet_distance): + var pair: Array[Vector2i] = [] + for coordinate: Vector2i in exit_coordinates: + pair.append(coordinate + outlet_direction * step) + placements.append_array( + _river_edge_pair_specs( + pair, + outlet_direction, + phase + station_index, + ) + ) + station_index += 1 + var outlet_coordinates: Array[Vector2i] = [] + for coordinate: Vector2i in exit_coordinates: + outlet_coordinates.append( + coordinate + outlet_direction * outlet_distance + ) + placements.append_array( + _river_endpoint_pair_specs( + outlet_coordinates, + outlet_direction, + false, + ) + ) + var coordinates: Array[Vector2i] = [] + var minimum := Vector2i(1000000, 1000000) + var maximum := Vector2i(-1000000, -1000000) + for spec: Dictionary in placements: + var coordinate := spec.get("coordinate", Vector2i(-1, -1)) as Vector2i + coordinates.append(coordinate) + minimum.x = mini(minimum.x, coordinate.x) + minimum.y = mini(minimum.y, coordinate.y) + maximum.x = maxi(maximum.x, coordinate.x) + maximum.y = maxi(maximum.y, coordinate.y) + return { + "origin": minimum, + "size": maximum - minimum + Vector2i.ONE, + "flow_direction": flow_direction, + "outlet_direction": outlet_direction, + "source_coordinates": source_coordinates.duplicate(), + "outlet_coordinates": outlet_coordinates, + "coordinates": coordinates, + "placements": placements, + "bend_origin": bend_origin, + "bend_turns": bend_turns, + } + + +func _river_endpoint_pair_specs( + pair: Array[Vector2i], + flow_direction: Vector2i, + is_source: bool, +) -> Array[Dictionary]: + var ordered := _river_sorted_pair(pair, flow_direction) + if ordered.size() != 2: + return [] + var result: Array[Dictionary] = [] + match flow_direction: + Vector2i.RIGHT: + result.assign([ + { + "coordinate": ordered[0], + "id": ( + river_source_right_chunk_id + if is_source + else river_outlet_right_chunk_id + ), + "turns": 0, + }, + { + "coordinate": ordered[1], + "id": ( + river_source_left_chunk_id + if is_source + else river_outlet_left_chunk_id + ), + "turns": 0, + }, + ]) + Vector2i.LEFT: + result.assign([ + { + "coordinate": ordered[0], + "id": ( + river_source_left_chunk_id + if is_source + else river_outlet_left_chunk_id + ), + "turns": 2, + }, + { + "coordinate": ordered[1], + "id": ( + river_source_right_chunk_id + if is_source + else river_outlet_right_chunk_id + ), + "turns": 2, + }, + ]) + Vector2i.DOWN: + result.assign([ + { + "coordinate": ordered[0], + "id": ( + river_source_left_chunk_id + if is_source + else river_outlet_left_chunk_id + ), + "turns": 3, + }, + { + "coordinate": ordered[1], + "id": ( + river_source_right_chunk_id + if is_source + else river_outlet_right_chunk_id + ), + "turns": 3, + }, + ]) + Vector2i.UP: + result.assign([ + { + "coordinate": ordered[0], + "id": ( + river_source_right_chunk_id + if is_source + else river_outlet_right_chunk_id + ), + "turns": 1, + }, + { + "coordinate": ordered[1], + "id": ( + river_source_left_chunk_id + if is_source + else river_outlet_left_chunk_id + ), + "turns": 1, + }, + ]) + return result + + +func _river_edge_pair_specs( + pair: Array[Vector2i], + flow_direction: Vector2i, + phase: int, +) -> Array[Dictionary]: + var ordered := _river_sorted_pair(pair, flow_direction) + if ordered.size() != 2: + return [] + var edge_ids: Array[StringName] = [ + river_edge_chunk_id, + river_edge_variant_chunk_id, + ] + var first_index := posmod(phase, edge_ids.size()) + var first_turns := 0 if flow_direction.x != 0 else 1 + var second_turns := 2 if flow_direction.x != 0 else 3 + return [ + { + "coordinate": ordered[0], + "id": edge_ids[first_index], + "turns": first_turns, + }, + { + "coordinate": ordered[1], + "id": edge_ids[posmod(first_index + 1, edge_ids.size())], + "turns": second_turns, + }, + ] + + +func _river_bend_placement_specs( + bend_origin: Vector2i, + quarter_turns: int, +) -> Array[Dictionary]: + var canonical: Array[Dictionary] = [ + { + "offset": Vector2i(0, 0), + "id": river_bend_a_chunk_id, + "base_turns": 0, + }, + { + "offset": Vector2i(1, 0), + "id": river_bend_b_chunk_id, + "base_turns": 0, + }, + { + "offset": Vector2i(0, 1), + "id": river_bend_c_chunk_id, + "base_turns": 2, + }, + { + "offset": Vector2i(1, 1), + "id": river_bend_d_chunk_id, + "base_turns": 0, + }, + ] + var result: Array[Dictionary] = [] + for canonical_spec: Dictionary in canonical: + var offsets: Array[Vector2i] = [ + canonical_spec["offset"] as Vector2i, + ] + var rotated_offsets := _rotate_river_bend_offsets( + offsets, + quarter_turns, + ) + result.append({ + "coordinate": bend_origin + rotated_offsets[0], + "id": canonical_spec["id"], + "turns": posmod( + int(canonical_spec["base_turns"]) + quarter_turns, + 4, + ), + }) + return result + + +func _river_sorted_pair( + pair: Array[Vector2i], + flow_direction: Vector2i, +) -> Array[Vector2i]: + var result: Array[Vector2i] = [] + result.assign(pair) + if result.size() != 2: + return result + var swap := false + if flow_direction.x != 0: + swap = ( + result[0].y > result[1].y + or ( + result[0].y == result[1].y + and result[0].x > result[1].x + ) + ) + else: + swap = ( + result[0].x > result[1].x + or ( + result[0].x == result[1].x + and result[0].y > result[1].y + ) + ) + if swap: + var first := result[0] + result[0] = result[1] + result[1] = first + return result + + func _river_source_coordinates( origin: Vector2i, footprint_size: Vector2i, flow_direction: Vector2i, ) -> Array[Vector2i]: + if ( + origin == _river_feature_origin + and footprint_size == _river_feature_footprint_size + and flow_direction == _river_feature_flow_direction + and not _river_feature_source_coordinates.is_empty() + ): + var authored_result: Array[Vector2i] = [] + authored_result.assign(_river_feature_source_coordinates) + return authored_result var northwest := origin var northeast := Vector2i( origin.x + footprint_size.x - 1, @@ -2192,27 +2698,31 @@ func _lake_feature_placement_specs() -> Array[Dictionary]: result.append({"coordinate": southwest, "id": lake_corner_chunk_id, "turns": 1}) result.append({"coordinate": southeast, "id": lake_corner_chunk_id, "turns": 2}) for row: int in range(northwest.y + 1, southwest.y): - result.append({ - "coordinate": Vector2i(northwest.x, row), - "id": lake_edge_chunk_id, - "turns": 0, - }) - result.append({ - "coordinate": Vector2i(northeast.x, row), - "id": lake_edge_chunk_id, - "turns": 2, - }) + _append_lake_perimeter_spec( + result, + Vector2i(northwest.x, row), + lake_edge_chunk_id, + 0, + ) + _append_lake_perimeter_spec( + result, + Vector2i(northeast.x, row), + lake_edge_chunk_id, + 2, + ) for column: int in range(northwest.x + 1, northeast.x): - result.append({ - "coordinate": Vector2i(column, northwest.y), - "id": lake_edge_chunk_id, - "turns": 3, - }) - result.append({ - "coordinate": Vector2i(column, southwest.y), - "id": lake_edge_chunk_id, - "turns": 1, - }) + _append_lake_perimeter_spec( + result, + Vector2i(column, northwest.y), + lake_edge_chunk_id, + 3, + ) + _append_lake_perimeter_spec( + result, + Vector2i(column, southwest.y), + lake_edge_chunk_id, + 1, + ) if _lake_feature_uses_fill: for row: int in range(northwest.y + 1, southwest.y): for column: int in range(northwest.x + 1, northeast.x): @@ -2242,26 +2752,30 @@ func _diagonal_lake_feature_placement_specs( for offset: int in top_side.size(): var top_spec: Dictionary = top_side[offset] var reverse_spec: Dictionary = top_side[top_side.size() - 1 - offset] - result.append({ - "coordinate": Vector2i(northwest.x + 1 + offset, northwest.y), - "id": top_spec["id"], - "turns": top_spec["turns"], - }) - result.append({ - "coordinate": Vector2i(southwest.x + 1 + offset, southwest.y), - "id": reverse_spec["id"], - "turns": posmod(int(reverse_spec["turns"]) + 2, 4), - }) - result.append({ - "coordinate": Vector2i(northwest.x, northwest.y + 1 + offset), - "id": reverse_spec["id"], - "turns": posmod(int(reverse_spec["turns"]) + 1, 4), - }) - result.append({ - "coordinate": Vector2i(northeast.x, northeast.y + 1 + offset), - "id": top_spec["id"], - "turns": posmod(int(top_spec["turns"]) + 3, 4), - }) + _append_lake_perimeter_spec( + result, + Vector2i(northwest.x + 1 + offset, northwest.y), + top_spec["id"] as StringName, + int(top_spec["turns"]), + ) + _append_lake_perimeter_spec( + result, + Vector2i(southwest.x + 1 + offset, southwest.y), + reverse_spec["id"] as StringName, + posmod(int(reverse_spec["turns"]) + 2, 4), + ) + _append_lake_perimeter_spec( + result, + Vector2i(northwest.x, northwest.y + 1 + offset), + reverse_spec["id"] as StringName, + posmod(int(reverse_spec["turns"]) + 1, 4), + ) + _append_lake_perimeter_spec( + result, + Vector2i(northeast.x, northeast.y + 1 + offset), + top_spec["id"] as StringName, + posmod(int(top_spec["turns"]) + 3, 4), + ) if _lake_feature_uses_fill: for row: int in range(northwest.y + 1, southwest.y): for column: int in range(northwest.x + 1, northeast.x): @@ -2273,6 +2787,23 @@ func _diagonal_lake_feature_placement_specs( return result +func _append_lake_perimeter_spec( + result: Array[Dictionary], + coordinate: Vector2i, + stable_id: StringName, + quarter_turns: int, +) -> void: + var selected_id := stable_id + if stable_id == lake_edge_chunk_id and lake_edge_variant_chunk_id != &"": + if posmod(int(generation_seed) + result.size(), 2) == 1: + selected_id = lake_edge_variant_chunk_id + result.append({ + "coordinate": coordinate, + "id": selected_id, + "turns": quarter_turns, + }) + + func _lake_top_side_specs(interior_count: int) -> Array[Dictionary]: var result: Array[Dictionary] = [] if interior_count < 3: @@ -2295,10 +2826,13 @@ func _apply_river_feature() -> bool: return true if ( _river_feature_origin.x < 0 - or mini( - _river_feature_footprint_size.x, - _river_feature_footprint_size.y, - ) != 2 + or _river_feature_placements.is_empty() + or _river_feature_flow_direction == Vector2i.ZERO + or _river_feature_outlet_direction == Vector2i.ZERO + or ( + _river_feature_flow_direction.x * _river_feature_outlet_direction.x + + _river_feature_flow_direction.y * _river_feature_outlet_direction.y + ) != 0 ): push_error("River feature has no reserved terrain region.") return false @@ -2325,149 +2859,7 @@ func _apply_river_feature() -> bool: func _river_feature_placement_specs() -> Array[Dictionary]: var result: Array[Dictionary] = [] - var northwest := _river_feature_origin - var northeast := Vector2i( - _river_feature_origin.x + _river_feature_footprint_size.x - 1, - _river_feature_origin.y, - ) - var southwest := Vector2i( - _river_feature_origin.x, - _river_feature_origin.y + _river_feature_footprint_size.y - 1, - ) - var southeast := ( - _river_feature_origin - + _river_feature_footprint_size - - Vector2i.ONE - ) - match _river_feature_flow_direction: - Vector2i.RIGHT: - result.assign([ - { - "coordinate": northwest, - "id": river_source_right_chunk_id, - "turns": 0, - }, - { - "coordinate": southwest, - "id": river_source_left_chunk_id, - "turns": 0, - }, - { - "coordinate": northeast, - "id": river_outlet_right_chunk_id, - "turns": 0, - }, - { - "coordinate": southeast, - "id": river_outlet_left_chunk_id, - "turns": 0, - }, - ]) - Vector2i.LEFT: - result.assign([ - { - "coordinate": northwest, - "id": river_outlet_left_chunk_id, - "turns": 2, - }, - { - "coordinate": southwest, - "id": river_outlet_right_chunk_id, - "turns": 2, - }, - { - "coordinate": northeast, - "id": river_source_left_chunk_id, - "turns": 2, - }, - { - "coordinate": southeast, - "id": river_source_right_chunk_id, - "turns": 2, - }, - ]) - Vector2i.DOWN: - result.assign([ - { - "coordinate": northwest, - "id": river_source_left_chunk_id, - "turns": 3, - }, - { - "coordinate": northeast, - "id": river_source_right_chunk_id, - "turns": 3, - }, - { - "coordinate": southwest, - "id": river_outlet_left_chunk_id, - "turns": 3, - }, - { - "coordinate": southeast, - "id": river_outlet_right_chunk_id, - "turns": 3, - }, - ]) - Vector2i.UP: - result.assign([ - { - "coordinate": northwest, - "id": river_outlet_right_chunk_id, - "turns": 1, - }, - { - "coordinate": northeast, - "id": river_outlet_left_chunk_id, - "turns": 1, - }, - { - "coordinate": southwest, - "id": river_source_right_chunk_id, - "turns": 1, - }, - { - "coordinate": southeast, - "id": river_source_left_chunk_id, - "turns": 1, - }, - ]) - _: - push_error("River feature has no cardinal flow direction.") - return [] - var river_random := RandomNumberGenerator.new() - river_random.seed = generation_seed ^ 0x4B1D63A7 - var phase := river_random.randi_range(0, 1) - var edge_ids: Array[StringName] = [ - river_edge_chunk_id, - river_edge_variant_chunk_id, - ] - if _river_feature_footprint_size.y == 2: - for offset: int in range(1, _river_feature_footprint_size.x - 1): - var edge_index := posmod(offset - 1 + phase, edge_ids.size()) - result.append({ - "coordinate": Vector2i(northwest.x + offset, northwest.y), - "id": edge_ids[edge_index], - "turns": 0, - }) - result.append({ - "coordinate": Vector2i(southwest.x + offset, southwest.y), - "id": edge_ids[posmod(edge_index + 1, edge_ids.size())], - "turns": 2, - }) - else: - for offset: int in range(1, _river_feature_footprint_size.y - 1): - var edge_index := posmod(offset - 1 + phase, edge_ids.size()) - result.append({ - "coordinate": Vector2i(northwest.x, northwest.y + offset), - "id": edge_ids[edge_index], - "turns": 1, - }) - result.append({ - "coordinate": Vector2i(northeast.x, northeast.y + offset), - "id": edge_ids[posmod(edge_index + 1, edge_ids.size())], - "turns": 3, - }) + result.assign(_river_feature_placements) return result @@ -2984,6 +3376,28 @@ func _calculate_edge_compatibility( second: TerrainChunkVariant, second_edge: TerrainChunkTopology.Edge, ) -> bool: + var first_inlet := _variant_edge_has_connector( + first, + first.definition.water_inlet_edges, + first_edge, + ) + var first_outlet := _variant_edge_has_connector( + first, + first.definition.water_outlet_edges, + first_edge, + ) + var second_inlet := _variant_edge_has_connector( + second, + second.definition.water_inlet_edges, + second_edge, + ) + var second_outlet := _variant_edge_has_connector( + second, + second.definition.water_outlet_edges, + second_edge, + ) + var first_has_water := first_inlet or first_outlet + var second_has_water := second_inlet or second_outlet var profile_tolerance := maxf( edge_match_tolerance, maxf( @@ -3012,30 +3426,26 @@ func _calculate_edge_compatibility( 0.0, profile_tolerance, ) + if ( + not profiles_match + and first_has_water + and second_has_water + and ( + _variant_edge_has_connector( + first, + first.definition.continuous_water_seam_edges, + first_edge, + ) + or _variant_edge_has_connector( + second, + second.definition.continuous_water_seam_edges, + second_edge, + ) + ) + ): + profiles_match = true if not profiles_match: return false - var first_inlet := _variant_edge_has_connector( - first, - first.definition.water_inlet_edges, - first_edge, - ) - var first_outlet := _variant_edge_has_connector( - first, - first.definition.water_outlet_edges, - first_edge, - ) - var second_inlet := _variant_edge_has_connector( - second, - second.definition.water_inlet_edges, - second_edge, - ) - var second_outlet := _variant_edge_has_connector( - second, - second.definition.water_outlet_edges, - second_edge, - ) - var first_has_water := first_inlet or first_outlet - var second_has_water := second_inlet or second_outlet if first_has_water or second_has_water: return ( (first_outlet and second_inlet) diff --git a/world/generation/terrain_chunk_variant.gd b/world/generation/terrain_chunk_variant.gd index f2f9e65..9c2770b 100644 --- a/world/generation/terrain_chunk_variant.gd +++ b/world/generation/terrain_chunk_variant.gd @@ -49,7 +49,7 @@ func topology_signature(quantization: float) -> String: func constraint_signature(quantization: float) -> String: return ( - "%s|neighbors:%s|surfaces:%s|ocean:%d|buried:%d|in:%d|out:%d" + "%s|neighbors:%s|surfaces:%s|ocean:%d|buried:%d|in:%d|out:%d|water_seam:%d" % [ topology_signature(quantization), _neighbor_rule_signature(), @@ -58,6 +58,7 @@ func constraint_signature(quantization: float) -> String: rotated_edge_mask(definition.buried_cliff_seam_edges), rotated_edge_mask(definition.water_inlet_edges), rotated_edge_mask(definition.water_outlet_edges), + rotated_edge_mask(definition.continuous_water_seam_edges), ] )