I’m new to Godot and I’d like to make a game with 2d isometric graphics. There are lots of tutorials on using tilesets, but every one I’ve seen so far uses one image per one tile (even if they’re put together in one large spritesheet) like so:

This is problematic if I want to have lots of variation in my base shape, like different egdes and corners and so on. What I’d like to achieve is to have to draw just parts of the blocks and put them together to form a tile in the editor, like so:

This way I only need to modify the specific sub-tiles if i want to change, for example, the look of grass on top, and it will propagate to all tiles with grass on top. I know about tile patterns in Godot, but they seem to be something else. I want to take the triangular patches from my spritesheet and compose the tiles out of them. Is it possible in Godot?

  • aes@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    6 天前

    Well, you can do the composition on the fly, by having the different sides of the diagonal on different tilemap layers, that’d make things easier, right?

    Check my thinking here, but you’ll get a checkerboard pattern alternating diagonals, right? Then, I’d suggest

    • two layers, ‘far’ and ‘near’, for the tile-halves
    • a parent ‘control’ tilemap layer, with ugly editing tiles offset half a tile, (so it gives you a way to draw using the materials you care about) and code to render that into the fragment layers.

    It’s how this works: https://github.com/aes/autotile3d and it would work.

    But then, there’s this, I guess: https://youtu.be/dclc8w6JW7Y

  • aes@programming.dev
    link
    fedilink
    arrow-up
    4
    ·
    9 天前

    First thought: Wow, that looks just like how Syndicate works.

    Second: that’s a terrible idea. (at least in 2025)

    There’s a tutorial (this one, I think https://youtu.be/i_XV78N7Zuo) on how to make a tool to compose your tiles.

    If you want to make a tile-space renderer, that’s harder, but having done it, I can probably talk you through it. You need to look through tile-space diagonally to make in-front/behind work correctly. The way I’d do it today would probably be to ‘shoot rays’ from the view direction, into the tile-space, and record the first, or however many tile fragments necessary to completely obscure the view. Then, just* render from that look-up-table. (there’s a fruity view(x, y) to tile(x, y, z) transform, and you still need to render transient objects at the correct depth. Also, scrolling/panning, do you only do that by tile, or do you also do sub-tile-fragment pan?)

    If you can get away with just stacking some tilemaps, do that instead, but ask if you need more.

    • blamster19@programming.devOP
      link
      fedilink
      arrow-up
      1
      ·
      8 天前

      Thank you. I thought that maybe there is some more ‘official’ way of such tile composition, but if not, then I will settle for some clever tile design to maximize reusability, at least for now. I don’t want to overcomplicate things just yet.