Ardyn Posted May 24 Share Posted May 24 I increased the number of waterlogs in a map by 30 times and allowed stacking to calculate the distribution pattern of waterlogs. Afterwards, I discovered a possible flaw in terrain generation. You can see that the water wood is mainly concentrated in these three linear red box areas, and in the dozens of maps I generated, the water wood is basically generated in this form as a linear area. This is because when the initial generation point of waterlog cannot meet the conditions for water wood generation, the water wood scene will search for the next judgment point in the positive direction of the x-axis. The initial generation point of water wood is random across the entire map, which means that when the initial generation point is randomly located on the mainland, the final generation position is often the seaside in the positive x-axis direction of the mainland. If the sea area in the positive x-axis direction does not have enough generating space, then water trees are more likely to generate on the map edge in the negative x-axis direction. (scripts/map/ocean_gen.lua: 766-813 function findLayoutPositions) local function findLayoutPositions(size, edge_dist, populating_tile, count, min_dist_from_land) local positions = {} edge_dist = edge_dist or 0 min_dist_from_land = min_dist_from_land or 0 local width, height = world:GetWorldSize() local adj_width, adj_height = width - 2 * edge_dist - size, height - 2 * edge_dist - size local start_x, start_y = math.random(0, adj_width), math.random(0, adj_height) local i, j = 0, 0 while j < adj_height and (count == nil or #positions < count) do local y = ((start_y + j) % adj_height) + edge_dist while i < adj_width and (count == nil or #positions < count) do -- check the corners first local x = ((start_x + i) % adj_width) + edge_dist local x2, y2 = x + size - 1, y + size - 1 if checkTile(x2 + min_dist_from_land, y - min_dist_from_land, populating_tile) and checkTile(x2 + min_dist_from_land, y2 + min_dist_from_land, populating_tile) then if checkTile(x - min_dist_from_land, y - min_dist_from_land, populating_tile) and checkTile(x - min_dist_from_land, y2 + min_dist_from_land, populating_tile) then --print("Found 4 corners", x, y, x2, y2) --check all tiles local ok, last_x, last_y = checkAllTiles(populating_tile, x - min_dist_from_land, y - min_dist_from_land, x2 + min_dist_from_land, y2 + min_dist_from_land) if ok == true then --bottom-left --print(string.format("Location found (%4.2f, %4.2f)", x, y)) --local adj = 0.5 * (size - actualsize) --return {x + adj, y2 - adj} --{0.5 * (x + x2), 0.5 * (y + y2)} --table.insert(positions, {x = x + adj, y = y2 - adj}) table.insert(positions, {x = x, y = y, x2 = x2, y2 = y2, size = size}) i = i + size + 1 else --print(string.format("Failed at (%4.2f, %4.2f) skip, (%4.2f, %4.2f)", last_x, last_y, x, y)) last_x = math.clamp(last_x, x, x2) i = i + last_x - x + 1 end else i = i + 1 end else --print(string.format("Failed on x2, skip (%4.2f, %4.2f)", x, y)) i = i + size + 1 end end j = j + 1 i = 0 end return positions end This code is used to generate water logs and salt mines. I guess the purpose of writing this is to allow most of the waterlogs and salt mines to be generated closer to the mainland, but the final result is that the number of water logs and salt mines in the positive x-axis direction is much higher than in other directions of the sea. My suggestion is to randomize the x-direction and y-direction of this algorithm, so that the number of waterlog and salt mines in the water distributed in the four directions of the sea area will be relatively average and reasonable. This post was generated using translation software, and any issues can be pointed out. Thank you for your patient reading! Link to comment Share on other sites More sharing options...
DaZoul Posted May 24 Share Posted May 24 oh no Link to comment Share on other sites More sharing options...
YouKnowWho Posted May 24 Share Posted May 24 It took me a couple of reads (I’m clueless when it comes to code) but I think I understand. So the biomes aren’t evenly distributed across the map? That could explain why one side of the ocean always feels especially bare. I’d be very interested in seeing how world generation would change were this tweaked. Link to comment Share on other sites More sharing options...
Ardyn Posted May 24 Author Share Posted May 24 9 hours ago, YouKnowWho said: So the biomes aren’t evenly distributed across the map? That could explain why one side of the ocean always feels especially bare. I’d be very interested in seeing how world generation would change were this tweaked. Yes, that's the reason. This resulted in most of the waterlog and salt mines being generated not far from the shore, but also made the sea on one side bare. Link to comment Share on other sites More sharing options...
_zwb Posted May 25 Share Posted May 25 Ah, that's why the ocean is so empty... it's really hard to tell whether something is intended or a bug until you start checking the scripts... Link to comment Share on other sites More sharing options...
ALCRD Posted May 25 Share Posted May 25 On side note i rolled loopy "Atoll" shaped worlds so many times and never got Waterlogged or Lunar Island in the middle like i seen on some screenshots.. The middle ocean is always empty. Link to comment Share on other sites More sharing options...
ShadowDuelist Posted May 25 Share Posted May 25 Take this from someone who doesn't understand code, but could it be that they coded it this way so it doesn't collide with something else? Link to comment Share on other sites More sharing options...
Dextops Posted May 25 Share Posted May 25 28 minutes ago, ShadowDuelist said: Take this from someone who doesn't understand code, but could it be that they coded it this way so it doesn't collide with something else? i mean not like there's much in the ocean to collide with... Link to comment Share on other sites More sharing options...
Shosuko Posted May 25 Share Posted May 25 tbh I see this as less of a bug, more of a feature. Kinda like how you can locate lunar island from the main land generation being "cut off" to fit the biome, this can probably help me locate these resources more easily. I'd just need to note map orientation before exploring. Link to comment Share on other sites More sharing options...
1moregame Posted May 25 Share Posted May 25 10 minutes ago, Shosuko said: I'd just need to note map orientation before exploring. 22 hours ago, Ardyn said: in the positive x-axis direction is much higher than in other directions of the sea. So what side of the map does this prefer? Link to comment Share on other sites More sharing options...
Ardyn Posted May 25 Author Share Posted May 25 1 hour ago, Shosuko said: tbh I see this as less of a bug, more of a feature. Kinda like how you can locate lunar island from the main land generation being "cut off" to fit the biome, this can probably help me locate these resources more easily. I'd just need to note map orientation before exploring. Considering that this highly influential mechanism has existed in the game for at least 3 years before being discovered, I am skeptical about it Link to comment Share on other sites More sharing options...
Copyafriend Posted May 27 Share Posted May 27 On 5/25/2023 at 11:14 AM, Shosuko said: Kinda like how you can locate lunar island from the main land generation being "cut off" to fit the biome This isnt a bug so much as a “make sure the land masses dont touch” check. But it definitely wasn’t introduced so we could find the lunar island. Im pretty sure at least Link to comment Share on other sites More sharing options...
Theukon-dos Posted May 27 Share Posted May 27 2 hours ago, Copyafriend said: This isnt a bug so much as a “make sure the land masses dont touch” check. But it definitely wasn’t introduced so we could find the lunar island. Im pretty sure at least I'd agree with you, but given how Klei also made it so that there can be only shallow waters between the mainland and lunar, it might very well have been intentional for such a purpose. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.
Please be aware that the content of this thread may be outdated and no longer applicable.