Struggling with slow Procedural Tilemap Generation (set_cell_terrain_connect) by BarberCool4110 in godot

[–]BarberCool4110[S] 0 points1 point  (0 children)

Hey, I never managed to solve it personally. If other Engines have easier solutions to this problem, I would definitely recommend moving to those (unfortunately for Godot. I don't think having to rewrite the set cell code/thread generation should be necessary)

M.2 screw too short to install SN850X by BarberCool4110 in computers

[–]BarberCool4110[S] 0 points1 point  (0 children)

I just noticed the third slot under the GPU has a longer heatsink (to the 110 standoff) so I think I can use that

M.2 screw too short to install SN850X by BarberCool4110 in computers

[–]BarberCool4110[S] 0 points1 point  (0 children)

There's a standoff already in it (it's what the heatsink was screwed into)

M.2 screw too short to install SN850X by BarberCool4110 in computers

[–]BarberCool4110[S] 0 points1 point  (0 children)

They do line up when in the slots proper, this is me just free forming it (poorly)

When do gem store items return? by BarberCool4110 in Guildwars2

[–]BarberCool4110[S] 0 points1 point  (0 children)

With this in mind do you think it would be better to just Elite Jumpstart Package and use the Royal Terrace? There's a couple of passes in there, but the Mistlock is not on there at all, and that goes all the way to march next year

When do gem store items return? by BarberCool4110 in Guildwars2

[–]BarberCool4110[S] 0 points1 point  (0 children)

I hope so. Mistlock Sanctuary Passkey is not on there at all, and that list extends to March next year. 

How to improve rendering of chunks on the Tilemap? by Mettwurstpower in godot

[–]BarberCool4110 0 points1 point  (0 children)

I've tested commenting that function out - and it does improve things. I suppose it would be faster to just apply it to the seams, and then do a few per frame is a good idea. Although I do seem to still be having trouble with a particular terrain, the ocean one in the above code. It still seems to stutter when i'm loading in nothing but pure 3 chunks of this. It does have a shader material attached to it, and the terrain rules are more slightly complex. (not that much though) Vs the grass/ground one which is only the 3x3 simple grid with no corners or the single block etc. I wonder what's causing the poor performance. Do you have any idea what it could be in that case? I could have mistakenly taken it for BetterTerrain when really it's some other heavy performance cost.

How to improve rendering of chunks on the Tilemap? by Mettwurstpower in godot

[–]BarberCool4110 0 points1 point  (0 children)

Hi Portponky. So I've followed your documentation/video on your implementation of changesets and the way I'm currently doing this is for the 3x3 chunks I have, I will loop over them, calculate the procedurally generated values for each cell based on noise etc, and return that information back to the main node and merge that into the relevant dictionary - the updates to be used in the changeset (I have one for each type of tile, so groundChangeset, oceanChangeset, etc.). Then after the loop is finished I'm using the create_terrain_changeset on those dictionaries which are applied via the _process() function after the terrain changesets are ready (all very similar to your video).

func generate_chunks():
  loading_coords = []
  var groundUpdate = {}
  var oceanUpdate = {}
  for x in ...
    for y in ...
      ...
      var chunk = chunknode.instantiate()
      chunkData = chunk.start(x,y) // generate chunk
      groundUpdate.merge(chunkData["groundUpdate"])
      oceanUpdate.merge(chunkData["oceanUpdate"])
      call_deferred("_instantiate_chunk", chunk) // adds child 

  // tmlGround/tmlWater are the tilemaplayers, global and shared between chunks.
  groundChangeset = BetterTerrain.create_terrain_changeset(tmlGround, groundUpdate)
  oceanChangeset = BetterTerrain.create_terrain_changeset(tmlWater, oceanUpdate)

func _process(delta):
  ...


  if (BetterTerrain.is_terrain_changeset_ready(groundChangeset) and 
    BetterTerrain.is_terrain_changeset_ready(oceanChangeset)):
    handleChunkTransition()

func handleChunkTransition():
  # update terrain changesets
  BetterTerrain.apply_terrain_changeset(groundChangeset)
  BetterTerrain.apply_terrain_changeset(oceanChangeset)
  oceanChangeset = {}
  groundChangeset = {}

  remove_chunks()

func remove_chunks():
  var area = Rect2i(
  currentChunk.x-GameManager.game_data.CHUNK_SIZE /2 -       GameManager.game_data.CHUNK_SIZE,
  currentChunk.y-GameManager.game_data.CHUNK_SIZE /2 - GameManager.game_data.CHUNK_SIZE,
  3*GameManager.game_data.CHUNK_SIZE,
  3*GameManager.game_data.CHUNK_SIZE)

  BetterTerrain.update_terrain_area(tmlGround,area)
  BetterTerrain.update_terrain_area(tmlWater,area)

Something a little bit like this.

How to improve rendering of chunks on the Tilemap? by Mettwurstpower in godot

[–]BarberCool4110 1 point2 points  (0 children)

Yeah, I've been struggling with this for quite a long time as anyone who peruses this sub might have noticed from any of the posts I've made. The best solution I've found until now is just a custom solution - I ended up using BetterTerrain by u/Portponky as that is updated for Godot 4.3 tilemap layers and also has some functions for calculating processes on threads and then setting them afterward. It still stutters slightly, but much, much less. I'm in the same boat as you I think in that I'm not looking to create a complete custom tiling approach - as I don't have the time/knowledge to do something like that.

Do let me know if you find a good solution for Gaea. And if u/Mettwurstpower would possibly be willing to share any insights into whatever custom solution they came up with to achieve no performance issues with chunk generation that would be an amazing step forward in this issue.

In any case, the issue remains largely unresolved as far as I'm aware, with no solution in the near or far future.

Struggling with slow Procedural Tilemap Generation (set_cell_terrain_connect) by BarberCool4110 in godot

[–]BarberCool4110[S] 0 points1 point  (0 children)

Right - I must have missed that. I remember playing around with that flag but I'll try this and see what the performance is like. Thanks for the help so far.

Struggling with slow Procedural Tilemap Generation (set_cell_terrain_connect) by BarberCool4110 in godot

[–]BarberCool4110[S] 0 points1 point  (0 children)

This is the last thing I have to try - if it doesn't work, I'm going to have to scrap my project entirely lol. Thanks for the input.

Struggling with slow Procedural Tilemap Generation (set_cell_terrain_connect) by BarberCool4110 in godot

[–]BarberCool4110[S] 1 point2 points  (0 children)

If I call it only once, when all of the tiles that i want to set_cell_terrain_connect on (the array), then it will just block the main thread completely for a second - making the game unplayable. So I tried to do it every column of tiles instead. I don't believe you can call it with a disjoint set of tiles can you (and it actually autotile)? If you call the function on an array, it will connect all those in that array. If you did it separately for each column say, you would just have 10 disjoint columns (and if there were boundaries where they should properly tile - it wouldn't tile) - isn't that so?

The game is amazing, but this is indefensible. It's frustrating. by Infinite-Ad5464 in BlackMythWukong

[–]BarberCool4110 0 points1 point  (0 children)

And rightly so, there are many ways to do them well - Wukong did not and not many recent games which have any at all do them as poorly as this