I want to make a tiled component that I can animate.

For my game I want to make a level floor component that is a set of tiles. I want to be able to change those tiles appearances individually.

I.e. one level will start on a checkboard (so, square tiles, black and white). Then I want to make different animations (i.e. make materials flash on some tiles).

What is the best way I can do this? I am currently hopping between C++ and Blueprints so language does not matter.

I have an actor with Instanced Static Mesh - but I do not see how to set materials on individual tiles. Is it supposed to be a single material for all the tiles?

You can do with BP, no problemo, but if they all have different materials, there’s no point in instancing them.

Generally speaking 1 ISMc = 1 material but:

  • you could leverage Custom Primitive Data to make each instance of the ISM look different. Example. The technique is very efficient but it has its limits. If the materials are fully procedural, the possibilities are almost limitless. But you cannot really dynamically feed instances texture samples, only raw float data.

  • you could have many ISMc - as many as there are materials. To “change the material”, you’d remove a mesh instance from one ISMc and add it to another ISMc. The material change would be automatic. You can absolutely combine it with the Custom Primitive Data. Think of it as of a Tile Manager actor that creates a bunch of (dynamic) materials, and handles many ISMc.

  • and finally, have a single ISMc. When an instance tile is interacted with, you remove that instance and replace it with a static mesh.

Thank you. Will try multiple instances static meshes first.