3d tile based game, flexible texturing?

With 2d tiles you may have numerous textures such as grass, dirt, mud, path, bricks, etc, and the corner tiles of each will be alpha. When using orthographic, pixel perfect rendering, you can then simply stack multiple tile layers and it will all look correct, very easy, very flexible.

In 3d however, and I’m looking at gridmap currently, I doubt you would create additional geometry to float textures over each other, but perhaps I’m wrong? I’m familiar with the concept of splatmaps, having worked with 3d once a long time ago. However those have rather severe limitations on the number of textures you could use.

My game concept will require these 3d tiles to be changed regularly, and naturally I’d rather not attempt to create every combination of every texture on the same repeated geometry.

Any advice / tips? Animal crossing would be a good technical analogue I think, I seem to recall there being a lot of ground textures you could freely place in that. The game’s camera will always be looking down, like an rpg or rts.


It really depends on many things that factor in your design. You can, for example, use multiple texture calls in a shader and combine those texels/colors however you want. That the most basic way to do decals. That’s how you’d do, for example, a logo on a t-shirt or a car, or how you’d combine a pattern with a base texture.
Then you can always have different geometry for different states of the same tile, like considering the surrounding tiles or other things that may affect it. This means you have different UV mapping, but that can be advantageous to show different parts of a texture on the extra faces or just transform it differently.
Of course, you can ALSO add another mesh layer on top to hold old-school splat decals. Uglier, but effective.
And then there’s more modern decal techniques that honestly I have no clue how they work, but involve projecting textures across spaces like in shadowmaps and that makes my brain fuzzy.
If you are intending to make dynamic meshes out of voxel data, I must warn you that there are more effective ways to fake that that will work in godot, where dynamic meshes make godot cry. It’s just not that kind of engine. The technical limitations that prevent the use of dynamic meshes for everything benefit immensely the majority of games that don’t need that.

Bottom line: you gotta design your game first, then figure out what to do with the textures, but it is doable.

I’m not planning on having any traversable height. Most of the terrain will literally just be squares (2 triangles). No dynamic meshes. The main thing is that the texture needs to be easily changed. A 3d “rimworld” would be a good analog actually, tiles might burn changing from a grass texture to a burnt grass, player might build a path, it might rain changing some tiles to mud, grass might grow over the dirt, player might cast an ice spell that freezes the water, etc.

then just wholesale change the node OR the texture(s) they point to
seems like you’re overcomplicating it by thinking in 3D when it’s just fancy 2D

GridMap is comprised of identical instances of the geometry in the library right? It doesn’t look like there’s any way to modify for example the UV’s or specific texture of an individual tile without changing all instances of that tile on the map correct?

The item parameter references a mesh in the MeshLibrary

This class holds a list of meshes.

If I understand you correctly, you might be able to achieve the desired effect by using world triplanar textures/materials? then these should blend over gridmap connections.